Saya merancang alarm untuk membangunkan saya di pagi hari. Sistem ini terdiri dari 3 subsistem:
- (S1) RGB tujuh segmen manajemen. Terdiri dari 5μCs, satu untuk setiap digit dan satu untuk ":". Tingginya jumlah μC disebabkan oleh kenyataan bahwa saya tidak menggunakan IC untuk RGB, hanya transistor.
- (S2) Sensor dan manajemen input. Satu μC yang mengatur sensor jarak untuk mengatur alarm dan waktu saat ini; dan beralih untuk konfigurasi.
- (S3) Komunikasi dan file audio. Satu μC yang berkomunikasi dengan modul bluetooth di UART untuk proyek lebih lanjut, mendapat kristal RTC untuk memiliki jam yang akurat dan mengelola pemutaran audio. (Saya belum mengerjakan audio)
Selama eksekusi normal, S2 membaca input dan mengirimkannya ke S3 untuk diproses. lalu S3 kirim ke S1 apa yang harus ditampilkan.
Saya ingin membuat semua subsistem ini berkomunikasi bersama, saya kemudian memilih untuk menggunakan bus I2C. Tapi inilah pertanyaan saya:
- ΜC mana yang harus menjadi master?
Di tangan pertama, S3 adalah pusat dari sistem tetapi di sisi lain, S2 dapat mengirim lebih banyak pesan daripada S3. Itu sebabnya saya ragu tentang siapa yang akan menjadi tuan / budak.
- Apakah ada aturan untuk menentukan siapa yang akan menjadi budak / tuan? Pertanyaan apa yang harus saya tanyakan pada diri saya untuk membuat pilihan yang baik? (secara umum, bukan untuk sistem khusus ini)
Jawaban:
Iya. Hanya master I 2 C yang dapat memulai transmisi. Budak I 2 C tidak dapat memberi tahu Anda tentang sesuatu, sampai ia disurvei oleh master (kecuali jika Anda menambahkan sinyal interupsi ekstra, yang meningkatkan kompleksitas sistem secara keseluruhan).
Mengabaikan fitur (jarang digunakan) untuk perangkat untuk beralih antara menjadi master dan slave, ini berarti bahwa master I 2 C harus memiliki pengetahuan yang cukup tentang keseluruhan sistem , untuk mengetahui cara berkomunikasi dengan semua I 2 C budak di bus itu.
Pikirkan MCU mana di sistem Anda yang tahu:
Terlepas dari MCU mana yang akan menjadi master I 2 C, Anda perlu merancang arsitektur sistem secara keseluruhan dan mempertimbangkan perintah mana yang perlu dikirim ke setiap perangkat, dan seberapa cepat respons apa pun perlu diterima. Cobalah untuk mendesain sistem yang memang memiliki "master" yang jelas dan mengetahui semua kondisi sistem, dan kemudian itu bisa menjadi perangkat master I 2 C juga.
Kamu berkata:
Hal ini tidak jelas siapa "S2" mengirimkan pesan ke . Apakah perlu mengirim pesan secara aktif kepada siapa pun ? Atau bisakah "S2" disurvei oleh "S3" sebagai master I 2 C, untuk menerima sensor apa pun dan mengalihkan informasi yang "S2" kumpulkan? Jika "S2" dapat disurvei oleh "S3" maka, berdasarkan deskripsi, tampak jelas bahwa "S3" MCU bisa menjadi master I 2 C.
Saya berhati-hati tentang menambahkan MCU lain (sebut saja "S10") sebagai master I 2 C. Itu karena tampaknya bahwa MCU "S10" perlu melakukan banyak polling, hanya untuk mengumpulkan pengetahuan status sistem keseluruhan yang semuanya (?) Sudah dikenal oleh "S3". Sepertinya itu duplikasi yang tidak perlu.
Oleh karena itu, kecuali "S3" tidak dapat melakukan pekerjaan karena mencapai batas ruang RAM, ruang Flash, atau siklus CPU dll. Mungkin lebih mudah untuk "S3" mengendalikan sistem dengan menjadikannya master 2 C, daripada menambahkan pengontrol "S10" tambahan.
Di sisi lain, jika Anda tidak keberatan dengan kompleksitas tambahan, menambahkan pengontrol "S10" keseluruhan meningkatkan modularitas (segmentasi) sistem, karena "S3" maka hanya Bluetooth dan audio - tidak ada yang lain. Ini dapat memungkinkan fleksibilitas ekstra untuk menambahkan fitur baru (tak terduga) / MCU tambahan di masa depan, tanpa perlu mengubah kode dalam "S3".
sumber
S1 harus menjadi budak I 2 C. Baik S2 atau S3 akan menjadi pilihan yang masuk akal untuk master. Tapi itu hanya menyatakan kembali apa yang telah disebutkan dalam pertanyaan asli.
Seringkali, MCU yang berurusan dengan berbagai input terbesar adalah kandidat yang baik untuk master. Dalam kasus Anda, itu adalah S2 (varian tombol pengguna, RTC), atau S3 (berbagai perintah dari Bluetooth). Jika Anda tidak dapat memutuskan yang mana, maka Anda bisa mendapatkan pengontrol yang lebih besar dan meletakkan kedua fungsi S2 dan S3 ke dalam satu MCU. Pendekatan ini dapat memberi Anda lebih banyak fleksibilitas.
sumber
Setiap mikrokontroler di sistem Anda dapat menjadi master. Namun, beberapa dari mereka lebih cocok untuk fungsi ini. Seperti yang dikatakan oleh orang lain, mikrokontroler dengan lebih banyak informasi haruslah sang Master.
sumber