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

Кто любит RISC в жизни, заходим, не стесняемся.
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

Прошу прояснить некоторые моменты, касающиеся SPI в 103С8.
1. Модуль тактируется сразу после АНВ делителя или из другой точки где-то дальше?
2. SPI в 103-м 2 штуки, а регистры только в одном экземпляре. Мне пока нужен только один, но вдруг... Одновременно не работают?

Пока только это.
Спасибо!
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

1). Вот смотрите. В CMSIS мы включаем тактирование строкой RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;, соответственно SPI1 (именно он, так как второй тактируется от другой шины) тактируется от APB2.
2). Если нам нужно запустить SPI2, то мы пишем SPI2->CR1 |= SPI_CR1_SPE;, а если SPI1, то SPI1->CR1 |= SPI_CR1_SPE;. В эти моменты МК обращается к разным участкам своей памяти, поэтому и регистры у них разные.
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

1. Да, тут я что-то тормознул, сонный был, забыл где все это сидит. Да и два месяца перерыва в обучении к хорошему не приводят :)
2. Вот тут непонятно. Вернее понятно, что все это выявляется в виде подсказок, когда пишешь в среде, уже попробовал.
Но обычно в случае многочисленных модулей описание в ДШ дается в виде SPIx_CR1, SPIx_CR2, как с таймерами, например.
А в данном случае указано без "х". Потому и возник вопрос.

Спасибо большое за подсказки!
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

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

Сообщение isx »

Если без подсказок, то смотрите в даташите количество модулей spi именно в вашем камне, зетем смотрите в структуру памяти, а затем, по значееиям смещения адреса в RM высчитываете адрес интересующего регистра. Но ИМХО, в среде проще :) .
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

Китайская плата с 32F103, RTC.
Секунда длится 775 секунд при значении делителя 0x7FFF. Тактируется от LSE 32768 Гц.
Кварц?
Спойлер

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

void rtc_init(void)
{
  // RTC setup
  // Power interface clock enable
  RCC->APB1ENR |= RCC_APB1ENR_PWREN;
  // Backup interface clock enabled
  RCC->APB1ENR |= RCC_APB1ENR_BKPEN;
  // Access to RTC and Backup registers enabled
  PWR->CR |= PWR_CR_DBP;
  // RTC clock enabled
  RCC->BDCR |= RCC_BDCR_RTCEN;
  // LSE clock as RTC
  RCC->BDCR |= RCC_BDCR_RTCSEL_0;
  RCC->BDCR &= ~RCC_BDCR_RTCSEL_1;
/*************************** RTC reg conf *********************************/
  // 1. Wait until the last write operation on RTC registers terminated.
  while((RTC->CRL & RTC_CRL_RTOFF) == 0);
  // 2. Enter configuration mode
  RTC->CRL |= RTC_CRL_CNF;
  /* 3. Set prescalaer
  * fTR_CLK = fRTCCLK/(PRL[19:0]+1),
  * where fRTCCLK = input frequency, fTR_CLK - output frequency. */
  RTC->PRLH = 0;
  RTC->PRLL = 0x7FFF;   // 1Hz (1.0s period).
  // 4. Exit configuration mode.
  RTC->CRL &= ~RTC_CRL_CNF;
  // 5. Wait until write operation on RTC registers terminated.
  while((RTC->CRL & RTC_CRL_RTOFF) == 0);
/**********************************************************************/
  // Overflow interrupt enable
  // RTC->CRH |= RTC_CRH_OWIE;
  // Alarm interrupt enable
  RTC->CRH |= RTC_CRH_ALRIE;
  // Second interrupt enable
  RTC->CRH |= RTC_CRH_SECIE;
  // LSE enabled
  RCC->BDCR |= RCC_BDCR_LSEON;
  // Wait until LSE is ready
  while((RCC->BDCR & RCC_BDCR_LSERDY) == 0);
  NVIC_EnableIRQ(RTC_IRQn);
}
Добавлено after 38 minutes 33 seconds:
А вообще, если судить по отладке, время гуляет от 500 с копейками до 750 или около того.
Осциллографа дома нет, а логанализ уровни на ногах кварца не покажет.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Реклама
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

[uquote="Zhuk72",url="/forum/viewtopic.php?p=3127841#p3127841"]Китайская плата с 32F103, RTC.
Секунда длится 775 секунд при значении делителя 0x7FFF. Тактируется от LSE 32768 Гц.
Кварц?
en]Добавлено after 38 minutes 33 seconds:[/color][/size]
А вообще, если судить по отладке, время гуляет от 500 с копейками до 750 или около того.
Осциллографа дома нет, а логанализ уровни на ногах кварца не покажет.[/uquote]


Исправьте ересь сверху, наверняка mS а не секунды.
И далее - такой дичи у себя не наблюдал ни разу. Это ваши косяки.
Реклама
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

Секунды. Были бы миллисекунды, я бы искал косяки.
Даже если таймер в отладке Кайла глючит, светодиод в прерывании не врет: переключается каждые ~10-12 минут.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
dosikus
Друг Кота
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

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

Сообщение dosikus »

Zhuk72, давайте в понедельник. По́кажу вам инит RTC . А лучше создайте тему на форуме куда я вас приглошал..
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

