STM32 новичку в ARM что к чему
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: STM32 новичку в ARM что к чему
[uquote="Reflector",url="/forum/viewtopic.php?p=3525728#p3525728"]а конденсатор на NRST есть? Резистор нагрузочный там слабенький, включение PLL добавляет помех...[/uquote]
Небыло. Добавил 100нФ и подтянул отдельным резистором 1,5к к +3,3. Не помогло. Ладно, не буду тратить Ваше время - без осцилографа дальше делать нечего. К сожалению к нему я доберусь лишь на выходные.
Небыло. Добавил 100нФ и подтянул отдельным резистором 1,5к к +3,3. Не помогло. Ладно, не буду тратить Ваше время - без осцилографа дальше делать нечего. К сожалению к нему я доберусь лишь на выходные.
- Реклама
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: STM32 новичку в ARM что к чему
Добавлено after 11 minutes 4 seconds:
Все, работает как часы
Re: STM32 новичку в ARM что к чему
Гы! Знач теперь я угадал. 
to Reflector: с незапаянной ногой VDDA мк нормально работает, пока ADC или PLL не запустишь. И пофиг ему на резет.
to Reflector: с незапаянной ногой VDDA мк нормально работает, пока ADC или PLL не запустишь. И пофиг ему на резет.
Re: STM32 новичку в ARM что к чему
[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.
Re: STM32 новичку в ARM что к чему
[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. Неверующим предлагается проверить сей факт экспериментально и успокоиться.
- Реклама
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: STM32 новичку в ARM что к чему
[uquote="dosikus",url="/forum/viewtopic.php?p=3525830#p3525830"]Прототип из г. и палок?[/uquote]
да нет, фабричное исполнение. Прямо в проекте VDDA в воздухе висит. Наш косяк.
да нет, фабричное исполнение. Прямо в проекте VDDA в воздухе висит. Наш косяк.
Re: STM32 новичку в ARM что к чему
[uquote="a5021",url="/forum/viewtopic.php?p=3525884#p3525884"]Еще раз повторяю тем, до кого медленно доходит: без подачи VDDA F0 стартует и более-менее нормально работает, если не пытаться дергать периферию, питающуюся от VDDA. Неверующим предлагается проверить сей факт экспериментально и успокоиться.[/uquote]
Глупый спор. VDDA нужен, об этом сказано в документации, у меня лично были без него периодические проблемы со стартом, а отрывать VDDA ради проверки я, естественно, не буду, т.к. он все равно должен быть всегда подключен.
Глупый спор. VDDA нужен, об этом сказано в документации, у меня лично были без него периодические проблемы со стартом, а отрывать VDDA ради проверки я, естественно, не буду, т.к. он все равно должен быть всегда подключен.
Re: STM32 новичку в ARM что к чему
[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-х В...
- RusikOk
- Нашел транзистор. Понюхал.
- Сообщения: 197
- Зарегистрирован: Пн янв 24, 2011 01:51:48
- Откуда: Украина, Киев
- Контактная информация:
Re: STM32 новичку в ARM что к чему
в режиме отладки на PB3 у STM32F103 всегда стоит 1 хотя SWO не используется. и в кубе соответствующие настройки стоят.
после перезагрузки кнопкой вывод работает как и полагается. где об этом почитать или как исправить ситуацию?
после перезагрузки кнопкой вывод работает как и полагается. где об этом почитать или как исправить ситуацию?
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Расскажите, пожалуйста, в чем может быть проблема с бэкап регистрами? Кристалл 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"
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Re: STM32 новичку в ARM что к чему
[uquote="a5021",url="/forum/viewtopic.php?p=3498970#p3498970"]Вроде это не GD32 и цена довольно интересная. По даташиту оно на stm32f103c8t6 вполне походит.Никто не в курсе, что это за чудо природы?[/uquote]У этого же продавца есть платы с CS32F103C8T6. https://ru.aliexpress.com/item/Free-Shi ... 08361.html
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: STM32 новичку в ARM что к чему
После инита SPI линия данных не выставляется в высокий уровень, в соотв. с настройками. А после реинита на первом байте наблюдается передергивание клока/данных, от чего портится посылка. Знакомый говорит писал не один репорт в ST и тишина. Говорит лечится выводом в интерфейс 0xFF при поднятом CS слейва. Все так, или есть секрет?

Спойлер
- Вложения
-
- spi.jpg
- (86.54 КБ) 350 скачиваний
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Код в хрустальном шаре?
И почему линия данных должна поменять состояние до передачи?
ЗЫ: все секреты в RM.
И почему линия данных должна поменять состояние до передачи?
ЗЫ: все секреты в RM.
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: STM32 новичку в ARM что к чему
[uquote="VladislavS",url="/forum/viewtopic.php?p=3536647#p3536647"]Код в хрустальном шаре?[/uquote]
когда в if не заходит (прежде никто другой не менял настройки), то все ок. А если пришлось переконфигурировать то на первом байте наблюдаю передергивания как на картинке.
Код: Выделить всё
uint8_t ADE7758_t::txRxStart(void){
if(HAL_SPI_GetState(spi_) != HAL_SPI_STATE_READY)
return 1;
if((spi_->Init.CLKPhase != SPI_PHASE_2EDGE)
|| (spi_->Init.CLKPolarity != SPI_POLARITY_LOW)){
spi_->Init.CLKPolarity = SPI_POLARITY_LOW;
spi_->Init.CLKPhase = SPI_PHASE_2EDGE;
if (HAL_SPI_Init(spi_) != HAL_OK){
Error_Handler();
}
}
ssEnable();
uint8_t byteLength = ((registers_[regIndex_].bitLength_ - 1) / 8) + 2;
HAL_SPI_TransmitReceive_IT(spi_, out_.data, in_.data, byteLength);
return 0;
}
Последний раз редактировалось Ярослав555 Пт дек 28, 2018 08:43:59, всего редактировалось 3 раза.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Ты внутрь HAL_SPI_Init() то заглядывал ???
партизан выбежал на ж.д. устанавливает взрывчатку под рельсы.начинает чиркать спички о коробок, чтобы поджечь шнур . и тут немецкий патруль. поймал его.спрашивает:
-ты че тут делаешь
-да вот,сами видете,пытаюсь ж.д. взорвать...
-а спички у тя производства чьего?
-HAL... (в оригинале Балабаново)
немцы уходя:
-ну давай,давай...
Спойлер
великая отечественная война..партизан выбежал на ж.д. устанавливает взрывчатку под рельсы.начинает чиркать спички о коробок, чтобы поджечь шнур . и тут немецкий патруль. поймал его.спрашивает:
-ты че тут делаешь
-да вот,сами видете,пытаюсь ж.д. взорвать...
-а спички у тя производства чьего?
-HAL... (в оригинале Балабаново)
немцы уходя:
-ну давай,давай...
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: STM32 новичку в ARM что к чему
[uquote="VladislavS",url="/forum/viewtopic.php?p=3536661#p3536661"]Ты внутрь HAL_SPI_Init() то заглядывал ???[/uquote]
ок, я в ините вижу __HAL_SPI_DISABLE(hspi);
а в старте __HAL_SPI_ENABLE(hspi);
это происходит при включении периферии? мне нужно сделать __HAL_SPI_ENABLE(hspi); перед активацией CS?
Добавлено after 1 minute 4 seconds:
только на работу пришел, жду синхронизации файлов, а то попробовал бы уже.
ок, я в ините вижу __HAL_SPI_DISABLE(hspi);
а в старте __HAL_SPI_ENABLE(hspi);
это происходит при включении периферии? мне нужно сделать __HAL_SPI_ENABLE(hspi); перед активацией CS?
Добавлено after 1 minute 4 seconds:
только на работу пришел, жду синхронизации файлов, а то попробовал бы уже.
- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
Ты под спойлер то заглядывал? В SPI для конфигурации полтора регистра !!!
- Ярослав555
- Поставщик валерьянки для Кота
- Сообщения: 2081
- Зарегистрирован: Пт май 31, 2013 17:14:38
- Откуда: Украина, Винница
Re: STM32 новичку в ARM что к чему
Кхм, ну вообще-то вся остальная конфигурация в мейн-файле кубом сделана, я наивно полагал что господа догадаются. Вот изначальный конфиг:
Разница в работе с двумя типами слейвов только в двух параметрах, которые я чекаю и если не совпадает - переинициализация.
Спойлер
Код: Выделить всё
static void MX_SPI1_Init(void)
{
/* USER CODE BEGIN SPI1_Init 0 */
/* USER CODE END SPI1_Init 0 */
/* USER CODE BEGIN SPI1_Init 1 */
/* USER CODE END SPI1_Init 1 */
/* SPI1 parameter configuration*/
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_LOW;
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_64;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 7;
hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
if (HAL_SPI_Init(&hspi1) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN SPI1_Init 2 */
/* USER CODE END SPI1_Init 2 */
}- VladislavS
- Собутыльник Кота
- Сообщения: 2562
- Зарегистрирован: Вт май 01, 2018 19:44:47
Re: STM32 новичку в ARM что к чему
За пределами активного CS всё делай.



