Как прочитать выходные данные с разъема SPI с помощью Arduino Uno?

У меня есть плата главного контроллера, которая передает такие данные, как («HAI», «HELLO»), на 5-контактный разъем SPI, установленный на той же плате. К этому 5-контактному разъему SPI я мог бы подключить отдельную печатную плату, которая имеет 5 семисегментных светодиодов на основе SPI, чтобы видеть выходной сигнал, например («HAI», «HELLO»).

Конфигурация контактов 5-контактного разъема SPI на основной плате.

  • Контакт 1 – VCC
  • Пин 2 – заземление
  • Пин 3 — CS (выбор микросхемы)
  • Контакт 4 — CLK (часы)
  • Пин 5 — D IN (данные).

Все работает нормально, а также я вижу выходные данные на семисегментном дисплее, такие как «HAI» и «HELLO» невооруженным глазом.

Но Мне нужны те же данные для отображения на консоли моего ПК/ноутбука, поэтому я использовал настройку контроллера Arduino uno.

Итак, я подключил провод от контроллера Arduino к 5-контактному разъему основной платы контроллера.

Связи ниже.

Arduino controller                 Main controller ckt board
(Digital pins)                      (5 Pin connector)
PIN 7 (D IN) --------------------------->   PIN 5 (D IN)
PIN 6 (CS)   --------------------------->   PIN 3 (CS)
PIN 5 (CLK)  --------------------------->   PIN 4  (CLK)

Я подключил USB-кабель к компьютеру, установил драйвер Arduino, а также настроил COM-ПОРТ (COM5 в моем случае).

Я открыл консоль гипертерминала, выбрав COM5 и скорость передачи данных 9600. Но все равно я не получил вывод («HELLO», «HAI») на консоли, поскольку контроллер Arduino не имеет исходного кода для чтения выходной строки («HELLO», «HAI») из 5-контактного разъема SPI на основной плате контроллера ckt.

Что именно мне нужно?

  1. Мне нужен исходный код для чтения выходных данных с 5-контактного разъема через SPI и который должен отображаться на моей консоли.

Может ли кто-нибудь поделиться полным исходным кодом для выполнения описанной выше операции?

, 👍-1

Обсуждение

сначала подключите его к SPI pis Uno. затем используйте библиотеку SPI в подчиненном режиме. устройство отправит не только текст. возможно, он отправит только адреса сегментов с состояниями, @Juraj


1 ответ


-1

Надо начинать с правильных пинов.

В Uno SCK — 13, MISO — 12, MOSI — 11, и обычно 10 используется для выбора подчиненного устройства.

Для чтения с ведомого устройства необходима некоторая настройка, а затем выполняется команда. Вот очень простой пример:

byte ssPin = 10;
byte incomingByte;
byte addressToRead = 0x00; // или что нужно, если нужно.

void setup(){
Serial.begin(9600);
pinMode (ssPin, OUTPUT);
digitalWrite (ssPin, HIGH); // большинство устройств ожидают LOW для выбора подчиненного устройства
// код позади SPI.transfer уже может это сделать, я все равно вставил его как
// иногда я использую разные пины. 10 должно быть выходом для
// Atmega будет мастером шины SPI

SPI.begin(); // использует значения по умолчанию: SCK 4 МГц, MSBFIRST, Mode 0 для
// начальные уровни сигнала
}

void loop(){
digitalWrite (ssPin, LOW); // выбираем устройство
SPI.transfer (addressToRead); // может понадобиться для вашего устройства
incomingByte = SPI.transfer(0); // читаем байт с ведомого устройства
digitalWrite (ssPin, HIGH); // отменяем выбор устройства

Serial.print(incomingByte); // возможно, для этого потребуются некоторые манипуляции
// печатный символ - см.
//www.asciitable.com
delay(500); // не загромождать экран ПК
}
,