Не было никакого приглашения. Во всяком случае здесь.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Galizin
Мучитель микросхем
Сообщения: 477
Зарегистрирован: Ср окт 15, 2008 09:33:03
Откуда: Воронеж

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

Сообщение Galizin »

Наблюдал неверный ход RTC на stm32f100 при тактировании от 32кГц кварца. Кварц подходит не всякий, а только тот что указан в даташите (см емкости).
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

Galizin писал(а):Наблюдал неверный ход RTC на stm32f100 при тактировании от 32кГц кварца.
Вы навели меня на мысль проверить работу часов с другими источниками тактов.
Методами условной компиляции вписал в ту же инициализацию тактирование от LSI и HSE/128.
C первым чуток больше секунды получилось, чем по расчету (ну так RM и говорит, что там может быть не 40, а от 30 до 60 кГц), ну это исправимо. А со вторым ровно секунда, кварц на 8.
Данные с анализатора:
Saleae.rar
(1.03 КБ) 216 скачиваний
А вот родной часовой не хочет.
Раньше он хотя бы проходил инициализацию, а сейчас она зависает на второй проверке while((RTC->CRL & RTC_CRL_RTOFF) == 0) после конфигурирования предделителя. Не знаю, что за каку поставили китайцы на эту плату. Придется перепаивать.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
amv2000
Опытный кот
Сообщения: 717
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

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

Сообщение amv2000 »

Здравствуйте! Если нетрудно подскажите: МК STM32F103C8T6
В инициализации SPI в библиотеке HAL такие строки

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

/* Configure : NSS management */
  WRITE_REG(hspi->Instance->CR2, (((hspi->Init.NSS >> 16) & SPI_CR2_SSOE) | hspi->Init.TIMode)); 
В описании SPI регистр не CR2 а CR1:

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

SPI1->CR1 |= SPI_CR1_SSM; //Программный режим NSS
Это ошибка в библиотеке или я чего то не знаю?
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

[uquote="amv2000",url="/forum/viewtopic.php?p=3128871#p3128871"]В описании SPI регистр не CR2 а CR1:

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

SPI1->CR1 |= SPI_CR1_SSM; //Программный режим NSS
[/uquote]
В RM именно CR1. На него и ориентируйтесь.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
atmicandr
Друг Кота
Сообщения: 6166
Зарегистрирован: Вт мар 09, 2010 09:29:27
Откуда: Свердловская область, г. Ирбит

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

Сообщение atmicandr »

Ребята, у меня вопрос по программатору для STM32: помогите выбрать гарантированно рабочий и проверенный временем J-Link. Ну в смысле поделитесь ссылочкой на али.
И ещё- насколько адекватен такой вариант: https://ru.aliexpress.com/item/Die-Jlin ... 01626edc74
"У принца Лимона всё наоборот: воры и убийцы у него во дворце, а в тюрьме сидят честные граждане" (с) Дж. Родари "Приключения Чипполино"
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

Чем ST-Link не подошел?
Аватара пользователя
atmicandr
Друг Кота
Сообщения: 6166
Зарегистрирован: Вт мар 09, 2010 09:29:27
Откуда: Свердловская область, г. Ирбит

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

Сообщение atmicandr »

Мурик, не то что бы не подошёл... У меня вообще нет никакого. Вот и хочу выбрать.
"У принца Лимона всё наоборот: воры и убийцы у него во дворце, а в тюрьме сидят честные граждане" (с) Дж. Родари "Приключения Чипполино"
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

Тогда для STM32 лучше взять ST-Link. При необходимости его можно перешить в J-Link.
Аватара пользователя
atmicandr
Друг Кота
Сообщения: 6166
Зарегистрирован: Вт мар 09, 2010 09:29:27
Откуда: Свердловская область, г. Ирбит

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

Сообщение atmicandr »

жаль что ответа не дождался... Сэкономил бы маленько. А так купил вот что: https://ru.aliexpress.com/item/1PC-Jlin ... -eub6yrrBy Как думаете, нормально будет?
"У принца Лимона всё наоборот: воры и убийцы у него во дворце, а в тюрьме сидят честные граждане" (с) Дж. Родари "Приключения Чипполино"
Аватара пользователя
Zhuk72
Сверлит текстолит когтями
Сообщения: 1231
Зарегистрирован: Ср янв 29, 2014 08:41:31
Откуда: Баку
Контактная информация:

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

Сообщение Zhuk72 »

Я брал этот. Рабочий, как и все они. Хотя читал, что у некоторых продавцов попадаются с перепутанными местами клок-дата пинами по сравнению с написанным на корпусе.
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.
Аватара пользователя
Мурик
Друг Кота
Сообщения: 3383
Зарегистрирован: Пн окт 11, 2010 19:00:08

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

Сообщение Мурик »

atmicandr писал(а):Как думаете, нормально будет?
Должно быть нормально. Но это китайская подделка не оригинал и есть вероятность того что форменная утилита от Segger заблокирует этот отладчик (примерно как было с не оригинальными FT232).
С ST-Link в этом плане проще.
atmicandr писал(а):Сэкономил бы маленько.
Маленько, это в 5 раз дешевле купить можно было. :) https://ru.aliexpress.com/item/FREE-SHI ... 75269.html
Ответить

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