Stm32 с чего начать изучение...
- Сообщения: 616
- Зарегистрирован: Вс ноя 01, 2015 13:13:49
Бородатая новость получилась. И 10-и лет не прошло, как терра опомнилась.
- Реклама
Что-то меня заклинило на иницализации RCC
камень STM32L151..., тактирование от HSI
Keil 5.17
зависает на строчке
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL){__NOP();}
в отладчике см. стоп на __NOP();, RCC->CFGR = 0x0088240F
т.е. биты SW = 11, SWS = 11,
никак не вьеду в чем засада....
выше код той же инициализации от PLL на SPL закоментарен (то же зависает),
если его заменить на
то все ок!
камень STM32L151..., тактирование от HSI
Keil 5.17
Код: Выделить всё
void SetupClock(void)
{
RCC_DeInit ();
RCC_HSICmd(ENABLE);
while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET){};
RCC_HCLKConfig (RCC_SYSCLK_Div1); /* HCLK = SYSCLK */
RCC_PCLK2Config (RCC_HCLK_Div2); /* PCLK2 = HCLK/2 */
RCC_PCLK1Config (RCC_HCLK_Div2); /* PCLK1 = HCLK/2 */
/* PLLCLK = 16MHz * 6 / 3 = 32 MHz */
RCC_PLLConfig (RCC_PLLSource_HSI, RCC_PLLMul_6, RCC_PLLDiv_3);
RCC_PLLCmd (ENABLE); /* Enable PLL */
while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}
// RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
// while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){}
_LED_YELLOW_ON; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
RCC->CFGR &= ~RCC_CFGR_SW;
RCC->CFGR |= RCC_CFGR_SW_PLL;
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL){__NOP();}
_LED_YELLOW_OFF; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/* Enable USART1,2,3 clock */
RCC_APB2PeriphClockCmd (RCC_APB2Periph_USART1, ENABLE);
RCC_APB1PeriphClockCmd (RCC_APB1Periph_USART2 | RCC_APB1Periph_USART3, ENABLE);
}
while ((RCC->CFGR & RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL){__NOP();}
в отладчике см. стоп на __NOP();, RCC->CFGR = 0x0088240F
т.е. биты SW = 11, SWS = 11,
никак не вьеду в чем засада....
выше код той же инициализации от PLL на SPL закоментарен (то же зависает),
если его заменить на
Код: Выделить всё
RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET){}
Продолжаем мучить камень STM32L151...Нашел такую фичу.
При инициализации USART, настройка длины посылки:
в канал выдается 7!!! (это не шутка, именно семь) бит
а если
то 8 !!!
как инициализировать не важно, можно и через CMSYS - теже грабли
настройки USART->CR1 см. в дебагере, все нормально,
выловил только осциллографом...
в описании и в errata не нашел такой "особенности" камня
При инициализации USART, настройка длины посылки:
Код: Выделить всё
USART_InitStructure.USART_WordLength = USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_Even;
а если
Код: Выделить всё
USART_InitStructure.USART_WordLength = USART_WordLength_9b;
как инициализировать не важно, можно и через CMSYS - теже грабли
настройки USART->CR1 см. в дебагере, все нормально,
выловил только осциллографом...
в описании и в errata не нашел такой "особенности" камня
Такая проблема: МК STM32F103C8T6 на ровном месте перестал определяться ST-Link'ом (FW Version V1J13S0 c платы STM32-Discovery). МК светодиодиком моргает, ST-link видится Keil как обычно, но связи между MK и ST-Link нет. Установленный на STM32-Discovery МК STM32F100RBT6B прошивается без проблем.
В чем может быть дело?
В чем может быть дело?
Никакая контра не уйдёт от нас
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
В соседней теме ответил http://www.radiokot.ru/forum/viewtopic. ... 1#p3059061
Это из-за куба. Он по умолчанию отключает отладку.
Это из-за куба. Он по умолчанию отключает отладку.
- Реклама
Зажатый reset не помог 
Boot0=1 и Boot1=0 ситуацию тоже не изменили.
Boot0=1 и Boot1=0 ситуацию тоже не изменили.
Никакая контра не уйдёт от нас
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Прошивать нужно через STM32 ST-LINK Utility. В настройках следует выбрать тип подключения Connect Under Reset. Затем зажать сброс и в окне нажать на Connect to the target, после чего отпустить кнопку сброс. Возможно получится не с первой попытки.
Или же переключить МК на встроенный загрузчик подав на Boot0 напряжение 3.3 вольта. Обычно для этого предусмотрены перемычки. В режиме загрузчика залитая прошивка не выполняется, а значит не отключает отладку и можно перепрошить МК.
Или же переключить МК на встроенный загрузчик подав на Boot0 напряжение 3.3 вольта. Обычно для этого предусмотрены перемычки. В режиме загрузчика залитая прошивка не выполняется, а значит не отключает отладку и можно перепрошить МК.
Что-то "Connect Under Reset" у меня нет. Старый ST-Link?
BOOT0=1 ничего не меняет.
BOOT0=1 ничего не меняет.
Никакая контра не уйдёт от нас
V1J13S0
Обновил 20 минут назад.
Обновил 20 минут назад.
Никакая контра не уйдёт от нас
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Заказал уже на Али. Спасибо.
Никакая контра не уйдёт от нас
ST-Link V2 приехал за 1 месяц.
По какой схеме подключать программатор к МК?
P.S. В общем, разобрался. Если будет интересно - отпишусь позже.
По какой схеме подключать программатор к МК?
P.S. В общем, разобрался. Если будет интересно - отпишусь позже.
- Вложения
-
- IMG_20170503_000046.jpg
- (102.05 КБ) 729 скачиваний
Никакая контра не уйдёт от нас
- Сообщения: 11
- Зарегистрирован: Вт фев 16, 2010 22:33:51
Здравствуйте, не могу найти как на CubeMX приделать ws2812
на SPL нашел библиотеку, но хотелось бы через Куб
STM32F103C8T6.
еще интересует можно ли через DMA перекидывать паралельно данные ( массив данных в несколько портов(ну или несколько массивов в разные порты синхронно)
на SPL нашел библиотеку, но хотелось бы через Куб
STM32F103C8T6.
еще интересует можно ли через DMA перекидывать паралельно данные ( массив данных в несколько портов(ну или несколько массивов в разные порты синхронно)
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Раз так хочется, перепишите библиотеку под HAL, только лучше работать от этого не станет.0crash0 писал(а):на SPL нашел библиотеку, но хотелось бы через Куб
Обмен идет через одну шину, а значит будут задержки.0crash0 писал(а):еще интересует можно ли через DMA перекидывать паралельно данные
- Сообщения: 11
- Зарегистрирован: Вт фев 16, 2010 22:33:51
[uquote="Мурик",url="/forum/viewtopic.php?p=3224732#p3224732"]
боюсь переписать я врядли смогу библиотеку
вот тут прямо в кубе делают:
http://www.pvsm.ru/pesochnitsa/105562
я нашел что для 72мгц процессора мне нужно ставить 89 counter period
только не работает всеравно
Раз так хочется, перепишите библиотеку под HAL, только лучше работать от этого не станет.0crash0 писал(а):на SPL нашел библиотеку, но хотелось бы через Куб
Обмен идет через одну шину, а значит будут задержки.[/uquote]0crash0 писал(а):еще интересует можно ли через DMA перекидывать паралельно данные
боюсь переписать я врядли смогу библиотеку
вот тут прямо в кубе делают:
http://www.pvsm.ru/pesochnitsa/105562
я нашел что для 72мгц процессора мне нужно ставить 89 counter period
только не работает всеравно
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
0crash0, все уже украдено -http://www.martinhubacek.cz/arm/improved-stm32-ws2812b-library
Вывод одновременно на 16 линий...
Вывод одновременно на 16 линий...
- Сообщения: 11
- Зарегистрирован: Вт фев 16, 2010 22:33:51
[uquote="dosikus",url="/forum/viewtopic.php?p=3224760#p3224760"]0crash0, все уже украдено -http://www.martinhubacek.cz/arm/improve ... 2b-library
Вывод одновременно на 16 линий...[/uquote]
мне нужна одна линия... и паралельно ленте отдельные данные(т.к. на моем процессоре один дма так что я так понимаю что все пойдет на одной частоте.. но думаю с этим проблем не будет)
https://www.youtube.com/watch?v=1q7buvAqizg вот еще нашел только тоже чтото неработает.. .
а по ссылке тоже SPL вроди?
Вывод одновременно на 16 линий...[/uquote]
мне нужна одна линия... и паралельно ленте отдельные данные(т.к. на моем процессоре один дма так что я так понимаю что все пойдет на одной частоте.. но думаю с этим проблем не будет)
https://www.youtube.com/watch?v=1q7buvAqizg вот еще нашел только тоже чтото неработает.. .
а по ссылке тоже SPL вроди?
- Сообщения: 3385
- Зарегистрирован: Пн окт 11, 2010 19:00:08
Насколько помню, в STM32F103C8T6 два контроллера DMA, по несколько каналов в каждом.0crash0 писал(а):на моем процессоре один дма
- Сообщения: 11
- Зарегистрирован: Вт фев 16, 2010 22:33:51
[uquote="Мурик",url="/forum/viewtopic.php?p=3225157#p3225157"]
ок, можно на SPL через дма реализовать семисегментный индикатор
я понимаю что можно руками выставлять биты и обновлять состояние портов.. но это займет нное время даже если засунуть это на таймер
а у меня есть некоторые идеи чем занять процессор например на юсб.. поэтому хочеться разгрузить процессор по максимуму
и может есть еще какието МК которые имеют механизм вроде ДМА и поддерживают работу с ЮСБ и к которым есть готовые библиотеки для WS2812
Насколько помню, в STM32F103C8T6 два контроллера DMA, по несколько каналов в каждом.[/uquote]0crash0 писал(а):на моем процессоре один дма
ок, можно на SPL через дма реализовать семисегментный индикатор
я понимаю что можно руками выставлять биты и обновлять состояние портов.. но это займет нное время даже если засунуть это на таймер
а у меня есть некоторые идеи чем занять процессор например на юсб.. поэтому хочеться разгрузить процессор по максимуму
и может есть еще какието МК которые имеют механизм вроде ДМА и поддерживают работу с ЮСБ и к которым есть готовые библиотеки для WS2812


