Sebenarnya tidak ada protokol "umum", yang akhirnya Anda gunakan sangat bergantung pada aplikasi. Agar kami dapat memberikan jawaban yang lebih baik, kami perlu memahami persyaratan Anda sedikit lebih baik. Anda menyebutkan bahwa Anda ingin memiliki pengontrol mikro terpisah yang berbicara satu sama lain sebagai subsistem.
Beberapa pertanyaan tentang aplikasi ini:
- Apakah akan ada lebih dari 2 pengendali mikro dalam proyek ini?
- Apa persyaratan kecepatan dan throughput Anda? Seberapa cepat informasi perlu sampai di sana dan seberapa sering Anda mengirim / menerima data?
Jika Anda menjawab TIDAK untuk pertanyaan 1:
Jika hanya ada 2 mikrokontroler di proyek ini, Anda pasti dapat menggunakan UART di antara mereka. Jika keduanya perlu memulai komunikasi, gunakan kontrol aliran, jika tidak sepele untuk mengirim data dalam satu arah. Sebagian besar harus "cukup cepat" mengingat Anda memilih salah satu dari angka baud yang lebih tinggi. I2C dan SPI biasanya hanya baik untuk arsitektur master / slave.
Jika Anda menjawab YA (lebih dari 2 pengendali) untuk pertanyaan 1:
- Jika ada lebih dari 2 pengendali mikro dalam proyek Anda, yang mana yang memulai komunikasi? Apakah hanya satu pengontrol utama (mis. Arsitektur master-slave)? Atau apakah ada subsistem yang dapat berbicara kapan saja?
- Apakah ada kebutuhan untuk subsistem untuk berbicara satu sama lain? mis: untuk perangkat A, B dan C: A dapat mengirim ke B dan C, dan B dapat mengirim ke A dan C, dll.
Jadi sekarang Anda membutuhkan sesuatu yang lebih skalabel di mana Anda dapat menjatuhkan perangkat yang dapat dialamatkan ke bus umum. Jawaban untuk pertanyaan tindak lanjut ini akan membantu Anda memutuskan antara I2C dan SPI (master-slave) atau sesuatu seperti CAN (multi-master).
Kontroler mikro Anda kemungkinan besar memiliki periferal UART, yang lainnya (terutama CAN) mungkin hanya tersedia pada chip yang lebih tinggi. Dalam kedua kasus tersebut, harus ada banyak dokumentasi tentang cara menggunakan periferal ini untuk memindahkan byte.