Конфигурация Arduino Zero для Arduino Zero SPI

Я планирую заменить два ATSAMD21 на загрузчик Zero или Nano 33 в соединении SPI. Рациональным для этого является то, что мне нужно 30-контактное расширение GPIO, а использование 2 mcp23s17 занимает довольно много места, а также немного дороже. Поскольку у ATSAMD21 теоретически 37 GPIO, почему бы не использовать это. у меня еще нет нулевой платы, я хотел бы знать, если:

Легко ли это сделать, просто подключив соответствующие контакты?

Если это так, я прочитал в документацию Arduino SPI, что ноль не имеет выбора ведомого для ведущего. и Slave, значит ли это, что я могу использовать все, что захочу? И просто закодируйте его, чтобы обнаружить этот пин

Способна ли встроенная библиотека SPI работать с чуть более высокой тактовой частотой нуля?

, 👍0


1 ответ


2

Ноль имеет то же количество контактов ввода-вывода, что и UNO, и они используют одинаковую компоновку заголовка. Поэтому я считаю, что вы хотите использовать чипы на самодельной печатной плате. (?)

Исходя из этого, я думаю, что второй SAMD21 — не лучшее решение.

Они легко подключаются, так как используют одинаковое напряжение. Я использовал библиотеку SPI на нуле, так что да, я думаю, что ее можно запрограммировать с помощью методов Arduino. И вы можете использовать контакт CS по вашему выбору. Библиотека SPI использует заголовочные файлы Arduino для выбранной платформы. Так что тактовая частота MCU не должна быть проблемой.

Но вы должны запрограммировать ведущий и ведомый и поддерживать эту прошивку. MCP23(s/0)17 готов к использованию.

Два MCP23S17 (корпуса QFN) не занимают так много места.

SAMD21 способен управлять макс. 3,6 В; MCP может работать с 5,5 В. (Но если вы хотите использовать 5 В, вам нужно сдвинуть уровень соединения между нулем Arduino и MCP.

И добавить еще два MCP23S17 намного проще, чем добавить третий SAMD21, когда даже старую прошивку нужно перепрограммировать.

Модуль MCP23S17 может подавать и потреблять 25 мА на каждом выводе.

SAMD21 может обрабатывать ток источника 14 мА и ток приемника 19,5 мА на кластер ввода-вывода (существует 6 кластеров, каждый из которых имеет от 2 до 16 контактов).

С другой стороны, если вы уверены, что вам не нужно больше 3,6 вольт и ~1 мА на контакт, а количество дополнительных контактов ввода-вывода достаточно, нет причин не использовать второй SAMD21.

Если вам нужны емкостные сенсорные контакты, больше портов I2S или другие возможности SAMD21, то второй SAMD21 — даже лучший выбор.

Вы видели Arduino DUE? Он имеет все функции нуля и гораздо больше контактов ввода-вывода (54), а также 12 аналоговых входов и 2 реальных аналоговых выхода.

,

Правильно, я буду использовать его на пользовательской печатной плате. Я все еще нахожусь на этапе планирования и оцениваю свои варианты, мне очень нравится ваше предложение Arduino DUE, это сделает все намного проще, у него даже более высокая тактовая частота! Проверим использование чипа и насколько сложны его минимальные компоненты, @Jack

Если у вас есть опыт использования DUE. Вы знаете, для чего предназначен микроконтроллер ATMEGA16U2? и можно ли его удалить?, @Jack

DUE имеет два порта USB. Собственный порт напрямую добавляется к контроллеру SAMD, а порт программирования подключается к микросхеме U2. Микросхема U2 отвечает за программирование через последовательный порт, а также за программирование ICSP через заголовок ICSP1. Также можно запрограммировать DUE через родной порт. SAMD DUE может быть запрограммирован только в том случае, если перед этим была стерта FLASH. А загрузчик на чипе U2 делает это за вас автоматически. Если вы используете родной порт, вам нужно стереть флэш-память., @Peter Paul Kiefer

Привет, я добился некоторого прогресса с момента моего последнего ответа и хотел бы поговорить об этом подробнее в чате., @Jack

к сожалению, мне трудно создать его, я просто буду отвечать здесь, пока не появится всплывающее окно. О том, что при стирании флэш-памяти в документации по arduino due вы должны открывать и закрывать последовательный порт со скоростью 1200 бит/с, как это может быть просто достигнуто на аппаратном уровне?, @Jack