Jump to content

    

STM32 – вопросы – проблемы - решения.

Привет всем, столкнулся с такой проблемой в STM32F100RB, проблема решена на данный момент, но думаю будет полезно осваивающим. В проекте используются 3 канала АЦП, проводится преобразование входных сигналов с максимальной частотой - 1.2мкс по очереди и данные передаются через DMA в память, далее обработка и тому подобное, пользую IAR EW. Создал проект, в режиме дебага все отлаживается, проверил работоспособность программы, завершаю дебаг, далее вношу еще изменения в проект, пытаюсь снова войти в режим отладки и все... IAR ругается что невозможно соединиться с платой, первоначавльно думал что проц сгорел. Хотя фирмаваре внутри камня крутится и нормально работает! Зашил эту же программу в STM32VLDiscovery и ситуация полностью повторилась. Долго чесал затылок, в итоге попробовал приконнектиться к плате с помощью софтины ST-Link Utility и на тебе, микроконтроллер виден! Очистил прошивку, передернул питание, далее снова в IAR EW, проблема исчезает, но стоит 1 раз прошить и ситуация повторяется с точностью. Вдоль и поперек занимался любовью с DMA и АЦП, не помогло, но выяснил, что перед тем как нажать кнопку дебага или перепрошивки в софтине, необходимо нажать кнопку ресета на плате и вуалля, шьется как ни в чем не бывало! Далее собрал проект под uVision, там такая проблема не повторилась. Соответственно все подозрения пали на IAR EW. В итоге воспользовался техподдержкой ST, ребята 2 дня думали и написали ответ, что это косяк IAR EW. В кратце, при прошивке IAR EW сбрасывает только ядро, далее грузится в ОЗУ алгоритм загрузки кода flash, но в это время DMA передает данные с каналов АЦП в память, соответственно происходит конфликт и микроконтроллер зависает. В итоге они мне прислали исправленный файл ххх.mac, который необходимо скормить IAR EW по адресу по пути - вашадиректория\Embedded Workbench 6.0\arm\config\flashloader\ST\. Так и сделал, проблема исчезла. В общем, теперь остановка DMA происходит, файл прикрепил, необходимо его распаковать.

P.S. Всем удачи в нашем нелегком труде! В следующем релизе IAR обещали исправить эту проблему:-)

FlashSTM32F10xxx.zip

Share this post


Link to post
Share on other sites

Вернувшись к проекту через год неожиданно наткнулся на проблему с драйвером STM Virtual COM Port. С тех пор OS рабочем компе сменилась с XP на Win7. Использовал демонстрационный проект Virtual_COM_Port из STM32_USB-FS-Device_Lib_V3.1.0.

Проблема в следующем: при подключении прибора к USB порту устройство STMicroelectronics Virtual COM Port появляется, но не может запуститься: Запуск этого устройства невозможен. (Код 10). Отчасти проблема решается установкой буфера приема = 64 байта (VIRTUAL_COM_PORT_DATA_SIZE), но работа порта неустойчива, прием идет со сбоями

Пробовал VCPDriver: v1.1, v1.2, v1.3

 

На XP все работало без глюков, с любым размером буфера

Share this post


Link to post
Share on other sites
Пробовал VCPDriver: v1.1, v1.2, v1.3

Интересно, чем они отличаются. Учитывая, что это и не драйвер по сути, просто inf файл. Драйвер родной виндовый usbser, который в разных версиях винды может отличаться.

Глянуть бы каким-нибудь usblyzer-ом что там происходит.

 

 

 

 

 

Share this post


Link to post
Share on other sites

Привет спецы, интересует STM32F2XX: интерфейс подключения камеры. Планирую заложить в новый проект. Кто нить использовал уже опытные образцы?

Share this post


Link to post
Share on other sites

Не пойму, нужно ли выводить ресет на разьем SWD? Или достаточно SWCLK и SWDIO ?

Share this post


Link to post
Share on other sites
Не пойму, нужно ли выводить ресет на разьем SWD? Или достаточно SWCLK и SWDIO ?

Достаточно, на мелких платах только их и использую.

Share this post


Link to post
Share on other sites
Достаточно, на мелких платах только их и использую.

Спасибо. А на крупных платах как поступаете? Разводите JTAG?

Share this post


Link to post
Share on other sites

Тоже вывожу только SWCLK и SWDIO. Выводить JTAG смысла не вижу: разве JTAG даёт какое-нибудь преимущество над SWD при отладке?

Share this post


Link to post
Share on other sites
Тоже вывожу только SWCLK и SWDIO. Выводить JTAG смысла не вижу: разве JTAG даёт какое-нибудь преимущество над SWD при отладке?

Вроде скорость заливки во FLASH выше.

Я правильно понимаю, что в любой момент времени, если на пинах SWCLK и SWDIO появится определённая последовательность данных, проц перейдёт в режим отладки? Получается потенциально опасная ситуация

Share this post


Link to post
Share on other sites
Я правильно понимаю, что в любой момент времени, если на пинах SWCLK и SWDIO появится определённая последовательность данных, проц перейдёт в режим отладки? Получается потенциально опасная ситуация

Вот что сказано в руководстве по STM32:

If the debugger host wants to switch to the SW-DP, it must provide a dedicated JTAG

sequence on TMS/TCK (respectively mapped to SWDIO and SWCLK) which disables the

JTAG-DP and enables the SW-DP. This way it is possible to activate the SWDP using only

the SWCLK and SWDIO pins.

This sequence is:

1. Send more than 50 TCK cycles with TMS (SWDIO) =1

2. Send the 16-bit sequence on TMS (SWDIO) = 0111100111100111 (MSB transmitted first)

3. Send more than 50 TCK cycles with TMS (SWDIO) =1

Я так понимаю, этот танец с бубном сделан таким для того, чтобы он никак не мог произойти при нормальном использовании JTAG. Поэтому можно спать спокойно.

Share this post


Link to post
Share on other sites
если на пинах SWCLK и SWDIO появится определённая последовательность данных, проц перейдёт в режим отладки? Получается потенциально опасная ситуация

Не проц перейдет в режим отладки, а JTAG переключится в режим SWD.

Резет теоретически может пригодиться на случай, если прошивка переводит мк в режим, когда отладчик не может подключиться.

Но я бы на этот случай подключал boot0 на землю через резистор, чтобы в крайнем случае можно было запустить бутлоадер и потом отладчик.

 

Share this post


Link to post
Share on other sites

привет всем! Хочу использовать одновременно IWDG и STOP режим. Как-то это можно обыграть? Я так понимаю, если я войду в спячку, то вачдог сбросит МК.

Edited by Ivan Kuznetzov

Share this post


Link to post
Share on other sites

Ivan Kuznetzov Дауж врятли, скорее всего вместе с контроллером уснёт и вачдог.

У Renesas_a такое есть.

Edited by Murk

Share this post


Link to post
Share on other sites

Проверил: если проц перевести в STOP при включенном IWDG, то последний сбросит МК. Т.е. надо вачдог как-то обновлять во время спячки

Share this post


Link to post
Share on other sites

Кто-нибудь пробовал применить встроенный CEC интерфейс для чего-нибудь полезного? Например, в качестве дополнительного UART или I-wire (если это вообще возможно) ?

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.