Какие контакты можно использовать для выбора микросхемы (CS, CC) на Arduino Nano Every?

Я проверил технические характеристики нано, но не нашел никакой информации о нем. Попытался установить его на контакт 26 (цифровой выход)

, 👍1

Обсуждение

у Nano Every нет контакта 26, @Juraj


1 ответ


2

В следующем ответе предполагается, что Arduino является ведущим устройством.

Для этого можно использовать любой вывод (по крайней мере, любой вывод GPIO).

Несколько устройств SPI могут быть подключены к периферийному устройству SPI на Arduino (в принципе).

Каждое устройство SPI должно иметь собственный вывод CS/CC, что является обязательным при использовании нескольких устройств SPI.

По этой причине нет единого вывода, который SPI может определить для использования в качестве вывода CS/CC. Однако он должен выдавать значение GND или VCC, поэтому вывод CS/CC обычно следует конфигурировать как вывод цифрового входа (как ведущий) для каждого подчиненного устройства. (См. также примечание КИЕВ); в качестве ведомого контакт CS/CC должен быть цифровым выходным контактом.

Для других контактов (MOSI, MISO, CLK) Arduino использует фиксированный набор контактов, поскольку все устройства SPI будут подключены к этим контактам.

Таким образом, вывод CS можно настраивать, а другие выводы spi фиксированы.

,

Я не знаком с чипом на этой плате, но если он похож на другие платы на основе AVR, «основной» вывод CS должен быть установлен на выход (вывод 10 на Uno - понятия не имею, что он будет на этой плате). В противном случае SPI не будет работать., @Majenko

Однако не забывайте о выводе SS (выбор ведомого) на Arduino на базе AVR. Он должен быть установлен как выход (или, по крайней мере, использоваться как выход). В противном случае низкий уровень на этом выводе приводит к переключению SPI в ведомый режим. Даже если он не подключен (в качестве входа), он может быть источником странных взаимоблокировок в шумной среде., @KIIV

@Majenko Я думал, что контакт 10 был основным только из-за того, что щиты используют этот контакт для упрощения макета. На самом деле его всегда можно установить на любой контакт (GPIO)., @Michel Keijzers

@KIIV Я упоминаю об этом: таким образом, контакт CS / CC обычно должен быть настроен как цифровой выходной контакт ... нетипичной ситуацией может быть подключение его к GND или VCC (забыл, что именно) в случае одного устройства SPI., @Michel Keijzers

Периферийный модуль SPI в микросхеме имеет два режима работы: один — ведущий, а другой — подчиненный. Выбор режима зависит от настройки DDR основного вывода CS. Это глупый способ сделать это, но это то, что решили сделать дизайнеры Atmel..., @Majenko

@MichelKeijzers Я думаю, что это общее название сигнала. В любом случае /SS активен на низком уровне, поэтому в качестве входа его следует удерживать на Vcc. SPI поддерживает режим с несколькими мастерами, и этот контакт используется для его архивирования (единственная возможность отключить его - использовать его в качестве выхода), @KIIV

@Majenko Спасибо, что упомянули об этом (до сих пор я всегда использовал Arduino в качестве мастера, я добавил его в свой вопрос)., @Michel Keijzers

@KIIV, вы правы, я должен адаптировать это в своем ответе., @Michel Keijzers

@Majenko, это не ATmega328 или 2560. Это 4809. У него есть флаг в регистре управления для режима ведущий / подчиненный, и этот флаг устанавливается библиотекой SPI. вывод SS можно использовать в качестве входа в ведущем режиме SPI. Периферийные устройства 4809 больше похожи на периферийные устройства SAMD, чем на классические периферийные устройства ATmega MCU., @Juraj

Вау, есть плата под названием Arduino Nano Every. (Я думал, что это просто означает «на каждом контакте?»). В любом случае, возможность входа /SS для изменения режима с ведущего на ведомый остается, но, по крайней мере, ее можно отключить, установив бит SSD в регистре SPIn.CTRLB. Это во многом зависит от библиотеки SPI., @KIIV

@KIIV, https://github.com/arduino/ArduinoCore-megaavr/blob/d2d1a2a7bc4654b907427cfb8d1003134fa6b340/libraries/SPI/src/SPI.cpp#L52, @Juraj

«Однако он должен давать значение GND или VCC, поэтому вывод CS/CC обычно должен быть сконфигурирован как вывод цифрового входа (как ведущий) для каждого ведомого. (См. также примечание KIIV); в качестве ведомого вывод CS/CC должен быть цифровым выходным контактом». Я этого не понимаю. Выводы CS являются выходами., @Juraj