Jump to content

    
Sign in to follow this  
Danis

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

Recommended Posts

Народ, кто уже успел попробовать stm32L151-152?

Большая проблема: В СТОП-МОДе потребление составляет 300мкА, вместо заявленных 1-2!!!

В Стэндбай-Моде всё честно- 1мкА, но он мне не подходит, т.к. во-первых не сохраняет SRAM,

а во-вторых, отключает ИОН, который мне нужен все время совне.

Почему в СТОПе такое потребление? Пример я взял стандартный из библиотеки, он маленький, запутаться невозможно.

Единственное, что я изменил -это тактирование: не от внешнего резонатора, а от внутреннего(пробовал и MSI и HSI+PLL)

--------------------------------

Все, проблема решена: необходимо дополнительно перевести все порты с цифрового входа на аналоговый вход.

Edited by fiim

Share this post


Link to post
Share on other sites
Появилось на сайте ST:

STM32F105/107xx USB Host library (UM1021)

 

Опробовал на флешках, мышках и клавиатуре. Флешки больше 8 Гб в упор не видит. У флешек на 8 Гб видит только 4. Почему?

Share this post


Link to post
Share on other sites
Опробовал на флешках, мышках и клавиатуре. Флешки больше 8 Гб в упор не видит. У флешек на 8 Гб видит только 4. Почему?

Где-то под размер отвели 32-битную переменную или в промежуточных вычислениях недосмотрели, а 232 как раз 4G.

Share this post


Link to post
Share on other sites
Народ, кто уже успел попробовать stm32L151-152?

Большая проблема: В СТОП-МОДе потребление составляет 300мкА, вместо заявленных 1-2!!!

В Стэндбай-Моде всё честно- 1мкА, но он мне не подходит, т.к. во-первых не сохраняет SRAM,

а во-вторых, отключает ИОН, который мне нужен все время совне.

Почему в СТОПе такое потребление? Пример я взял стандартный из библиотеки, он маленький, запутаться невозможно.

Единственное, что я изменил -это тактирование: не от внешнего резонатора, а от внутреннего(пробовал и MSI и HSI+PLL)

--------------------------------

Все, проблема решена: необходимо дополнительно перевести все порты с цифрового входа на аналоговый вход.

А где вы разжились этими камушками? Образцы уже поставляют?

Share this post


Link to post
Share on other sites
А где вы разжились этими камушками? Образцы уже поставляют?

У нас уже доступны по предзаказу

http://www.elcopro.ru/catalog/price-list/?search=STM32L

Пока только STM32L151CBT6 по 300 рублей.

Но у меня пока руки не дошли

только с дисковери побаловался

http://ziblog.ru/category/mikrokontrolleryi/stm32/

Share this post


Link to post
Share on other sites
А где вы разжились этими камушками? Образцы уже поставляют?

Да, это образец, просто повезло, вовремя отхватил, наверно последний был в Терре.

Думаю скоро появятся в продаже.

Note: Переводить все порты на аналоговый вход желательно, но не обязательно(тем более, что в стоп-моде могут потребоваться какие-то уровни на пинах): главное отключить подтяжки(пулап-пулдаун)жтага-это они в основном столько кушают.

Edited by fiim

Share this post


Link to post
Share on other sites
Предлагаю в этой теме обсуждать вопросы разработчиков на STM32.

 

ТЕМА: неверное значение при считывании регистра DBGMCU_IDCODE, STM32F103RB.

 

Попробовал в программе вывести значение этого RO регистра (с помощью printf(), разумеется). Согласно Reference Manual RM0008, стр. 1055, регистр всегда доступен. С удивлением увидел нули!

 

1. Начал под отладчиком пошагово - вдруг все считалось правильно!

2. Вышел из отладчика, нажимал RESET, перезапуская процессор, - по-прежнему все правильно.

3. Передернул питание - опять нули!.

 

Повторяем с шага 1. - опять правильно считывается, пока питание не передернешь.

 

Кто сталкивался?

 

Share this post


Link to post
Share on other sites

Ну правильно, DBG различают POR и остальные резеты. 0 читается один раз после включения?

Может какие-то тонкости синхронизации шин. На 100м не воспроизвелось.

 

Share this post


Link to post
Share on other sites
Ну правильно, DBG различают POR и остальные резеты. 0 читается один раз после включения?

Может какие-то тонкости синхронизации шин. На 100м не воспроизвелось.

 

Пробовал читать подрят несколько раз - все равно нули после передергивания питания.

О синхронизации не скажу... Читаю лишь после того, как запущена вся периферия.

 

Как я написал, согласно актуальному Reference Manual регистр читается и из пользовательской программы. Где-то в недрах форума ST я действительно нашел упоминание, что считывается только в режиме debug, а иначе - нули, но это касалось первых ревизий. Мой процессор имеет в DBGMCU_IDCODE (если удалось считать) значение 0x20030410, что означает Medium Density Device Revision Y.

 

Интересно, что втыкает единократный вход в режим debug после переброски питания, что после этого считывается реальное значение... Может надо прочесть разок POR?

Edited by KnightIgor

Share this post


Link to post
Share on other sites
Может надо прочесть разок POR?

Не представляю, как можно прочитать POR :)

Но вот если прочитать errata, то можно выяснить

The DBGMCU_IDCODE and DBGMCU_CR debug registers are accessible only in debug

mode (not accessible by the user software). When these registers are read in user mode,

the returned value is 0x00.

И касается походу всех ревизий 101 и 103го.

Share this post


Link to post
Share on other sites
Но вот если прочитать errata, то можно выяснить

И касается походу всех ревизий 101 и 103го.

Хорошо, тогда почему все же регистр читается, пусть даже после того, как единожды попользовались отладчиком, но потом жали на RESET?

Share this post


Link to post
Share on other sites

Потому что обычный RESET на эти регистры не влияет.

Edited by akimych

Share this post


Link to post
Share on other sites

Добрый день всем. Всех с праздником.

Я вот перехожу на стм32, до этого работал с 8/16 битными.

Скачал с сайта производителя библиотеки для работы с стм32...

Нашел пример программы для инициализации МК:

 

NVIC_InitTypeDef NVIC_InitStructure;

 

RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;

RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;

 

GPIOA->CRH &= ~(GPIO_CRH_MODE9 | GPIO_CRH_CNF9);

 

GPIOA->CRH |= GPIO_CRH_MODE9_0;

 

 

/* Enable the TIM2 gloabal Interrupt */

NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

 

Вопрос, где в библиотека объявлен тип NVIC_InitTypeDef структуры NVIC_InitStructure ?

 

 

 

Share this post


Link to post
Share on other sites

stm32f10x_nvic.h

 

/* NVIC Init Structure definition */
typedef struct
{
 u8 NVIC_IRQChannel;
 u8 NVIC_IRQChannelPreemptionPriority;
 u8 NVIC_IRQChannelSubPriority;
 FunctionalState NVIC_IRQChannelCmd;
} NVIC_InitTypeDef;

 

Share this post


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