Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: STM32 проблема: запись в EEPROM и USB
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Паф
Добрый день!

МК STM32L152, IAR6.5
Работаю с EEPROM вроде бы правильно: функция записи в EEPROM, таблица векторов прерываний и обработчик критического прерывания в RAM(ну и вызываемые функции соответственно тоже). Перед записью в EEPROM запрещаю прерывания кроме критического. Работает без проблем. Осциллографом контролирую работу критического прерывания.
Затем подключаю STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver Virtual COM port. Вижу, что программа залипает на время доступа к EEPROM(критическое прерывание не вызывается). USB прерывания запрещаю перед записью в EEPROM - проверил. Никакой передачи данных по VCP со стороны хоста и МК не делаю. Т.е. кто-то пытается доступиться до FLASH, если я правильно понимаю.
Кто-нибудь сталкивался с подобным поведением или что-то я делаю не так? Спасибо.
Паф
Была проблема с запрещением Suspend/Resume.
Я неправильно запрещал Suspend в usb_pwr.с:
Код
__IO bool fSuspendEnabled = FALSE;  /* true when suspend is possible */


Правильно делать так:
Код
STM32_USB-FS-Device_Lib_V4.0.0/Projects/Virtual_COM_Port/inc/usb_conf.h

/* IMR_MSK */
/* mask defining which events has to be handled */
/* by the device application software */
// #define IMR_MSK (CNTR_CTRM  | CNTR_WKUPM | CNTR_SUSPM | CNTR_ERRM  | CNTR_SOFM \
//                | CNTR_ESOFM | CNTR_RESETM )

// Disable Suspend/Resume response completely
#define IMR_MSK (CNTR_CTRM  | CNTR_WKUPM | CNTR_ERRM  | CNTR_SOFM | CNTR_RESETM )


Работать стало как задумано. Осталось понять взаимосвязь..
igorle
Спасибо. Информация мне очень помогла. А откуда пришла идея менять IMR_MSK?
rat
Цитата(Паф @ Jun 4 2013, 19:28) *
Добрый день!

МК STM32L152, IAR6.5
Работаю с EEPROM вроде бы правильно: функция записи в EEPROM, таблица векторов прерываний и обработчик критического прерывания в RAM(ну и вызываемые функции соответственно тоже). Перед записью в EEPROM запрещаю прерывания кроме критического. Работает без проблем. Осциллографом контролирую работу критического прерывания.
Затем подключаю STM32F10x, STM32L1xx and STM32F3xx USB-FS-Device Driver Virtual COM port. Вижу, что программа залипает на время доступа к EEPROM(критическое прерывание не вызывается). USB прерывания запрещаю перед записью в EEPROM - проверил. Никакой передачи данных по VCP со стороны хоста и МК не делаю. Т.е. кто-то пытается доступиться до FLASH, если я правильно понимаю.
Кто-нибудь сталкивался с подобным поведением или что-то я делаю не так? Спасибо.


Не подскажете работающий пример для STM32 USB?
Паф
Цитата(igorle @ Nov 1 2013, 00:04) *
Спасибо. Информация мне очень помогла. А откуда пришла идея менять IMR_MSK?

Идею подсказали на форуме поддержки ST. Могу поискать линк.

Цитата(rat @ Nov 1 2013, 06:55) *
Не подскажете работающий пример для STM32 USB?

STM32_USB-FS-Device_Lib_V4.0.0
rat
Цитата(Паф @ Nov 1 2013, 13:19) *
Идею подсказали на форуме поддержки ST. Могу поискать линк.


STM32_USB-FS-Device_Lib_V4.0.0


Спасибо )
igorle
Цитата(Паф @ Nov 1 2013, 09:19) *
Идею подсказали на форуме поддержки ST. Могу поискать линк.

Это конкретно вам ответили? Я искал на этом форуме. И, как оказалось, читал ту ветку, где говорилось о модификации IMR_MSK. Фокус в том, что там обсуждалось так много разных вариантов, что именно этот я не понял и пропустил sad.gif

Если это ваша ветка - дайте линк, пожалуйста. Поучусь, как спрашивать чтобы тебя поняли. Я вот эту ветку находил.

PS. Этот их clive1 - это живой человек, или собирательный образ, типа кукрыниксы?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.