STM32 новичку в ARM что к чему
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
- Реклама
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="a5021",url="/forum/viewtopic.php?p=3525689#p3525689"]Мож VDDA ? PLL от него питается.[/uquote]
Может, но на VDDA и сброс завязан, без VDDA обычно не стартует, а тут при 16MHz все нормально.
Может, но на VDDA и сброс завязан, без VDDA обычно не стартует, а тут при 16MHz все нормально.
Я тоже об этом думал. Но на 24 латентность 0 и МК падает на ините жпио. На 32 латентность уже 1, и инит плл проходит успешно, падает также на жпио. Пока что оставлю на 16, а как доберусь до осцила потыкаю в питания.
Добавлено after 1 minute 37 seconds:
[uquote="Reflector",url="/forum/viewtopic.php?p=3525661#p3525661"]Не похоже, у него проблемы уже при 24MHz начинаются, для которых 0WS нужен, а у ST все с большим запасом указано, реально с 0 и на 36MHz работает.[/uquote]
Как раз таки подходит. PLL у меня запускается на 16,24 и 32. А на 40 уже нет.
До этого проблемы с инитом жпио, но возможно это два разных бага.
Добавлено after 5 minutes 44 seconds:
Я сейчас попытаюсь расписать инит плл, там куб, особо впечатлительных прошу не писать сразу, а посчитать до 100
Смотрите, инит RCC в кубе построен по такому образу - сначала идет конфиг ПЛЛ и его включение в процедуре HAL_RCC_OscConfig(&RCC_OscInitStruct) - менно иам на макросе __HAL_RCC_PLL_ENABLE(); и валится все.
А вот латентность по плану задается уже ПОСЛЕ включения PLL в процедуре HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1)
Правильно ли я понимаю, что сначала надо ключить буфер и латентность, а уже потом включать PLL. Стоит писать реквест на форум ST?
Добавлено after 1 minute 37 seconds:
[uquote="Reflector",url="/forum/viewtopic.php?p=3525661#p3525661"]Не похоже, у него проблемы уже при 24MHz начинаются, для которых 0WS нужен, а у ST все с большим запасом указано, реально с 0 и на 36MHz работает.[/uquote]
Как раз таки подходит. PLL у меня запускается на 16,24 и 32. А на 40 уже нет.
До этого проблемы с инитом жпио, но возможно это два разных бага.
Добавлено after 5 minutes 44 seconds:
Я сейчас попытаюсь расписать инит плл, там куб, особо впечатлительных прошу не писать сразу, а посчитать до 100
Смотрите, инит RCC в кубе построен по такому образу - сначала идет конфиг ПЛЛ и его включение в процедуре HAL_RCC_OscConfig(&RCC_OscInitStruct) - менно иам на макросе __HAL_RCC_PLL_ENABLE(); и валится все.
А вот латентность по плану задается уже ПОСЛЕ включения PLL в процедуре HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1)
Правильно ли я понимаю, что сначала надо ключить буфер и латентность, а уже потом включать PLL. Стоит писать реквест на форум ST?
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="Ярослав555",url="/forum/viewtopic.php?p=3525702#p3525702"]Правильно ли я понимаю, что сначала надо ключить буфер и латентность, а уже потом включать PLL. Стоит писать реквест на форум ST?[/uquote]
Естественно, латентность задается до включения PLL.
Естественно, латентность задается до включения PLL.
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Не сочиняйте. __HAL_RCC_PLL_ENABLE() включает PLL, но не переключает тактирование железа от PLL.
- Реклама
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="a5021",url="/forum/viewtopic.php?p=3525726#p3525726"]Не сочиняйте. __HAL_RCC_PLL_ENABLE() включает PLL, но не переключает тактирование железа от PLL.[/uquote]
А, тогда да, без разницы.
Ярослав555, а конденсатор на NRST есть? Резистор нагрузочный там слабенький, включение PLL добавляет помех...
А, тогда да, без разницы.
Ярослав555, а конденсатор на NRST есть? Резистор нагрузочный там слабенький, включение PLL добавляет помех...
[uquote="Reflector",url="/forum/viewtopic.php?p=3525728#p3525728"]а конденсатор на NRST есть? Резистор нагрузочный там слабенький, включение PLL добавляет помех...[/uquote]
Небыло. Добавил 100нФ и подтянул отдельным резистором 1,5к к +3,3. Не помогло. Ладно, не буду тратить Ваше время - без осцилографа дальше делать нечего. К сожалению к нему я доберусь лишь на выходные.
Небыло. Добавил 100нФ и подтянул отдельным резистором 1,5к к +3,3. Не помогло. Ладно, не буду тратить Ваше время - без осцилографа дальше делать нечего. К сожалению к нему я доберусь лишь на выходные.
Добавлено after 11 minutes 4 seconds:
Все, работает как часы
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
Гы! Знач теперь я угадал. 
to Reflector: с незапаянной ногой VDDA мк нормально работает, пока ADC или PLL не запустишь. И пофиг ему на резет.
to Reflector: с незапаянной ногой VDDA мк нормально работает, пока ADC или PLL не запустишь. И пофиг ему на резет.
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="a5021",url="/forum/viewtopic.php?p=3525825#p3525825"]to Reflector: с незапаянной ногой VDDA мк нормально работает, пока ADC или PLL не запустишь. И пофиг ему на резет.[/uquote]
VDDA = from VDD to 3.6 V: external analog power supply for ADC, DAC, Reset blocks, RCs and PLL (minimum voltage to be applied to VDDA is 2.4 V when the ADC or DAC are used). The VDDA voltage level must be always greater or equal to the VDD voltage level and must be established first.
The POR monitors only the VDD supply voltage. During the startup phase it is required that VDDA should arrive first and be greater than or equal to VDD.
The PDR monitors both the VDD and VDDA supply voltages, however the VDDA power supply supervisor can be disabled (by programming a dedicated Option bit) to reduce
the power consumption if the application design ensures that VDDA is higher than or equal to VDD.
VDDA = from VDD to 3.6 V: external analog power supply for ADC, DAC, Reset blocks, RCs and PLL (minimum voltage to be applied to VDDA is 2.4 V when the ADC or DAC are used). The VDDA voltage level must be always greater or equal to the VDD voltage level and must be established first.
The POR monitors only the VDD supply voltage. During the startup phase it is required that VDDA should arrive first and be greater than or equal to VDD.
The PDR monitors both the VDD and VDDA supply voltages, however the VDDA power supply supervisor can be disabled (by programming a dedicated Option bit) to reduce
the power consumption if the application design ensures that VDDA is higher than or equal to VDD.
- Сообщения: 6457
- Зарегистрирован: Пт сен 13, 2013 13:11:31
[uquote="Reflector",url="/forum/viewtopic.php?p=3525847#p3525847"]VDDA = from VDD to 3.6 V: external analog power supply for ADC, DAC, Reset blocks[/uquote]
Еще раз повторяю тем, до кого медленно доходит: без подачи VDDA F0 стартует и более-менее нормально работает, если не пытаться дергать периферию, питающуюся от VDDA. Неверующим предлагается проверить сей факт экспериментально и успокоиться.
Еще раз повторяю тем, до кого медленно доходит: без подачи VDDA F0 стартует и более-менее нормально работает, если не пытаться дергать периферию, питающуюся от VDDA. Неверующим предлагается проверить сей факт экспериментально и успокоиться.
[uquote="dosikus",url="/forum/viewtopic.php?p=3525830#p3525830"]Прототип из г. и палок?[/uquote]
да нет, фабричное исполнение. Прямо в проекте VDDA в воздухе висит. Наш косяк.
да нет, фабричное исполнение. Прямо в проекте VDDA в воздухе висит. Наш косяк.
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="a5021",url="/forum/viewtopic.php?p=3525884#p3525884"]Еще раз повторяю тем, до кого медленно доходит: без подачи VDDA F0 стартует и более-менее нормально работает, если не пытаться дергать периферию, питающуюся от VDDA. Неверующим предлагается проверить сей факт экспериментально и успокоиться.[/uquote]
Глупый спор. VDDA нужен, об этом сказано в документации, у меня лично были без него периодические проблемы со стартом, а отрывать VDDA ради проверки я, естественно, не буду, т.к. он все равно должен быть всегда подключен.
Глупый спор. VDDA нужен, об этом сказано в документации, у меня лично были без него периодические проблемы со стартом, а отрывать VDDA ради проверки я, естественно, не буду, т.к. он все равно должен быть всегда подключен.
- Сообщения: 2089
- Зарегистрирован: Вс июн 19, 2016 09:32:03
[uquote="a5021",url="/forum/viewtopic.php?p=3525948#p3525948"]Хотите напомню, с чего возник "глупый спор" ? Ровно с того, что вы заявили, будто без VDDA мк не стартует. Так вот я настаиваю, что это не спор глупый, а ваше утверждение.[/uquote]
Вообще-то опираясь на прошлый опыт я сказал, что без VDDA мк обычно не стартует... Но ладно, отключил VDDA от F0, стартует нормально, отключил от F1, молчит, дотрагиваюсь до VDDA проводком с 3В и сразу светодиод начинает мигать, убираю, снова перестает. Лезу в документацию, она немного другая, там вместо простой необходимости в VDDA при подаче питания конкретно написано, что the device remains in Reset mode when VDD/VDDA is below a specified threshold. Такое же описание у F4, для F3 уже как у F0... Получается некоторые серии без VDDA не стартуют, некоторые вроде работают, хотя требование наличия VDDA при старте остается и никто не гарантирует, что стартовать будет, например, при питании от 2-х В...
Вообще-то опираясь на прошлый опыт я сказал, что без VDDA мк обычно не стартует... Но ладно, отключил VDDA от F0, стартует нормально, отключил от F1, молчит, дотрагиваюсь до VDDA проводком с 3В и сразу светодиод начинает мигать, убираю, снова перестает. Лезу в документацию, она немного другая, там вместо простой необходимости в VDDA при подаче питания конкретно написано, что the device remains in Reset mode when VDD/VDDA is below a specified threshold. Такое же описание у F4, для F3 уже как у F0... Получается некоторые серии без VDDA не стартуют, некоторые вроде работают, хотя требование наличия VDDA при старте остается и никто не гарантирует, что стартовать будет, например, при питании от 2-х В...
в режиме отладки на PB3 у STM32F103 всегда стоит 1 хотя SWO не используется. и в кубе соответствующие настройки стоят.
после перезагрузки кнопкой вывод работает как и полагается. где об этом почитать или как исправить ситуацию?
после перезагрузки кнопкой вывод работает как и полагается. где об этом почитать или как исправить ситуацию?
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Расскажите, пожалуйста, в чем может быть проблема с бэкап регистрами? Кристалл stm32f103c8 - сидящий на синей таблетке, которую купил в Китае на ebay. Всё прекрасно работает с регистрами от BKP->DR1 до BKP->DR10. Но тут мне потребовалось еще пару регистров попользовать. В RM0008 написано, что их от 1 до 42.
Отбой тревоги! Оказывается, у этого камня, действительно только 10 регистров:
Тогда, я заменил инклюд на stm32f10x.h - там есть все 42 регистра, компиляция прошла нормально. Да вот только данные я вижу только в первых десяти регистрах. Даже прямая записьне даёт никакого эффекта - как был 0 в обоих регистрах - так и остаётся.
Первый, оказывается, берётся из каталога проекта: Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h,
второй: "C:\Keil_v5\ARM\Pack\Keil\STM32F1xx_DFP\2.1.0\Device\Include\stm32f10x.h"
Отбой тревоги! Оказывается, у этого камня, действительно только 10 регистров:
Вот же блин!The RTC and the backup registers are supplied through a switch that takes power either on
VDD supply when present or through the VBAT pin. The backup registers are ten 16-bit
registers used to store 20 bytes of user application data when VDD power is not present.
Спойлер
Только вот странность, когда был подключен #include "stm32f1xx.h" - компилятор не находил BKP->DR больше 10. Переход на определение указывал, что определение находится в файле stm32f103xb.h - и там, действительно, последний регистр десятый. причем странно, что xb... в настройках проекта стоит STM32F103C8.Тогда, я заменил инклюд на stm32f10x.h - там есть все 42 регистра, компиляция прошла нормально. Да вот только данные я вижу только в первых десяти регистрах. Даже прямая запись
Код: Выделить всё
BKP->DR11 = 0xaaaa;
BKP->DR12 = 0x5555;Первый, оказывается, берётся из каталога проекта: Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h,
второй: "C:\Keil_v5\ARM\Pack\Keil\STM32F1xx_DFP\2.1.0\Device\Include\stm32f10x.h"
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- Сообщения: 3386
- Зарегистрирован: Пн окт 11, 2010 19:00:08
[uquote="a5021",url="/forum/viewtopic.php?p=3498970#p3498970"]Вроде это не GD32 и цена довольно интересная. По даташиту оно на stm32f103c8t6 вполне походит.Никто не в курсе, что это за чудо природы?[/uquote]У этого же продавца есть платы с CS32F103C8T6. https://ru.aliexpress.com/item/Free-Shi ... 08361.html
После инита SPI линия данных не выставляется в высокий уровень, в соотв. с настройками. А после реинита на первом байте наблюдается передергивание клока/данных, от чего портится посылка. Знакомый говорит писал не один репорт в ST и тишина. Говорит лечится выводом в интерфейс 0xFF при поднятом CS слейва. Все так, или есть секрет?

Спойлер
- Вложения
-
- spi.jpg
- (86.54 КБ) 361 скачивание
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Код в хрустальном шаре?
И почему линия данных должна поменять состояние до передачи?
ЗЫ: все секреты в RM.
И почему линия данных должна поменять состояние до передачи?
ЗЫ: все секреты в RM.



