Более 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);
  }
}

, 👍3

Обсуждение

Возможно, у вас есть проводка, логика или ошибка программирования в декодировании адреса. Пожалуйста, отредактируйте свой вопрос, чтобы включить [Минимальный, полный и проверяемый пример](http://stackoverflow.com/help/mcve) кода и принципиальной схемы., @James Waldby - jwpat7

посмотреть сейчас сэр мой вопрос, @Mathusuthan Packiyarajah

Какую библиотеку вы используете?, @Majenko

Также вы знаете, как работают адресные контакты?, @Majenko

Воспользуйся моей библиотекой. У него был пример, который делает именно то, что вы хотите. https://github.com/MajenkoLibraries/MCP23S17, @Majenko

На диаграмме показан только один вывод SS, идущий к обоим микросхемам. Это намеренно? Если это так, то вам нужно отправить вещи только один раз, так как все чипы получат одно и то же., @Delta_G

У вас есть решение? Рави, @Ravi N


2 ответа


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 часто используется для Ethernet
  • CS на выводе 4 часто используется для SD
,

Как это должно решить проблему? Как я вижу, он не использует Ethernet или SD-карту., @gre_gor

Привет, gre_gor, адрес и выбор чипов 6 раз разные..., @rainer


1

Если предположить, что адресация правильная и все модули работают нормально по отдельности, вы можете сделать некоторые вещи:

  • попробуйте отключить подчиненный выбор модулей, для которых не требуется связь в определенное время, для этого есть примеры

  • добавьте немного кода, в котором вы определяете чип, выберите в качестве входных данных для всех, кроме одного, и посмотрите, сможете ли вы общаться с ним. Сделайте это для всех них

  • удалите PIN MISO со всех, кроме одного, и посмотрите, сможете ли вы общаться с ним. Сделайте это для всех них

  • используйте буфер из трех состояний, через который вы подключаете контакт MISO, и используйте chip select для включения буфера. Этот буфер переводит вывод MISO в состояние с высоким сопротивлением, когда определенный модуль не используется для связи, и предотвращает потерю fata

,