Связь микроконтроллера с микроконтроллером SPI - PullRequest
0 голосов
/ 27 мая 2010

Я немного читал и даже получил "главный" SPI, работающий на моем микроконтроллере. Вот мой вопрос, в основном, если мастер хочет инициализировать запись на ведомое устройство, которое мы записываем в SSPBUF, как мы контролируем, что подчиненное устройство отвечает? Таблица данных не кажется мне достаточно ясной для порядка событий в этом случае.

т.е. Ведущий помещает символ в SSPBUF, при этом модуль SPI инициирует отправку данных ведомому, во время сдвига ведомое устройство возвращает байт.

Что касается ведомой стороны, есть ли что-то, что говорит вам, что у вас есть входящие данные, и вы можете сначала написать в свой SSPBUF, ТОГДА принять данные?

OR

Вам нужно записать в SSPBUF первое «возвращаемое значение», которое вы хотите отправить обратно, прежде чем мастер сможет иметь возможность инициировать передачу?

Ответы [ 4 ]

1 голос
/ 03 июня 2010

Обычно, что я делал в прошлом с SPI, я посылаю 2 байта от ведущего к ведомому с минимальной задержкой между ними. Ведущий отправляет: «X Y», где «X» - это переменная, которую он хочет прочитать от ведомого устройства, а «Y» - это просто фиктивная переменная, которая используется для отключения ответа от ведомого устройства. В то же время ведомое устройство получает прерывание, когда оно получает «X», ищет, какое значение поместить в свой выходной буфер, и когда оно получает «Y», ответ на его пакет синхронизируется с ведущим устройством.

1 голос
/ 03 июня 2010

Вы хотите использовать прерывание на линии GPIO, которое обрабатывает выбор чипа вашего ведомого. Убедитесь, что ведомое устройство имеет достаточно времени для обработки этого прерывания и загрузки регистра исходящих данных до запуска часов.

Некоторые модули SPI исключают использование GPIO - вам нужно проверить, имеет ли ваш модуль SPI функцию для обработки выбора микросхемы, или включить модуль только на основе активности GPIO.

0 голосов
/ 24 сентября 2017

Сначала необходимо подтвердить, что ваш ведущий и ведомый имеют общие значения параметров, таких как режим SPI и размер данных. Режим SPI определяет полярность холостого хода линии синхронизации SPI и фронта выборки данных, будет ли он первым или вторым. Размер данных покажет, является ли он 8-битным или 16-битным или может отличаться в зависимости от чипа.

Теперь, когда мастер выбирает подчиненное устройство через микросхему / ведомый вывод выбора, ведомое становится активным и ожидает изменения часов своего состояния, как только состояние смены часов подчиненное устройство снова ждет линии синхронизации для 1-го или 2-го фронта в зависимости от выбора режима SPI. Если ведомое подчиненное устройство 1-го фронта выбирает данные линии MOSI и помещает его в свой внутренний сдвиговый регистр, если ведомое устройство также должно передавать данные, оно должно сохранять данные на линии MISO до выбранного фронта тактового сигнала. Этот процесс будет повторяться до 8 или 16 раз в зависимости от размера данных. По завершении, ведущий и ведомый могут генерировать прерывания для своего ЦП для сбора данных (в случае микроконтроллера).

0 голосов
/ 28 мая 2010

Каким бы ни был ваш микроконтроллер, три, вероятно, будет ISR, связанным с получением данных SPI, и регистром, в котором полученные данные могут быть доступны и скопированы в локальную переменную.

...