SPI

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

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

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

Re: SPI

Сообщение petrovitch » 10 сен 2019, 13:11

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

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

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

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 » 10 сен 2019, 14:16

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

Несколько смущает 1,8В на линии TX ведомого - может быть какая-то электрическая проблема?
Есть ли возможность разорвать эту линию или вывести TX на другую свободную ножку?

blessedt
Сообщения: 34
Зарегистрирован: 25 фев 2019, 00:09
Предприятие: АОКБ Импульс

Re: SPI

Сообщение blessedt » 04 дек 2019, 20:09

Доброго времени суток!
Есть ли возможность передать по SPI в режиме Master три байта данных в одной посылке (на время передачи всех трех байтов FSS остается 0)? Разумеется, интересует хардварное управление FSS, ибо не хочется тратить прерывание на программное переключение FSS.
Нужно для работы с 1273НА015.
Заранее благодарен,
Дмитрий Тарасов.

blessedt
Сообщения: 34
Зарегистрирован: 25 фев 2019, 00:09
Предприятие: АОКБ Импульс

Re: SPI

Сообщение blessedt » 04 дек 2019, 23:49

Заодно родился следующий вопрос. Хотел реализовать запихивание в буфер передатчика трех байт данных, включение передачи, а при опустошении буфера вызывать прерывание и в нем переводить FSS в 1. В итоге FSS переводится в 1 быстрее, чем выдается даже 1 байт. Кто бы подсказал, что за чудо чудное? ) Отладка показывает, что при записи данных в буфер, флаг пустого буфера не снимается.

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

Re: SPI

Сообщение bkolbov » 05 дек 2019, 12:53

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 » 05 дек 2019, 14:44

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

Спасибо большое, Богдан, Вы, как всегда, очень выручаете )

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

Re: SPI

Сообщение bkolbov » 05 дек 2019, 14:58

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

alen_kray
Сообщения: 7
Зарегистрирован: 13 июл 2017, 15:24
Предприятие: temp_

Re: SPI

Сообщение alen_kray » 23 сен 2021, 13:34

Добрый день. Вопрос следующий. Отзовитесь, на какой максимальной скорости удалось работать с SPI на железе, и с какими приемопередатчиками?

kenny5660
Сообщения: 2
Зарегистрирован: 27 сен 2021, 05:35
Предприятие: Элемент

Re: SPI

Сообщение kenny5660 » 27 сен 2021, 05:42

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 » 07 окт 2021, 15:19

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

Ответить

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

Пользователи онлайн

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость