SPI

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

petrovitch
Сообщения: 106
Зарегистрирован: 15 фев 2017, 19:07

Re: SPI

Сообщение petrovitch »

Т.е. вы в ведомом записали данные в буфер. Посылаете мастером пустую посылку, и видите что от ведомого записанные данные не передаются, а линия просто висит в одном состоянии?
Именно так! Только посылаю от мастера содержательную посылку из четырёх слов.

Вот код записи в буфер ведомого:

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

if (NT_SPI2->SPI_SR_bit.TFE == 1) {
			i=0;
			while(i != 4) {
				NT_SPI2->SPI_DR = p->Ohmega_in[i];
				i++;
			}
		}
bkolbov
Сообщения: 248
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: SPI

Сообщение bkolbov »

Код вполне допустимый.

Несколько смущает 1,8В на линии TX ведомого - может быть какая-то электрическая проблема?
Есть ли возможность разорвать эту линию или вывести TX на другую свободную ножку?
blessedt
Сообщения: 34
Зарегистрирован: 25 фев 2019, 00:09
Предприятие: АОКБ Импульс

Re: SPI

Сообщение blessedt »

Доброго времени суток!
Есть ли возможность передать по SPI в режиме Master три байта данных в одной посылке (на время передачи всех трех байтов FSS остается 0)? Разумеется, интересует хардварное управление FSS, ибо не хочется тратить прерывание на программное переключение FSS.
Нужно для работы с 1273НА015.
Заранее благодарен,
Дмитрий Тарасов.
blessedt
Сообщения: 34
Зарегистрирован: 25 фев 2019, 00:09
Предприятие: АОКБ Импульс

Re: SPI

Сообщение blessedt »

Заодно родился следующий вопрос. Хотел реализовать запихивание в буфер передатчика трех байт данных, включение передачи, а при опустошении буфера вызывать прерывание и в нем переводить FSS в 1. В итоге FSS переводится в 1 быстрее, чем выдается даже 1 байт. Кто бы подсказал, что за чудо чудное? ) Отладка показывает, что при записи данных в буфер, флаг пустого буфера не снимается.
bkolbov
Сообщения: 248
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: SPI

Сообщение bkolbov »

blessedt писал(а): 04 дек 2019, 20:09 Доброго времени суток!
Есть ли возможность передать по SPI в режиме Master три байта данных в одной посылке (на время передачи всех трех байтов FSS остается 0)? Разумеется, интересует хардварное управление FSS, ибо не хочется тратить прерывание на программное переключение FSS.
Нужно для работы с 1273НА015.
Заранее благодарен,
Дмитрий Тарасов.
Добрый день! Если при CR0.FRF=0, установить CR0.SPH=1, то FSS будет в состоянии логического нуля до опустошения буфера.
Заодно родился следующий вопрос. Хотел реализовать запихивание в буфер передатчика трех байт данных, включение передачи, а при опустошении буфера вызывать прерывание и в нем переводить FSS в 1. В итоге FSS переводится в 1 быстрее, чем выдается даже 1 байт. Кто бы подсказал, что за чудо чудное? ) Отладка показывает, что при записи данных в буфер, флаг пустого буфера не снимается.
Но ведь у SPI нет прерывания по опустошению передающего буфера. А существующее прерывание по опустошению буфера наполовину будет вызываться всякий раз когда заполненность буфера меньше либо равно половине емкости (4 кадра).
blessedt
Сообщения: 34
Зарегистрирован: 25 фев 2019, 00:09
Предприятие: АОКБ Импульс

Re: SPI

Сообщение blessedt »

bkolbov писал(а): 05 дек 2019, 12:53 Если при CR0.FRF=0, установить CR0.SPH=1, то FSS будет в состоянии логического нуля до опустошения буфера.
Была такая мысль ) Но лень, увы, не позволила поэкспериментировать, а РП на этот вопрос ответа не содержит...

Спасибо большое, Богдан, Вы, как всегда, очень выручаете )
bkolbov
Сообщения: 248
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: SPI

Сообщение bkolbov »

На самом деле, ответ на этот вопрос как раз в РП - 16.2 подраздел, пункт "Интерфейс SPI":
В режиме непрерывной передачи данных при условии SPH = 1 низкий уровень
сигнала на линии SPI_FSS не блокирует запись в сдвиговый регистр. Поэтому линия
SPI_FSS может оставаться в состоянии нуля в течение передачи всех кадров и переведена
в состояние логической единицы только по окончании передачи.
Ну а лень - лень надо бороть :)
alen_kray
Сообщения: 7
Зарегистрирован: 13 июл 2017, 15:24
Предприятие: temp_

Re: SPI

Сообщение alen_kray »

Добрый день. Вопрос следующий. Отзовитесь, на какой максимальной скорости удалось работать с SPI на железе, и с какими приемопередатчиками?
kenny5660
Сообщения: 2
Зарегистрирован: 27 сен 2021, 05:35
Предприятие: Элемент

Re: SPI

Сообщение kenny5660 »

alen_kray писал(а): 23 сен 2021, 13:34 Добрый день. Вопрос следующий. Отзовитесь, на какой максимальной скорости удалось работать с SPI на железе, и с какими приемопередатчиками?
В данный момент стабильно работают с esp32 по spi на частоте 10Мгц, частоту выше 10Мгц esp32 в slave режиме уже не в состоянии принять. к1921вк по документации может 50 Мгц в мастер режиме и 8 Мгц в Slave
alen_kray
Сообщения: 7
Зарегистрирован: 13 июл 2017, 15:24
Предприятие: temp_

Re: SPI

Сообщение alen_kray »

Интересует именно spi к1921. Какую максимальную скорость удалось получить на практике.
Ответить

Вернуться в «32-разрядные микроконтроллеры»