Flexz 0 10 июля, 2011 Опубликовано 10 июля, 2011 · Жалоба DfuSe на 217 не испытывал, нужды не было пока. Но во-первых у f2xx и f105/f107 одинаковый модуль USB OTG FS (сам использую библиотеки от connectivity line для F217) а во-вторых описание DFU общее на всех. Так что не вижу препятствий. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wedmeed 0 14 июля, 2011 Опубликовано 14 июля, 2011 (изменено) · Жалоба Какие еще программы существуют для прошивки стандартным бутлоадером кроме Flash Loader Demonstrator? Им прошить не получается - говорит то устройства нет, то что не попал в секцию первичного загрузчика, то команда неизвестная. На разные комбинации бута0 и ресета реагирует по-разному (т.е. контроллер живой), повторяемость 100%. В идеале хотелось бы посмотреть логи попыток прошивки (может быть вариант в непропае ножек). МК - stm32f100 Может кто из старших видео снимал когда-либо. или схемками может поделиться - буду очень признателен!!! Вот моя схемка. На ней перепутаны rx и tx между переходником и контроллером. но на практике собрал правильно. ___.bmp Изменено 15 июля, 2011 пользователем wedmeed Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Danis 0 15 июля, 2011 Опубликовано 15 июля, 2011 · Жалоба Какие еще программы существуют для прошивки стандартным бутлоадером кроме Flash Loader Demonstrator? Думаю, другая программа Вам не поможет, проблема явно не в ней. Советую осциллографом поработать и посмотреть, что там у Вас на линиях твориться, проверьте уровни, фронты обязательно. Если я правильно понял, MCP2200 у вас в качестве виртуального COM порта, если через него данные пытаетесь зашить, как раз он может быть источником проблемы. А схему лучше в jpg выкладывать. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
alekseyb 0 17 июля, 2011 Опубликовано 17 июля, 2011 · Жалоба Какие еще программы существуют для прошивки стандартным бутлоадером кроме Flash Loader Demonstrator? Им прошить не получается - говорит то устройства нет, то что не попал в секцию первичного загрузчика, то команда неизвестная. На разные комбинации бута0 и ресета реагирует по-разному (т.е. контроллер живой), повторяемость 100%. В идеале хотелось бы посмотреть логи попыток прошивки (может быть вариант в непропае ножек). МК - stm32f100 Может кто из старших видео снимал когда-либо. или схемками может поделиться - буду очень признателен!!! Вот моя схемка. На ней перепутаны rx и tx между переходником и контроллером. но на практике собрал правильно. ___.bmp RX МК нужно подтянуть к +3В через сопротивление примерно 10к, должно заработать. И еще там есть исходники Flash Loader Demonstrator для работы с bootloader ,можно самому дописать что надо. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wedmeed 0 18 июля, 2011 Опубликовано 18 июля, 2011 · Жалоба На выходных набрел на статью в эйзиэлектроникс про прошивку как раз моего чипа. Их рекомендации не помогли, но там была ссылка на програмку termit. Попробовал с помощью неё поговорить с контроллером - отвечает, причем на описанные в даташите комбинации - нормально. Про версию чипа прислал мне 0x1F1F. На комбинации, не описанные в даташите стабильно отвечает 0xFB, причем отвечает столько байт, сколько байт я ему и послал. RX МК нужно подтянуть к +3В через сопротивление примерно 10к, должно заработать. Спасибо, попробую. И еще там есть исходники Flash Loader Demonstrator для работы с bootloader ,можно самому дописать что надо. Насколько я понял - в исходниках только графическая оболочка, все остальное - в dll. Сам не смотрел, прочитал где-то на форумах. На досуге покопаюсь. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StAlexy 0 18 июля, 2011 Опубликовано 18 июля, 2011 · Жалоба Товарищи, здорова! Кто-нибудь работал на стм32ф107? Затык с прерываниями!! Не могу настроить прерывания от SPI и UART. Ну SPI ладно, выкрутился без прерываний, на уарт никак!! Главное от таймера2 работает прерывание по обнулению! Проблема: инициализирую клок для проца и всего остального: RCC_HSEConfig(RCC_HSE_ON); RCC_WaitForHSEStartUp(); RCC_HCLKConfig(RCC_SYSCLK_Div1); RCC_PLLConfig(RCC_PREDIV1_Source_HSE,RCC_PLLMul_4); RCC_PCLK1Config(RCC_HCLK_Div1); RCC_PCLK2Config(RCC_HCLK_Div1); RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); RCC_PLLCmd(ENABLE); //ïîäàåì òàêòîâûé ñèãíàë íà ïîðòû //RCC_AHBPeriphClockCmd ( ); RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); SystemInit(); Далее инициализация USART2: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin =GPIO_Pin_2; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Pin =GPIO_Pin_3; GPIO_Init(GPIOA, &GPIO_InitStructure); NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_Even; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART2, &USART_InitStructure); USART_ClearFlag(USART2,USART_FLAG_TC); USART_ClearITPendingBit(USART2,USART_IT_TC); USART_ITConfig(USART2, USART_IT_TC, ENABLE); USART_Cmd(USART2, ENABLE); ...и все. Здесь уже висит. В программу прерывания не заходит: void USART2_IRQHandler(void) { if(USART_GetITStatus(USART2,USART_IT_RXNE)==SET) { USART_ClearFlag(USART2,USART_FLAG_RXNE); USART_ClearITPendingBit(USART2,USART_IT_RXNE); } if(USART_GetITStatus(USART2,USART_IT_TC)==SET) { if (GPIO_ReadOutputDataBit(GPIOC,GPIO_Pin_8) == 1) GPIO_ResetBits(GPIOC,GPIO_Pin_8); else GPIO_SetBits(GPIOC,GPIO_Pin_8); USART_ClearFlag(USART2,USART_FLAG_TC); USART_ClearITPendingBit(USART2,USART_IT_TC); } } Может чо-то где забыл поставить в заголовочных файлах? Подскажите, если кто через такое проходил? Главное, на 103-м такое прерывание работает!! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
wedmeed 0 18 июля, 2011 Опубликовано 18 июля, 2011 · Жалоба Во! Только что на работе нашел осциллограф и нормальную програмку для UARTа. Пообщаться с бутлоадером получилось, но вот в чем беда: для того, чтобы бутлоадер в МК понял команду, помимо идентификатора команды ему надо послать ее инверсию следующим байтом (01 - FE). Если посылать байты поочередно - все гуд. Если послать байты сразу - на первую попытку молчит, на вторую выдает ошибку. Получается он не успевает впоймать второй байт. Попробовал ставить 2 стоповых бита - не видит второй байт. Попробовал вставить между этими двумя байтами 0xFF - заработало! Картина стала такова: МК ловит первый байт, стартового бита второго байта не видит, дальше идут 1, которые МК воспринимает как молчание на линии, дальше ловит третий байт, считая его вторым. Вопрос - почему МК не воспринимает нормально следующие сразу друг за другом байты? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Galizin 0 18 июля, 2011 Опубликовано 18 июля, 2011 (изменено) · Жалоба На выходных набрел на статью в эйзиэлектроникс про прошивку как раз моего чипа. Про версию чипа прислал мне 0x1F1F. Вот эти два предложения противоречат друг другу. С одной стороны чип тот же, с другой - другой идентификатор. 1F1F выглядит странно. Попробуйте уменьшить скорость порта. Изменено 18 июля, 2011 пользователем Oleg Galizin Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Twen 0 18 июля, 2011 Опубликовано 18 июля, 2011 (изменено) · Жалоба Добрый день. У меня возникла следующая проблема, есть 2 программатора : внешний ST-LINK(рис.1) и универсальный J-link(рис.2) под ядра ARM. St-Link-ом не получается прошить микроконтроллер stm32L152, а j-Link-ом шьется без проблем...при чем когда шью ST-link-ом, загрузка как бы начинается, но потом все виснет... Может кто-нибудь сталкивался с этой проблемой... Спасибо. Изменено 18 июля, 2011 пользователем Twen Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StAlexy 0 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба Все, нормально, починилось! :08: Действительно, как писал кто-то выше, надо просто выспаться! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Aaron 1 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба Все, нормально, починилось! :08: Вы бы поделились, в чём косяк был. А то такие куски кода выложили... Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Alhen 0 19 июля, 2011 Опубликовано 19 июля, 2011 · Жалоба У меня проблема с компиляцией простейшей тестовой программки для STM32 Discovery под IAR-ом V6.2. Код нормально компилился под 5.5, но после установки 6.2 ругается: Error[Pe337]: linkage specification is incompatible with previous «__WFI»……и т.д. Эта ошибка появляется для проекта С++, под С ошибки другого характера. Помогите побороть пожалуйста! (может это как-то связано с CMSIS?) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
A. Fig Lee 0 20 июля, 2011 Опубликовано 20 июля, 2011 · Жалоба Во! Только что на работе нашел осциллограф и нормальную програмку для UARTа. Пообщаться с бутлоадером получилось, но вот в чем беда: для того, чтобы бутлоадер в МК понял команду, помимо идентификатора команды ему надо послать ее инверсию следующим байтом (01 - FE). Если посылать байты поочередно - все гуд. Если послать байты сразу - на первую попытку молчит, на вторую выдает ошибку. Получается он не успевает впоймать второй байт. Попробовал ставить 2 стоповых бита - не видит второй байт. Попробовал вставить между этими двумя байтами 0xFF - заработало! Картина стала такова: МК ловит первый байт, стартового бита второго байта не видит, дальше идут 1, которые МК воспринимает как молчание на линии, дальше ловит третий байт, считая его вторым. Вопрос - почему МК не воспринимает нормально следующие сразу друг за другом байты? parity какой? должен быть even, наскоко помню Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
StAlexy 0 20 июля, 2011 Опубликовано 20 июля, 2011 · Жалоба Вы бы поделились, в чём косяк был. А то такие куски кода выложили... Решение оказалось очень простым: 1. Инициализацию не трогал. 2. Удалил из проекта stm32f10x_it.h и stm32f10x_it.c И все заработало. Видимо "процессор" обращался в эти файлы за подпрограммой обработки прерывания и не находил ее. Следовательно, зависание. Без них все работает просто отлично! Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flexz 0 20 июля, 2011 Опубликовано 20 июля, 2011 · Жалоба Ну тогда уж наоборот - обращался и находил, но не ту которую вы ожидали (ваша обработка прерываний, видимо, в другом файле, так?). Сдается мне, что кто-то игнорирует ворнинги :) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться