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