Кто любит RISC в жизни, заходим, не стесняемся.
Ср июн 07, 2017 23:02:46
Прошу прояснить некоторые моменты, касающиеся SPI в 103С8.
1. Модуль тактируется сразу после АНВ делителя или из другой точки где-то дальше?
2. SPI в 103-м 2 штуки, а регистры только в одном экземпляре. Мне пока нужен только один, но вдруг... Одновременно не работают?
Пока только это.
Спасибо!
Чт июн 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;. В эти моменты МК обращается к разным участкам своей памяти, поэтому и регистры у них разные.
Чт июн 08, 2017 10:05:26
1. Да, тут я что-то тормознул, сонный был, забыл где все это сидит. Да и два месяца перерыва в обучении к хорошему не приводят
2. Вот тут непонятно. Вернее понятно, что все это выявляется в виде подсказок, когда пишешь в среде, уже попробовал.
Но обычно в случае многочисленных модулей описание в ДШ дается в виде SPIx_CR1, SPIx_CR2, как с таймерами, например.
А в данном случае указано без "х". Потому и возник вопрос.
Спасибо большое за подсказки!
Чт июн 08, 2017 10:50:48
Если без подсказок, то смотрите в даташите количество модулей spi именно в вашем камне, зетем смотрите в структуру памяти, а затем, по значееиям смещения адреса в RM высчитываете адрес интересующего регистра. Но ИМХО, в среде проще
.
Пт июн 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 или около того.
Осциллографа дома нет, а логанализ уровни на ногах кварца не покажет.
Пт июн 16, 2017 19:48:47
Китайская плата с 32F103, RTC.
Секунда длится 775 секунд при значении делителя 0x7FFF. Тактируется от LSE 32768 Гц.
Кварц?
en]Добавлено after 38 minutes 33 seconds:[/color][/size]
А вообще, если судить по отладке, время гуляет от 500 с копейками до 750 или около того.
Осциллографа дома нет, а логанализ уровни на ногах кварца не покажет.
Исправьте ересь сверху, наверняка mS а не секунды.
И далее - такой дичи у себя не наблюдал ни разу. Это ваши косяки.
Пт июн 16, 2017 19:59:03
Секунды. Были бы миллисекунды, я бы искал косяки.
Даже если таймер в отладке Кайла глючит, светодиод в прерывании не врет: переключается каждые ~10-12 минут.
Пт июн 16, 2017 20:13:49
Zhuk72, давайте в понедельник. По́кажу вам инит RTC . А лучше создайте тему на форуме куда я вас приглошал..
Пт июн 16, 2017 21:01:26
Не было никакого приглашения. Во всяком случае здесь.
Сб июн 17, 2017 15:18:40
Наблюдал неверный ход RTC на stm32f100 при тактировании от 32кГц кварца. Кварц подходит не всякий, а только тот что указан в даташите (см емкости).
Сб июн 17, 2017 22:16:32
Galizin писал(а):Наблюдал неверный ход RTC на stm32f100 при тактировании от 32кГц кварца.
Вы навели меня на мысль проверить работу часов с другими источниками тактов.
Методами условной компиляции вписал в ту же инициализацию тактирование от LSI и HSE/128.
C первым чуток больше секунды получилось, чем по расчету (ну так RM и говорит, что там может быть не 40, а от 30 до 60 кГц), ну это исправимо. А со вторым ровно секунда, кварц на 8.
Данные с анализатора:
А вот родной часовой не хочет.
Раньше он хотя бы проходил инициализацию, а сейчас она зависает на второй проверке
while((RTC->CRL & RTC_CRL_RTOFF) == 0) после конфигурирования предделителя. Не знаю, что за каку поставили китайцы на эту плату. Придется перепаивать.
Вс июн 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
Это ошибка в библиотеке или я чего то не знаю?
Вс июн 18, 2017 20:12:53
В описании SPI регистр не CR2 а CR1:
- Код:
SPI1->CR1 |= SPI_CR1_SSM; //Программный режим NSS
В RM именно CR1. На него и ориентируйтесь.
Ср июн 21, 2017 08:13:59
Ребята, у меня вопрос по программатору для STM32: помогите выбрать гарантированно рабочий и проверенный временем J-Link. Ну в смысле поделитесь ссылочкой на али.
И ещё- насколько адекватен такой вариант:
https://ru.aliexpress.com/item/Die-Jlin ... 01626edc74
Ср июн 21, 2017 09:03:54
Чем ST-Link не подошел?
Ср июн 21, 2017 09:08:19
Мурик, не то что бы не подошёл... У меня вообще нет никакого. Вот и хочу выбрать.
Ср июн 21, 2017 10:16:24
Тогда для STM32 лучше взять ST-Link. При необходимости его можно перешить в J-Link.
Ср июн 21, 2017 10:20:40
жаль что ответа не дождался... Сэкономил бы маленько. А так купил вот что:
https://ru.aliexpress.com/item/1PC-Jlin ... -eub6yrrBy Как думаете, нормально будет?
Ср июн 21, 2017 10:27:55
Я брал
этот. Рабочий, как и все они. Хотя читал, что у некоторых продавцов попадаются с перепутанными местами клок-дата пинами по сравнению с написанным на корпусе.
Ср июн 21, 2017 10:35:35
atmicandr писал(а):Как думаете, нормально будет?
Должно быть нормально. Но это
китайская подделка не оригинал и есть вероятность того что форменная утилита от Segger заблокирует этот отладчик (примерно как было с не оригинальными FT232).
С ST-Link в этом плане проще.
atmicandr писал(а):Сэкономил бы маленько.
Маленько, это в 5 раз дешевле купить можно было.
https://ru.aliexpress.com/item/FREE-SHI ... 75269.html
Powered by phpBB © phpBB Group.
phpBB Mobile / SEO by Artodia.