Перейти к содержанию
    

STM32 проблема: запись в EEPROM и USB

Добрый день!

 

МК 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 )

 

Работать стало как задумано. Осталось понять взаимосвязь..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

 

МК 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?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо. Информация мне очень помогла. А откуда пришла идея менять IMR_MSK?

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

 

Не подскажете работающий пример для STM32 USB?

STM32_USB-FS-Device_Lib_V4.0.0

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

STM32_USB-FS-Device_Lib_V4.0.0

 

Спасибо )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

 

PS. Этот их clive1 - это живой человек, или собирательный образ, типа кукрыниксы?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...