03.12.2019, 00:46
|
|
Вид на жительство
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
eddy, SPI_CR2_SSOE - попробуй. Я тоже мучился, что то связано с этим было. Пока не установил, кажется, не запустилось. Сейчас уже не совсем в адеквате, что бы память напрягать.
|
|
|
|
03.12.2019, 00:48
|
|
Вид на жительство
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Это же 103... Этим все сказано. Лучше 030 или 405. Гораздо приятней в пользовании.
|
|
|
|
03.12.2019, 00:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,637
Сказал спасибо: 116
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от sat_art
|
Это же 103... Этим все сказано.
|
Ну так на 030 и 042 у меня SPI нормально работал. А сейчас надо к 103 прилепить...
Сообщение от sat_art
|
SPI_CR2_SSOE
|
Это как может быть связано? Я вообще не использую SS…
Сообщение от индюк
|
настрой порты пины такты афио
|
Да при чем здесь AFIO, если мне ремап не нужен, а SWDIO/JTAG я не отключаю, т.к. прошиваю через st-link?
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
03.12.2019, 09:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 12.02.2013
Сообщений: 1,038
Сказал спасибо: 43
Сказали Спасибо 273 раз(а) в 214 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Вот кусок рабочего кода (делал давным давно- выводил по ДМА на графический дисплей Nokia5110 видеообласть памяти)
RCC-›APB2ENR |=RCC_APB2ENR_SPI1EN;
SPI1-›CR1 |= SPI_CR1_BIDIMODE | SPI_CR1_BIDIOE |
SPI_CR1_BR_0 | SPI_CR1_BR_2 |
SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_MSTR ;
//SPI1-›CR2 |=
SPI1-›CR1 |= SPI_CR1_SPE; // enable SPI;
/////////////////////////// DMA CNF PART /////////////////////////////////
RCC -› AHBENR |= RCC_AHBENR_DMA1EN;
DMA1_Channel3 -›CCR |= DMA_CCR3_DIR | DMA_CCR3_MINC ; // from memory and Mem INC enable
// DMA1_Channel3 -›CCR |= DMA_CCR3_CIRC ;
DMA1_Channel3 -›CMAR = (uint32_t)&LCD_BUFF[0];
DMA1_Channel3 -›CNDTR = 84*6;
DMA1_Channel3 -›CPAR = (uint32_t) &(SPI1-›DR);
DMA1_Channel3-›CCR |= DMA_CCR3_EN;
SPI1-›CR2 |= SPI_CR2_TXDMAEN;
|
|
|
|
03.12.2019, 13:32
|
|
Вид на жительство
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от eddy
|
Это как может быть связано? Я вообще не использую SS
|
Я тоже не использовал. Но как связано не знаю. Помню что немного охренел тогда.
|
|
|
|
03.12.2019, 14:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,637
Сказал спасибо: 116
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от sat_art
|
Помню что немного охренел тогда.
|
Ну, надо значит будет вечером эррату почитать. В общем, как сделаю "голый" SPI (без всей прочей обвязки), отпишусь. Возможно, где-то у меня был косяк, из-за которого SPI не работает, либо действительно баг в МК и нужно включать SS.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
03.12.2019, 19:36
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
В "передаче данных" накосяпорено. Сначала сбрасываем флаги прерываний канала DMA, которые могли остаться от пердыдущ. работы. Теперь настраиваем канал DMA, затем включаем в SPI запросы DMA TX, затем включаем канал DMA (тут можно и наоборот), и только потом включаем SPI.
NSS в режиме автоматического управления переводится в OD-режим и требует внешнего подтяг.резист.
|
|
|
|
03.12.2019, 21:17
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,637
Сказал спасибо: 116
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Итак, действительно, косяк был не в отсутствии SPI_CR2_SSOE, а в отсутствии SPI_CR1_SSM | SPI_CR1_SSI !!!
Я, честно говоря, охренел: зачем SPI в режиме master нужно указывать, что у него SS софтово управляется? Какое ему вообще дело до SS, если он - мастер? Или это для мультимастера важно и мастер все равно должен обращать на это внимание?
Вот работающий код. И тупая передача по байту работает, и при помощи DMA.
Для передачи посредством DMA нужно сделать лишь это:
Код:
|
DMA_SPI_Channel-›CCR &=~ DMA_CCR_EN;
DMA_SPI_Channel-›CMAR = (uint32_t)buf;
DMA_SPI_Channel-›CNDTR = len;
DMA_SPI_Channel-›CCR |= DMA_CCR_EN; |
Больше никаких регистров трогать не надо - они во время инита уже заполнены. Если буфер для передачи и его длина - константы, а меняется лишь содержимое буфера, то вообще нужно лишь заново запустить передачу, т.е. лишь последняя строка нужна.
Первую строку тоже можно нафиг выкинуть, если добавить проверку: не ведется ли передача по DMA в данный момент. По-хорошему, надо либо вернуть юзеру ошибку, либо подождать. Но не сбрасывать предыдущую передачу.
__________________
Союз Советских Социалистических Округов Северной Америки
Последний раз редактировалось eddy; 03.12.2019 в 21:19.
|
|
|
|
03.12.2019, 21:20
|
|
Вид на жительство
Регистрация: 27.11.2007
Сообщений: 429
Сказал спасибо: 19
Сказали Спасибо 39 раз(а) в 30 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от eddy
|
Итак, действительно, косяк был не в отсутствии SPI_CR2_SSOE, а в отсутствии SPI_CR1_SSM | SPI_CR1_SSI
|
А наоборот не пробовал?
|
|
|
|
03.12.2019, 21:45
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,637
Сказал спасибо: 116
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Пробовал - первым делом выставил SPI_CR2_SSOE. Не работает.
Почему в errata не написано про SPI_CR1_SSM | SPI_CR1_SSI в режиме master — непонятно! Либо я действительно хреново читал даташит и это нужно даже в мастере для мультимастера...
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:44.
|
|