|
沒有源碼
我日常工作接觸以太網(wǎng)多 所以總想能不能讓UART像以太網(wǎng)一樣每個模塊隨意發(fā)送 UART很難完全做到 以太網(wǎng)通訊是分時復(fù)用 每個數(shù)據(jù)包里包括來源 目的 序號 等很多信息 單片機(jī)這么做開銷就太大了 不合算 但是想探討一下如何能更接近以太網(wǎng)模式
在百度上搜了一些51的多機(jī)通訊范例 讀之后有兩個問題
1. 多機(jī)通訊自身ID號也需要寫程序去對比 并不是有專門的寄存器設(shè)置后當(dāng)發(fā)生串口中斷時自動對比 因此我并不覺得用多機(jī)方法比單機(jī)方法好 判斷上和單機(jī)通訊開銷一樣 卻比單機(jī)通訊多了對SM RB TB的操作
2. 多機(jī)通訊里 核心的問題并不是呼叫誰 而是信道的占用 UART從硬件上 發(fā)出去的東西每個模塊都可以收到 只要驅(qū)動能力夠就行 但UART不是分時復(fù)用 所有模塊收到指令后各自處理自己的沒問題 但如果有返回通訊就有相互沖突 這種沖突通訊量小影響小 假設(shè)254個模塊 每組數(shù)據(jù)50位 那就影響很大了
所以 只要解決信道占用問題 用一對一的方式就可以 不需要用更復(fù)雜的多機(jī)UART通訊 這個結(jié)論是基于發(fā)送一條廣播指令 要求每個模塊都執(zhí)行并返回?cái)?shù)據(jù)的情況 如果只控制其中一個模塊 那么只要把指令位的廣播定義改成ID號就可以
問題是 還沒想出怎么解決信道占用 就是說 如果廣播一個指令出去 要求所有模塊返回?cái)?shù)據(jù)的時候 如何讓它們不會同時往回發(fā)東西 所以想和各位同仁及前輩探討一下 |
|