Wpis z mikrobloga

Cześć. Chcę w obrębie jednego urządzenia połączyć kilka modułów z różnymi mikrokontrolerami.
Chcę, aby jeden moduł komunikował się z innym - często dwustronnie.
Chcę też, aby był jak najmniejszy delay pomiędzy wysyłką a odbiorem paczki, którą wyślę z jednego modułu do drugiego.
UART będzie OK? Czy lepiej czymś innym?

#elektronika #rs232 #arduino #mikrokontrolery
  • 10
  • Odpowiedz
@przech: jakoś *do* 255 paczek po 1 kB (totalnie max 1kB, w większości pewnie po 64B) na sekundę.
Po SPI to będzie mega skomplikowane, bo kazdy moduł = jeden input na chip select, a tak po prostu będę sprawdzał czy paczka jest dla określonego modułu już w sofcie.
  • Odpowiedz
@kilcars: mikroklocek musiałby to obsługiwać, a chcę sprzęt uczynić elastycznym.

Chcę coś mega prostego, nie wysyłam dużo danych, ważny jest mały delay i moduły są obok siebie, więc kwestia odległości odpada - UART, SPI, I2C, czy jeszcze coś innego?
  • Odpowiedz
@vifon_pikantny: Skoro CAN odpada to chyba najlepiej Multi-master I2C. Często peryferia I2C są w stanie generować przerwania na wywłaszczenie na magistrali (Arbitration Lost, Bus Error) więc pozostanie kwestia implementacji zachowania w takim przypadku (np. kiedy odpalić retransmisję). Zatem trzeba będzie softowo zrobić to, co CAN daje "za darmo" :)

Oczywiście zaletą I2C jest praktycznie dowolna długość ramki, CAN ma tutaj poważne ograniczenia. I2C ponadto nie potrzebuje zew. driverów, które często występują
  • Odpowiedz
@vifon_pikantny: Polecam i2c albo SPI, UART to tylko point-to-point, chyba że RS485/422, ale to już raczej do komunikacji pomiędzy kilkoma urządzeniami, a nie wewnątrz jednego.
  • Odpowiedz