Более 4 MCP23S17 на 1 шине SPI
Я хотел бы использовать 7 MCP23S17 в качестве выходных расширителей на одной шине SPI. Каждая микросхема имеет свой собственный адрес от 0 до 6. Первый MCP23S17 может быть написан без проблем. Второй чип не работал должным образом. Вывод CS MCP23S17 установлен так же, как и на всех остальных 4 микросхемах.
Есть ли у кого-нибудь опыт работы с более чем 4 MCP23S17 на SPI? Кто-нибудь может помочь?
#include <SPI.h>
#include <MCP23S17.h>
MCP A(0, 10);
MCP B(1, 8);
int d = 250;
void setup() {
A.begin();
B.begin();
for (int k = 1; k <= 16; k++) {
A.pinMode(k, OUTPUT);
B.pinMode(k, OUTPUT);
}
}
void loop() {
//////////// ON THE LIGHT ONE BY ONE FROM BEGGING
for (int f = 1; f <= 16; f++) {
A.digitalWrite(f, HIGH);
delay(d );
}
for (int f = 1; f <= 16; f++) {
B.digitalWrite(f, HIGH);
delay(d );
}
//////////// OFF THE LIGHT ONE BY ONE FROM BEGINNIG
for (int f = 1; f <= 16; f++) {
A.digitalWrite(f, LOW);
delay(d);
}
for (int f = 1; f <= 16; f++) {
B.digitalWrite(f, LOW);
delay(d);
}
}
2 ответа
MCP A(0, 9);
MCP B(1, 8);
MCP C(2, 7);
MCP D(3, 6);
MCP E(4, 5);
MCP F(5, 3);
CS
на выводе 10 часто используется для EthernetCS
на выводе 4 часто используется для SD
Как это должно решить проблему? Как я вижу, он не использует Ethernet или SD-карту., @gre_gor
Привет, gre_gor, адрес и выбор чипов 6 раз разные..., @rainer
Если предположить, что адресация правильная и все модули работают нормально по отдельности, вы можете сделать некоторые вещи:
попробуйте отключить подчиненный выбор модулей, для которых не требуется связь в определенное время, для этого есть примеры
добавьте немного кода, в котором вы определяете чип, выберите в качестве входных данных для всех, кроме одного, и посмотрите, сможете ли вы общаться с ним. Сделайте это для всех них
удалите PIN MISO со всех, кроме одного, и посмотрите, сможете ли вы общаться с ним. Сделайте это для всех них
используйте буфер из трех состояний, через который вы подключаете контакт MISO, и используйте chip select для включения буфера. Этот буфер переводит вывод MISO в состояние с высоким сопротивлением, когда определенный модуль не используется для связи, и предотвращает потерю fata
- Какие контакты можно использовать для выбора микросхемы (CS, CC) на Arduino Nano Every?
- Проблема с NRF24L01
- Аппаратный SPI Arduino NANO не работает
- Считыватель Rfid и экран SD-карты не работают вместе
- Nano не может получить ответ от ENC28J60 Ethernet Shield
- Проблема с SPI-коммуникациями с использованием NodeMCU v 3, Nano и SD
- Проблемы nRF24l01+. Данные принимаются как 0
- Правильное использование SPI с ISR
Возможно, у вас есть проводка, логика или ошибка программирования в декодировании адреса. Пожалуйста, отредактируйте свой вопрос, чтобы включить [Минимальный, полный и проверяемый пример](http://stackoverflow.com/help/mcve) кода и принципиальной схемы., @James Waldby - jwpat7
посмотреть сейчас сэр мой вопрос, @Mathusuthan Packiyarajah
Какую библиотеку вы используете?, @Majenko
Также вы знаете, как работают адресные контакты?, @Majenko
Воспользуйся моей библиотекой. У него был пример, который делает именно то, что вы хотите. https://github.com/MajenkoLibraries/MCP23S17, @Majenko
На диаграмме показан только один вывод SS, идущий к обоим микросхемам. Это намеренно? Если это так, то вам нужно отправить вещи только один раз, так как все чипы получат одно и то же., @Delta_G
У вас есть решение? Рави, @Ravi N