Чтение и запись с полудуплексным SPI
В настоящее время я пытаюсь подключить устройство SPI, используя всего 3 контакта (CLK, DATA, NSS).
Проводка? Соединение MOSI/MISO вместе?
Как я могу читать, если он полудуплексный?
В ESP32 есть флаги, которые можно установить (SPI_TRANS_USE_RXDATA, SPI_TRANS_USE_TXDATA). Как я могу сделать это в среде Arduino? я не видел такой опции, и API кажется немного ограниченным.
Спасибо за любой совет.
@elebb, 👍0
1 ответ
Все, что вам нужно, это один резистор.
Когда DATA является входом, данные от MOSI проходят через резистор как к DATA, так и к MISO. Когда DATA является выходом, данные из DATA поступают в MISO, и напряжение безопасно падает через R1 на приемник или источник MOSI в зависимости от того, в каком состоянии он находится.
Другими словами, когда вводятся ДАННЫЕ, они получают их от MOSI. Когда выводятся DATA, MOSI игнорируется.
С точки зрения кода это ничем не отличается от любого другого перевода. У вас просто никогда не будет достоверных данных для передачи при получении. Так что просто перенесите что угодно (обычно используется 0xFF).
Например, если вам нужно сначала отправить 0x38, а затем получить два байта, вы должны:
SPI.transfer(0x38);
uint8_t byte1 = SPI.transfer(0xFF);
uint8_t byte2 = SPI.transfer(0xFF);
- Как использовать SPI на Arduino?
- Как увеличить скорость записи на SD-карту в Ардуино
- Как считывать данные с помощью Arduino SPI
- Как передать более 1 байта сразу по шине SPI?
- OVF в последовательном мониторе вместо данных
- Как отправить строку с подчиненного устройства Arduino с помощью SPI?
- Проблема совместного использования MISO с несколькими RFID-считывателями RC522
- Путаница между SPI и I2C для SSD1306 OLED
Спасибо, отлично сработало! +1, @elebb