Как прочитать выходные данные с разъема 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.
Что именно мне нужно?
- Мне нужен исходный код для чтения выходных данных с 5-контактного разъема через SPI и который должен отображаться на моей консоли.
Может ли кто-нибудь поделиться полным исходным кодом для выполнения описанной выше операции?
@Abdulvakaf K, 👍-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); // не загромождать экран ПК
}
- Как использовать SPI на Arduino?
- OVF в последовательном мониторе вместо данных
- Как отправить строку с подчиненного устройства Arduino с помощью SPI?
- Проблема совместного использования MISO с несколькими RFID-считывателями RC522
- Программирование ведомого SPI для Arduino
- 74HC595 к 4 значному 7 сегменту с использованием библиотеки SevSegShift
- Последовательная связь между несколькими устройствами (или ардуино)
- Максимальная скорость SPI для ведомого Uno/clone?
сначала подключите его к SPI pis Uno. затем используйте библиотеку SPI в подчиненном режиме. устройство отправит не только текст. возможно, он отправит только адреса сегментов с состояниями, @Juraj