Небыло. Добавил 100нФ и подтянул отдельным резистором 1,5к к +3,3. Не помогло. Ладно, не буду тратить Ваше время - без осцилографа дальше делать нечего. К сожалению к нему я доберусь лишь на выходные.
STM32 новичку в ARM что к чему
[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:
Все, работает как часы
- Сообщения: 6452
- Зарегистрирован: Пт сен 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.
- Сообщения: 6452
- Зарегистрирован: Пт сен 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"
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
- Сообщения: 3385
- Зарегистрирован: Пн окт 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 КБ) 353 скачивания
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Код в хрустальном шаре?
И почему линия данных должна поменять состояние до передачи?
ЗЫ: все секреты в RM.
И почему линия данных должна поменять состояние до передачи?
ЗЫ: все секреты в RM.
[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 раза.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Ты внутрь HAL_SPI_Init() то заглядывал ???
партизан выбежал на ж.д. устанавливает взрывчатку под рельсы.начинает чиркать спички о коробок, чтобы поджечь шнур . и тут немецкий патруль. поймал его.спрашивает:
-ты че тут делаешь
-да вот,сами видете,пытаюсь ж.д. взорвать...
-а спички у тя производства чьего?
-HAL... (в оригинале Балабаново)
немцы уходя:
-ну давай,давай...
Спойлер
великая отечественная война..партизан выбежал на ж.д. устанавливает взрывчатку под рельсы.начинает чиркать спички о коробок, чтобы поджечь шнур . и тут немецкий патруль. поймал его.спрашивает:
-ты че тут делаешь
-да вот,сами видете,пытаюсь ж.д. взорвать...
-а спички у тя производства чьего?
-HAL... (в оригинале Балабаново)
немцы уходя:
-ну давай,давай...
[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:
только на работу пришел, жду синхронизации файлов, а то попробовал бы уже.
- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47
Ты под спойлер то заглядывал? В SPI для конфигурации полтора регистра !!!
Кхм, ну вообще-то вся остальная конфигурация в мейн-файле кубом сделана, я наивно полагал что господа догадаются. Вот изначальный конфиг:
Разница в работе с двумя типами слейвов только в двух параметрах, которые я чекаю и если не совпадает - переинициализация.
Спойлер
Код: Выделить всё
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 */
}- Сообщения: 2567
- Зарегистрирован: Вт май 01, 2018 19:44:47



