本發(fā)明涉及一種消息通信機制,尤其涉及一種通用高效消息通信系統(tǒng)及其方法;本發(fā)明通用性強、傳輸效率高和魯棒性好。
背景技術(shù):
MCU或DSP等控制芯片驅(qū)動外部通信數(shù)據(jù)接口多種多樣,可根據(jù)需收發(fā)數(shù)據(jù)大小、速率等不同需求選擇相應的接口方式,例如SPI、GPIO、I2C等。然而調(diào)用不同接口,需要改動DSP底層驅(qū)動,修改配置所有參數(shù)。
且通常MCU或DSP等控制芯片收發(fā)的消息除了業(yè)務數(shù)據(jù)外還有許多消息,各種數(shù)據(jù)大小不一,某些控制信息可能只有幾個bit,反復高頻率開啟驅(qū)動接口反而比傳輸數(shù)據(jù)本身傳輸時間更長。
可見需要有一種能屏蔽底層細節(jié)、效率高、通用性強、魯棒性好的消息通信機制。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種通信效率高、通用性好的通用高效消息通信系統(tǒng)及其方法,該系統(tǒng)是一種雙向通信系統(tǒng),可作為網(wǎng)絡中任意節(jié)點收發(fā)數(shù)據(jù)。
本發(fā)明的目的是這樣實現(xiàn)的:
一、通用高效消息通信系統(tǒng)
包括消息通信系統(tǒng)和其他相同結(jié)構(gòu)的系統(tǒng),彼此之間相互連通;
消息通信系統(tǒng)包括定時器、第1發(fā)射器、第1接收器、數(shù)據(jù)處理器、第2發(fā)射器和第2接收器;
其連接關系是:
定時器分別與第1發(fā)射器和第2發(fā)射器相連,第1發(fā)射器、第1接收器、第2發(fā)射器和第2接收器分別與數(shù)據(jù)處理器相連。
二、通用高效消息通信方法(簡稱方法)
本方法包括下列步驟:
①第1接收器收到消息給數(shù)據(jù)處理器;
②解碼模塊判斷是否是發(fā)送給自己的數(shù)據(jù),如果是則開始解碼,如果不是則發(fā)給重組模塊;
③重組模塊將需要傳輸?shù)臄?shù)據(jù)消息依次放入寄存器中,寄存器為N個M字節(jié)大小,M、N根據(jù)需求而定;
④重復步驟①②③,重組模塊將收到的數(shù)據(jù)按順序依次填入寄存器中,且重組模塊讀取當前收到數(shù)據(jù)大小,判斷當前數(shù)據(jù)量加上寄存器已存儲數(shù)據(jù)量如果不大于M字節(jié),則將數(shù)據(jù)放在已存數(shù)據(jù)后面,否則idx自增1,當前數(shù)據(jù)存入下一個M字節(jié)的寄存器中;
⑤調(diào)度模塊判斷已存儲數(shù)據(jù),將全部滿足M字節(jié)滿的數(shù)據(jù)包部分依次轉(zhuǎn)給轉(zhuǎn)發(fā)模塊;
⑥轉(zhuǎn)發(fā)模塊將當前存儲器數(shù)據(jù)按照順序?qū)⒌谝粋€數(shù)據(jù)包發(fā)給發(fā)射器;記錄當前已發(fā)送數(shù)據(jù)包,成功發(fā)送一個數(shù)據(jù)包后,idx自減1,并將后續(xù)滿M字節(jié)數(shù)據(jù)包首地址前移至頭;
⑦定時器每200ms發(fā)送指令給第2發(fā)射器發(fā)送寄存器中發(fā)送一個數(shù)據(jù)包,如果定時器時間到第一個M字節(jié)數(shù)據(jù)包未填滿,仍發(fā)送;如果定時器已到,寄存器已存滿多個數(shù)據(jù)包,只發(fā)送一個;
⑧第2接收器同時進行第1接收器相同的步驟操作①②③④⑤⑥,步驟⑧中定時器每200ms給對應的第1發(fā)射器發(fā)送指令,做相同步驟操作可進行反方向的數(shù)據(jù)傳輸。
本發(fā)明具有下列優(yōu)點和積極效果:
①通用性強:MCU或DSP驅(qū)動接口多種多樣,根據(jù)收發(fā)數(shù)據(jù)大小、速率等不同需求選擇不同方式,該方法可屏蔽底層驅(qū)動,運用在不同設備上時只需稍作修改即可。
②轉(zhuǎn)發(fā)消息效率高:通常MCU或DSP收發(fā)消息除了業(yè)務數(shù)據(jù)外還有許多消息,各種數(shù)據(jù)大小不一,某些控制信息可能只有幾個bit,反復高頻率開啟驅(qū)動接口反而比傳輸數(shù)據(jù)本身傳輸時間更長。該方法通過適當?shù)木幋a解碼將不同數(shù)據(jù)存入寄存器,定時發(fā)送,提高效率。
總之,本發(fā)明可實現(xiàn)一種通用性強、收發(fā)效率高的消息通信機制,該系統(tǒng)是一種雙向通信系統(tǒng),可作為設備中任意網(wǎng)絡節(jié)點轉(zhuǎn)發(fā)數(shù)據(jù),具有可移植性強、實用性強、魯棒性好等優(yōu)勢。
附圖說明
圖1是本系統(tǒng)的結(jié)構(gòu)方框圖;
圖中:
A—消息通信系統(tǒng),B—左消息通信系統(tǒng),C—右消息通信系統(tǒng);
00—定時器;
10—第1發(fā)射器;
20—第1接收器;
30—數(shù)據(jù)處理器;
31—轉(zhuǎn)發(fā)模塊,32—調(diào)度模塊,33—重組模塊,34—解碼模塊;
40—第2發(fā)射器;
50—第2接收器。
英譯漢
1、DSP:Digital Signal Processing,數(shù)字信號處理;
2、SPI:Serial Peripheral Interface,串行外設接口;
3、GPIO:General Purpose Input/Output,通用輸入輸出控制線;
4、I2C:Inter-integrated Circuit,內(nèi)部集成電路。
具體實施方式
以下結(jié)合附圖和實施例詳細說明。
一、系統(tǒng)
1、總體
如圖1,本系統(tǒng)包括消息通信系統(tǒng)A和其他相同結(jié)構(gòu)的系統(tǒng)(如左、右消息通信系統(tǒng)B、C),彼此之間相互連通;
消息通信系統(tǒng)A包括定時器00、第1發(fā)射器10、第1接收器20、數(shù)據(jù)處理器30、第2發(fā)射器40和第2接收器50;
其連接關系是:
定時器00分別與第1發(fā)射器10和第2發(fā)射器40相連,第1發(fā)射器10、第1接收器20、第2發(fā)射器40和第2接收器50分別與數(shù)據(jù)處理器30相連。
工作機理:
該系統(tǒng)為一個雙向通信系統(tǒng),第1接收器20收到消息后(例如其他dsp或者dsp核)通過數(shù)據(jù)處理器30再通過第2發(fā)射器40將處理后的數(shù)據(jù)傳遞出去;相同地,從另外一個方向傳來的數(shù)據(jù)通過第2接收器50接收消息,經(jīng)過數(shù)據(jù)處理器30再通過第1發(fā)射器10傳遞出去。
2、功能部件
0)定時器50
其硬件配置:DSP芯片TMS320C6416。
其軟件設置:每200ms發(fā)送指令給發(fā)射器,發(fā)送寄存器中發(fā)送一個數(shù)據(jù)包。
1)第1發(fā)射器10
其硬件配置:DSP芯片TMS320C6416。
其軟件設置:接收轉(zhuǎn)發(fā)模塊31發(fā)來的數(shù)據(jù)并定時轉(zhuǎn)發(fā)給其他DSP。
2)第1接收器20
其硬件配置:DSP芯片TMS320C6416。
其軟件設置:接收其他收發(fā)消息系統(tǒng)發(fā)來的數(shù)據(jù)并轉(zhuǎn)給數(shù)據(jù)處理器30。
3)數(shù)據(jù)處理器30
其硬件配置:DSP芯片TMS320C6416。
其軟件設置:嵌入的模塊包括相互交互的轉(zhuǎn)發(fā)模塊31、調(diào)度模塊32、重組模塊33和編碼模塊34。
(1)轉(zhuǎn)發(fā)模塊31:當前存儲器數(shù)據(jù)按照順序?qū)⒌谝粋€數(shù)據(jù)包發(fā)給發(fā)射器,記錄當前已發(fā)送數(shù)據(jù)包;
(2)調(diào)度模塊32:將已經(jīng)滿足256字節(jié)的數(shù)據(jù)依次轉(zhuǎn)給轉(zhuǎn)發(fā)模塊31;
(3)重組模塊33:將需要傳輸?shù)臄?shù)據(jù)消息依次放入寄存器;判斷當前收到數(shù)據(jù)大小,如果與寄存器已存儲數(shù)據(jù)大于256字節(jié),則idx自增1,當前數(shù)據(jù)放入下一個256字節(jié);
(4)解碼模塊34:解碼模塊34判斷是否是其他dsp或其他核發(fā)送給自己的數(shù)據(jù),如果是則開始解碼,如果不是則發(fā)給重組模塊33。
4)第2發(fā)射器40
同第1發(fā)射器10。
5)第2接收器50
同第1接收器20。
二、方法
1、所述的解碼模塊(34)的具體流程為:
判斷收到消息是否是發(fā)送給自己的數(shù)據(jù),如果是則開始解碼,如果不是則發(fā)給重組模塊(33)。
2、所述的重組模塊(33)的具體流程為:
重復步驟①②③,重組模塊(33)將收到的數(shù)據(jù)按順序依次填入寄存器中,且重組模塊讀取當前收到數(shù)據(jù)大小,判斷當前數(shù)據(jù)量加上寄存器已存儲數(shù)據(jù)量如果不大于M字節(jié),則將數(shù)據(jù)放在已存數(shù)據(jù)后面,否則idx自增1,當前數(shù)據(jù)存入下一個M字節(jié)的寄存器中
3、所述的定時轉(zhuǎn)發(fā)數(shù)據(jù)包的具體流程為:
轉(zhuǎn)發(fā)模塊(31)將當前存儲器數(shù)據(jù)按照順序?qū)⒌?個數(shù)據(jù)包發(fā)給發(fā)射器,定時器(00)每200ms發(fā)送指令給發(fā)射器發(fā)送寄存器中發(fā)送一個數(shù)據(jù)包,如果定時器時間到第一個數(shù)據(jù)包未填滿,仍發(fā)送;如果定時器(00)已到,寄存器已存滿多個數(shù)據(jù)包,只發(fā)送一個。