Кто любит RISC в жизни, заходим, не стесняемся.
Ответить

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

Ср июн 07, 2017 23:02:46

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

Пока только это.
Спасибо!

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

Чт июн 08, 2017 01:27:25

1). Вот смотрите. В CMSIS мы включаем тактирование строкой RCC->APB2ENR |= RCC_APB2ENR_SPI1EN;, соответственно SPI1 (именно он, так как второй тактируется от другой шины) тактируется от APB2.
2). Если нам нужно запустить SPI2, то мы пишем SPI2->CR1 |= SPI_CR1_SPE;, а если SPI1, то SPI1->CR1 |= SPI_CR1_SPE;. В эти моменты МК обращается к разным участкам своей памяти, поэтому и регистры у них разные.

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

Чт июн 08, 2017 10:05:26

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

Спасибо большое за подсказки!

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

Чт июн 08, 2017 10:50:48

Если без подсказок, то смотрите в даташите количество модулей spi именно в вашем камне, зетем смотрите в структуру памяти, а затем, по значееиям смещения адреса в RM высчитываете адрес интересующего регистра. Но ИМХО, в среде проще :) .

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

Пт июн 16, 2017 18:59:15

Китайская плата с 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 или около того.
Осциллографа дома нет, а логанализ уровни на ногах кварца не покажет.

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

Пт июн 16, 2017 19:48:47

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



Исправьте ересь сверху, наверняка mS а не секунды.
И далее - такой дичи у себя не наблюдал ни разу. Это ваши косяки.

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

Пт июн 16, 2017 19:59:03

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

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

Пт июн 16, 2017 20:13:49

Zhuk72, давайте в понедельник. По́кажу вам инит RTC . А лучше создайте тему на форуме куда я вас приглошал..

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

Пт июн 16, 2017 21:01:26

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

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

Сб июн 17, 2017 15:18:40

Наблюдал неверный ход RTC на stm32f100 при тактировании от 32кГц кварца. Кварц подходит не всякий, а только тот что указан в даташите (см емкости).

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

Сб июн 17, 2017 22:16:32

Galizin писал(а):Наблюдал неверный ход RTC на stm32f100 при тактировании от 32кГц кварца.

Вы навели меня на мысль проверить работу часов с другими источниками тактов.
Методами условной компиляции вписал в ту же инициализацию тактирование от LSI и HSE/128.
C первым чуток больше секунды получилось, чем по расчету (ну так RM и говорит, что там может быть не 40, а от 30 до 60 кГц), ну это исправимо. А со вторым ровно секунда, кварц на 8.
Данные с анализатора:
Saleae.rar
(1.03 KiB) Скачиваний: 187


А вот родной часовой не хочет.
Раньше он хотя бы проходил инициализацию, а сейчас она зависает на второй проверке while((RTC->CRL & RTC_CRL_RTOFF) == 0) после конфигурирования предделителя. Не знаю, что за каку поставили китайцы на эту плату. Придется перепаивать.

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

Вс июн 18, 2017 19:29:04

Здравствуйте! Если нетрудно подскажите: МК 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

Это ошибка в библиотеке или я чего то не знаю?

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

Вс июн 18, 2017 20:12:53

В описании SPI регистр не CR2 а CR1:
Код:
SPI1->CR1 |= SPI_CR1_SSM; //Программный режим NSS

В RM именно CR1. На него и ориентируйтесь.

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

Ср июн 21, 2017 08:13:59

Ребята, у меня вопрос по программатору для STM32: помогите выбрать гарантированно рабочий и проверенный временем J-Link. Ну в смысле поделитесь ссылочкой на али.
И ещё- насколько адекватен такой вариант: https://ru.aliexpress.com/item/Die-Jlin ... 01626edc74

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

Ср июн 21, 2017 09:03:54

Чем ST-Link не подошел?

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

Ср июн 21, 2017 09:08:19

Мурик, не то что бы не подошёл... У меня вообще нет никакого. Вот и хочу выбрать.

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

Ср июн 21, 2017 10:16:24

Тогда для STM32 лучше взять ST-Link. При необходимости его можно перешить в J-Link.

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

Ср июн 21, 2017 10:20:40

жаль что ответа не дождался... Сэкономил бы маленько. А так купил вот что: https://ru.aliexpress.com/item/1PC-Jlin ... -eub6yrrBy Как думаете, нормально будет?

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

Ср июн 21, 2017 10:27:55

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

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

Ср июн 21, 2017 10:35:35

atmicandr писал(а):Как думаете, нормально будет?
Должно быть нормально. Но это китайская подделка не оригинал и есть вероятность того что форменная утилита от Segger заблокирует этот отладчик (примерно как было с не оригинальными FT232).
С ST-Link в этом плане проще.

atmicandr писал(а):Сэкономил бы маленько.
Маленько, это в 5 раз дешевле купить можно было. :) https://ru.aliexpress.com/item/FREE-SHI ... 75269.html
Ответить