Naprawdę nie ma „ogólnego” protokołu, to, czego ostatecznie użyjesz, zależy w dużej mierze od aplikacji. Abyśmy mogli udzielić lepszej odpowiedzi, musimy lepiej zrozumieć Twoje wymagania. Wspominasz, że chciałbyś mieć oddzielne mikrokontrolery rozmawiające ze sobą jako podsystemy.
Niektóre pytania dotyczące tej aplikacji:
- Czy w tym projekcie będą więcej niż 2 mikrokontrolery?
- Jakie są twoje wymagania dotyczące prędkości i przepustowości? Jak szybko potrzebne są informacje i jak często wysyłasz / odbierasz dane?
Jeśli odpowiedziałeś NIE na pytanie 1:
Jeśli w tym projekcie są tylko 2 kontrolery mikrokontrolerów, możesz na pewno użyć między nimi UART. Jeśli oboje muszą zainicjować komunikację, użyj kontroli przepływu, w przeciwnym razie wysyłanie danych w jednym kierunku powinno być trywialne. W przeważającej części powinno to być „wystarczająco szybkie”, biorąc pod uwagę, że wybrałeś jedną z wyższych prędkości transmisji. I2C i SPI są zazwyczaj dobre tylko dla architektury master / slave.
Jeśli odpowiedziałeś TAK (więcej niż 2 kontrolery) na pytanie 1:
- Jeśli w twoim projekcie są więcej niż 2 mikrokontrolery, który z nich inicjuje komunikację? Czy będzie to tylko jeden kontroler nadrzędny (tj. Architektura master-slave)? A może któryś z podsystemów będzie mógł mówić w dowolnym momencie?
- Czy istnieje potrzeba, aby którykolwiek z podsystemów rozmawiał ze sobą? np .: dla urządzeń A, B i C: A może wysyłać do B i C, a B do A i C itp.
Teraz potrzebujesz czegoś bardziej skalowalnego, w którym możesz upuszczać urządzenia adresowalne na wspólną szynę. Odpowiedź na te pytania uzupełniające pomoże ci wybrać między I2C a SPI (master-slave) lub czymś w rodzaju CAN (multi-master).
Twój mikrokontroler najprawdopodobniej ma urządzenie peryferyjne UART, inne (szczególnie CAN) mogą być dostępne tylko na wyższych układach końcowych. W obu przypadkach powinna istnieć duża dokumentacja na temat używania tych urządzeń peryferyjnych do przenoszenia bajtów.