STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Re: STM32 новичку в ARM что к чему

Сообщение Ярослав555 »

[uquote="Reflector",url="/forum/viewtopic.php?p=3525728#p3525728"]а конденсатор на NRST есть? Резистор нагрузочный там слабенький, включение PLL добавляет помех...[/uquote]
Небыло. Добавил 100нФ и подтянул отдельным резистором 1,5к к +3,3. Не помогло. Ладно, не буду тратить Ваше время - без осцилографа дальше делать нечего. К сожалению к нему я доберусь лишь на выходные.
Реклама
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Re: STM32 новичку в ARM что к чему

Сообщение Ярослав555 »

:facepalm: блиииин, здесь VDDA в воздухе висит. ща сделаю перемычку куда-нибудь.

Добавлено after 11 minutes 4 seconds:
Все, работает как часы
Реклама
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

Гы! Знач теперь я угадал. :-)

to Reflector: с незапаянной ногой VDDA мк нормально работает, пока ADC или PLL не запустишь. И пофиг ему на резет.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32 новичку в ARM что к чему

Сообщение Reflector »

[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.
Реклама
Эиком - электронные компоненты и радиодетали
a5021
Друг Кота
Сообщения: 6452
Зарегистрирован: Пт сен 13, 2013 13:11:31

Re: STM32 новичку в ARM что к чему

Сообщение a5021 »

[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. Неверующим предлагается проверить сей факт экспериментально и успокоиться.
Реклама
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Re: STM32 новичку в ARM что к чему

Сообщение Ярослав555 »

[uquote="dosikus",url="/forum/viewtopic.php?p=3525830#p3525830"]Прототип из г. и палок?[/uquote]
да нет, фабричное исполнение. Прямо в проекте VDDA в воздухе висит. Наш косяк.
Реклама
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32 новичку в ARM что к чему

Сообщение Reflector »

[uquote="a5021",url="/forum/viewtopic.php?p=3525884#p3525884"]Еще раз повторяю тем, до кого медленно доходит: без подачи VDDA F0 стартует и более-менее нормально работает, если не пытаться дергать периферию, питающуюся от VDDA. Неверующим предлагается проверить сей факт экспериментально и успокоиться.[/uquote]
Глупый спор. VDDA нужен, об этом сказано в документации, у меня лично были без него периодические проблемы со стартом, а отрывать VDDA ради проверки я, естественно, не буду, т.к. он все равно должен быть всегда подключен.
Reflector
Поставщик валерьянки для Кота
Сообщения: 2089
Зарегистрирован: Вс июн 19, 2016 09:32:03

Re: STM32 новичку в ARM что к чему

Сообщение Reflector »

[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-х В...
Аватара пользователя
RusikOk
Нашел транзистор. Понюхал.
Сообщения: 197
Зарегистрирован: Пн янв 24, 2011 01:51:48
Откуда: Украина, Киев
Контактная информация:

Re: STM32 новичку в ARM что к чему

Сообщение RusikOk »

в режиме отладки на PB3 у STM32F103 всегда стоит 1 хотя SWO не используется. и в кубе соответствующие настройки стоят.
после перезагрузки кнопкой вывод работает как и полагается. где об этом почитать или как исправить ситуацию?
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: STM32 новичку в ARM что к чему

Сообщение uldemir »

Расскажите, пожалуйста, в чем может быть проблема с бэкап регистрами? Кристалл stm32f103c8 - сидящий на синей таблетке, которую купил в Китае на ebay. Всё прекрасно работает с регистрами от BKP->DR1 до BKP->DR10. Но тут мне потребовалось еще пару регистров попользовать. В RM0008 написано, что их от 1 до 42.

Отбой тревоги! Оказывается, у этого камня, действительно только 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;
не даёт никакого эффекта - как был 0 в обоих регистрах - так и остаётся.

Первый, оказывается, берётся из каталога проекта: Drivers\CMSIS\Device\ST\STM32F1xx\Include\stm32f103xb.h,
второй: "C:\Keil_v5\ARM\Pack\Keil\STM32F1xx_DFP\2.1.0\Device\Include\stm32f10x.h"
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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 что к чему

Сообщение Ярослав555 »

После инита SPI линия данных не выставляется в высокий уровень, в соотв. с настройками. А после реинита на первом байте наблюдается передергивание клока/данных, от чего портится посылка. Знакомый говорит писал не один репорт в ST и тишина. Говорит лечится выводом в интерфейс 0xFF при поднятом CS слейва. Все так, или есть секрет?
СпойлерИзображение
Вложения
spi.jpg
(86.54 КБ) 350 скачиваний
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

Код в хрустальном шаре?

И почему линия данных должна поменять состояние до передачи?

ЗЫ: все секреты в RM.
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Re: STM32 новичку в ARM что к чему

Сообщение Ярослав555 »

[uquote="VladislavS",url="/forum/viewtopic.php?p=3536647#p3536647"]Код в хрустальном шаре?[/uquote]

Код: Выделить всё

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;
}
когда в if не заходит (прежде никто другой не менял настройки), то все ок. А если пришлось переконфигурировать то на первом байте наблюдаю передергивания как на картинке.
Последний раз редактировалось Ярослав555 Пт дек 28, 2018 08:43:59, всего редактировалось 3 раза.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

Ты внутрь HAL_SPI_Init() то заглядывал ???
Спойлервеликая отечественная война..
партизан выбежал на ж.д. устанавливает взрывчатку под рельсы.начинает чиркать спички о коробок, чтобы поджечь шнур . и тут немецкий патруль. поймал его.спрашивает:
-ты че тут делаешь
-да вот,сами видете,пытаюсь ж.д. взорвать...
-а спички у тя производства чьего?
-HAL... (в оригинале Балабаново)
немцы уходя:
-ну давай,давай...
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Re: STM32 новичку в ARM что к чему

Сообщение Ярослав555 »

[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:
только на работу пришел, жду синхронизации файлов, а то попробовал бы уже.
Аватара пользователя
VladislavS
Собутыльник Кота
Сообщения: 2562
Зарегистрирован: Вт май 01, 2018 19:44:47

Re: STM32 новичку в ARM что к чему

Сообщение VladislavS »

Ты под спойлер то заглядывал? В SPI для конфигурации полтора регистра !!!
spi_regs.png
(69.2 КБ) 493 скачивания
Аватара пользователя
Ярослав555
Поставщик валерьянки для Кота
Сообщения: 2081
Зарегистрирован: Пт май 31, 2013 17:14:38
Откуда: Украина, Винница

Re: STM32 новичку в ARM что к чему

Сообщение Ярослав555 »

Кхм, ну вообще-то вся остальная конфигурация в мейн-файле кубом сделана, я наивно полагал что господа догадаются. Вот изначальный конфиг:
Спойлер

Код: Выделить всё

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 что к чему

Сообщение VladislavS »

За пределами активного CS всё делай.
Ответить

Вернуться в «ARM»