實用新型涉及一種總線系統(tǒng),尤其是一種用于處理多個總線設(shè)備數(shù)據(jù)的總線系統(tǒng)。
背景技術(shù):
隨著數(shù)據(jù)通信技術(shù)的發(fā)展,多機通信、多總線、多通道數(shù)據(jù)處理的應(yīng)用也越來越廣。所謂多通道數(shù)據(jù)處理是指多個入通道接收報文,然后通過出通道將報文發(fā)送出去。在數(shù)據(jù)通信中,經(jīng)常需要對中斷及各通道數(shù)據(jù)的發(fā)送等事件進行處理。在多總線通信系統(tǒng)中,經(jīng)常需要對總線仲裁、總線切換等處理。隨著VR技術(shù)的發(fā)展,對數(shù)據(jù)的實時性和可靠性以及速率都有更高的要求,現(xiàn)有技術(shù)存在成本高、接線復雜、數(shù)據(jù)處理效率低等缺點。
技術(shù)實現(xiàn)要素:
針對現(xiàn)有技術(shù)的不足,實用新型提供一種用于處理多個總線設(shè)備數(shù)據(jù)的總線系統(tǒng)。
實用新型的技術(shù)方案為:一種用于處理多個總線設(shè)備數(shù)據(jù)的總線系統(tǒng),其特征在于;包括主控模塊、與主控模塊通訊連接的多條總線,每條所述的總線上通訊連接有多個設(shè)備。
所述主控模塊包括用于輪詢所有總線的MCU主控芯片,用于與總線通訊連接的總線接口(BUS_PROT),用于存儲MCU主控芯片訪問相對應(yīng)總線上的設(shè)備的訪問命令的總線命令緩存區(qū)(CMD_QUEUE_BUF),用于存儲總線上設(shè)備返回數(shù)據(jù)的返回數(shù)據(jù)存儲區(qū)(BACK_TEMP_BUF),用于存儲MCU主控芯片處理返回數(shù)據(jù)存儲區(qū)(BACK_TEMP_BUF)內(nèi)的數(shù)據(jù)后提取的有效數(shù)據(jù)的從機設(shè)備有效數(shù)據(jù)存儲區(qū)(SLAVE_DAT_BUF),用于存儲所有從機設(shè)備有效數(shù)據(jù)存儲區(qū)(SLAVE_DAT_BUF)內(nèi)存儲的有效數(shù)據(jù)的上傳數(shù)據(jù)緩存區(qū)(SEND_QUEUE_BUF),以及用于與上位機通訊連接的上位機通訊接口(SEND_PROT),所述MCU主控芯片分別與總線命令緩存區(qū)(CMD_QUEUE_BUF)、返回數(shù)據(jù)存儲區(qū)(BACK_TEMP_BUF)、從機設(shè)備有效數(shù)據(jù)存儲區(qū)(SLAVE_DAT_BUF)、上傳數(shù)據(jù)緩存區(qū)(SEND_QUEUE_BUF)通訊連接。
所述總線接口、總線命令緩沖區(qū)(CMD_QUEUE_BUF)、返回數(shù)據(jù)存儲區(qū)(BACK_TEMP_BUF)、從機設(shè)備有效數(shù)據(jù)存儲區(qū)(SLAVE_DAT_BUF)的數(shù)量與總線數(shù)量相對應(yīng)。
當主控模塊接收到上位機發(fā)送的訪問總線上設(shè)備的通訊命令時,主控模塊將訪問命令存儲到需要訪問設(shè)備所對應(yīng)總線的總線命令緩存區(qū)(CMD_QUEUE_BUF);
MCU主控芯片根據(jù)訪問命令的先后順序以輪詢的方式將訪問命令依次發(fā)送至需要訪問的總線上,并對與訪問命令上的地址對應(yīng)的設(shè)備進行訪問,并將該命令的狀態(tài)標記為正在運行狀態(tài)(STAT_RUNNING),然后退出對該總線上設(shè)備的操作,此狀態(tài)則表明還在等待該總線上設(shè)備的響應(yīng)或者還在處理從設(shè)備返回的數(shù)據(jù);
MCU主控芯片以中斷的方式接收總線上設(shè)備返回的數(shù)據(jù)并將該返回的數(shù)據(jù)存儲于該總線對應(yīng)的返回數(shù)據(jù)存儲區(qū)(BACK_TEMP_BUF),等待MCU主控芯片空閑時來解析該返回的數(shù)據(jù);
MCU主控芯片利用發(fā)送訪問命令到等待設(shè)備響應(yīng)的這個空閑時間去訪問另外一條總線上的設(shè)備或者處理另外一條總線返回的數(shù)據(jù);
當MCU主控芯片完成所有需要訪問總線上第一輪訪問命令的發(fā)送后,MCU主控芯片根據(jù)各個總線訪問命令的發(fā)送的先后順序依次查看各個總線對應(yīng)的返回數(shù)據(jù)存儲區(qū)(BACK_TEMP_BUF)內(nèi)是否有返回數(shù)據(jù);
如果有數(shù)據(jù)返回則解析該返回的數(shù)據(jù)并提取有效數(shù)據(jù)存儲于該總線對應(yīng)的從機設(shè)備有效數(shù)據(jù)存儲區(qū)(SLAVE_DAT_BUF)內(nèi),并將該命令的狀態(tài)機標記為完成狀態(tài)(STAT_OK);如果超過預(yù)定時間內(nèi)總線上設(shè)備還沒有將數(shù)據(jù)返回,則將這條命令的狀態(tài)機標記為超時狀態(tài)(STAT_TIMEOUT),如果在預(yù)訂時間內(nèi)總線上設(shè)備沒有數(shù)據(jù)返回,則退出對該總線的訪問;
然后查看該總線的命令緩存區(qū)(CMD_QUEUE_BUF)當前處理命令的狀態(tài)值,如果該狀態(tài)值還是正在運行狀態(tài)(STAT_RUNNING),退出對該總線的操作,繼續(xù)處理下一條總線;如果該狀態(tài)值已經(jīng)為完成狀態(tài)(STAT_OK)或者超時狀態(tài)(STAT_TIMEOUT),則繼續(xù)處理該總線的命令緩存區(qū)(CMD_QUEUE_BUF)的下個命令,即MCU主控芯片繼續(xù)發(fā)送訪問命令至該總線上的下一臺需要訪問的設(shè)備,并將該設(shè)備的狀態(tài)標記為正在運行狀態(tài)(STAT_RUNNING),然后繼續(xù)處理下一條總線;
直至輪詢完所有總線上所有需要訪問的設(shè)備,并將每條總線的從機設(shè)備有效數(shù)據(jù)存儲區(qū)(SLAVE_DAT_BUF)的有效數(shù)據(jù)匯總到上傳數(shù)據(jù)緩存區(qū)(SEND_QUEUE_BUF);
主控模塊的上位機通訊接口(SEND_PROT)以DMA方式將上傳數(shù)據(jù)緩存區(qū)(SEND_QUEUE_BUF)內(nèi)的數(shù)據(jù)傳輸至上位機。
MCU主控芯片發(fā)送訪問命令前,MCU主控芯片以輪詢的方式先檢查各個總線的事件就緒列表中是否具有最高優(yōu)先級的事件;如果有最高優(yōu)先級事件,則優(yōu)先處理該事件,當處理完該事件則將其狀態(tài)標志為完成,當事件就緒列表中的所有事件處理完,則清除所有事件的狀態(tài)。
當一個最高優(yōu)先級有多個事件時,則按照一個單位時間輪詢處理該最高優(yōu)先級的多個事件,如果一個單位時間內(nèi)該多個事件還沒處理完,就將這個事件運行的相關(guān)寄存器的值保存到堆棧中;然后處理下一總線的同優(yōu)先級的事件;輪完所有總線的同優(yōu)先級的事件后,再從堆棧中取出未處理完的事件的寄存器的值繼續(xù)處理。
實用新型的有益效果為:通過MCU主控芯片以輪詢的方式處理總線上設(shè)備的返回數(shù)據(jù),并且主控模塊連接多條總線,每條總線連接多個設(shè)備,MCU主控芯片能夠訪問所有總線的所有設(shè)備,無需切換,接線簡單,占用資源少,并以中斷方式接收設(shè)備返回的數(shù)據(jù),不僅減少了設(shè)備成本,而且進一步提高了MCU主控芯片的處理效率。
附圖說明
圖1為實用新型的結(jié)構(gòu)框架圖;
具體實施方式
下面結(jié)合附圖對實用新型的具體實施方式作進一步說明:
如圖1所示,一種用于處理多個總線設(shè)備數(shù)據(jù)的總線系統(tǒng),其特征在于;包括主控模塊、與主控模塊通訊連接的多條總線,每條所述的總線與多個設(shè)備通訊連接。
所述主控模塊包括
MCU主控芯片,用于控制整個系統(tǒng)的運行;任務(wù)的調(diào)度,所有總線的輪詢,根據(jù)每個命令的處理狀態(tài)(STAT_MACHINE)判斷是否要繼續(xù)處理該總線的數(shù)據(jù),以及控制上傳數(shù)據(jù)接口DMA的啟動和關(guān)閉;
總線接口(BUS_PROT),用于與總線通訊連接,總線接口與總線數(shù)量相對應(yīng);
總線命令緩存區(qū)(CMD_QUEUE_BUF),每條總線接口對應(yīng)一個總線命令緩沖區(qū)(CMD_QUEUE_BUF),用于存儲MCU主控芯片訪問相對應(yīng)總線上的設(shè)備的命令;
返回數(shù)據(jù)存儲區(qū)(BACK_TEMP_BUF),每條總線分別對應(yīng)相應(yīng)的返回數(shù)據(jù)存儲區(qū)(BACK_TEMP_BUF),用于存儲當MCU主控芯片訪問該總線上的設(shè)備時,設(shè)備對應(yīng)返回的數(shù)據(jù),MCU主控芯片通過中斷方式接收從設(shè)備返回的數(shù)據(jù);
從機設(shè)備有效數(shù)據(jù)存儲區(qū)(SLAVE_DAT_BUF),每條總線分別對應(yīng)相應(yīng)的從機設(shè)備有效數(shù)據(jù)存儲區(qū),用于存儲MCU主控芯片處理返回數(shù)據(jù)存儲區(qū)內(nèi)的數(shù)據(jù)后提取的有效數(shù)據(jù);
上傳數(shù)據(jù)緩存區(qū)(SEND_QUEUE_BUF),用于存儲所有從機設(shè)備有效數(shù)據(jù)存儲區(qū)(SLAVE_DAT_BUF)內(nèi)存儲的有效數(shù)據(jù);
上位機通訊接口(SEND_PROT),用于與上位機通訊連接,將上傳數(shù)據(jù)緩存區(qū)(SEND_QUEUE_BUF)內(nèi)存儲的所有總線的有效數(shù)據(jù)發(fā)送至上位機;
所述MCU主控芯片分別與總線命令緩存區(qū)(CMD_QUEUE_BUF)、返回數(shù)據(jù)存儲區(qū)(BACK_TEMP_BUF)、從機設(shè)備有效數(shù)據(jù)存儲區(qū)(SLAVE_DAT_BUF)、上傳數(shù)據(jù)緩存區(qū)(SEND_QUEUE_BUF)通訊連接。
當主控模塊接收到上位機發(fā)送的訪問總線上設(shè)備的通訊命令時,主控模塊將訪問命令存儲到需要訪問設(shè)備所對應(yīng)總線的總線命令緩存區(qū)(CMD_QUEUE_BUF);
MCU主控芯片根據(jù)訪問命令的先后順序以輪詢的方式將訪問命令依次發(fā)送至需要訪問的總線上,并對與訪問命令上的地址對應(yīng)的設(shè)備進行訪問,并將該命令的狀態(tài)標記為正在運行狀態(tài)(STAT_RUNNING),然后退出對該總線上設(shè)備的操作,此狀態(tài)則表明還在等待該總線上設(shè)備的響應(yīng)或者還在處理從設(shè)備返回的數(shù)據(jù);
MCU主控芯片以中斷的方式接收總線上設(shè)備返回的數(shù)據(jù)并將該返回的數(shù)據(jù)存儲于該總線對應(yīng)的返回數(shù)據(jù)存儲區(qū)(BACK_TEMP_BUF),等待MCU主控芯片空閑時來解析該返回的數(shù)據(jù);
MCU主控芯片利用發(fā)送訪問命令到等待設(shè)備響應(yīng)的這個空閑時間去訪問另外一條總線上的設(shè)備或者處理另外一條總線返回的數(shù)據(jù);
當MCU主控芯片完成所有需要訪問總線上第一輪訪問命令的發(fā)送后,MCU主控芯片根據(jù)各個總線訪問命令的發(fā)送的先后順序依次查看各個總線對應(yīng)的返回數(shù)據(jù)存儲區(qū)(BACK_TEMP_BUF)內(nèi)是否有返回數(shù)據(jù);
如果有數(shù)據(jù)返回則解析該返回的數(shù)據(jù)并提取有效數(shù)據(jù)存儲于該總線對應(yīng)的從機設(shè)備有效數(shù)據(jù)存儲區(qū)(SLAVE_DAT_BUF)內(nèi),并將該命令的狀態(tài)機標記為完成狀態(tài)(STAT_OK);如果超過預(yù)定時間內(nèi)總線上設(shè)備還沒有將數(shù)據(jù)返回,則將這條命令的狀態(tài)機標記為超時狀態(tài)(STAT_TIMEOUT),如果在預(yù)訂時間內(nèi)總線上設(shè)備沒有數(shù)據(jù)返回,則退出對該總線的訪問;
然后查看該總線的命令緩存區(qū)(CMD_QUEUE_BUF)當前處理命令的狀態(tài)值,如果該狀態(tài)值還是正在運行狀態(tài)(STAT_RUNNING),退出對該總線的操作,繼續(xù)處理下一條總線;如果該狀態(tài)值已經(jīng)為完成狀態(tài)(STAT_OK)或者超時狀態(tài)(STAT_TIMEOUT),則繼續(xù)處理該總線的命令緩存區(qū)(CMD_QUEUE_BUF)的下個命令,即MCU主控芯片繼續(xù)發(fā)送訪問命令至該總線上的下一臺需要訪問的設(shè)備,并將該設(shè)備的狀態(tài)標記為正在運行狀態(tài)(STAT_RUNNING),然后繼續(xù)處理下一條總線;
直至輪詢完所有總線上所有需要訪問的設(shè)備,并將每條總線的從機設(shè)備有效數(shù)據(jù)存儲區(qū)(SLAVE_DAT_BUF)的有效數(shù)據(jù)匯總到上傳數(shù)據(jù)緩存區(qū)(SEND_QUEUE_BUF);
主控模塊的上位機通訊接口(SEND_PROT)以DMA方式將上傳數(shù)據(jù)緩存區(qū)(SEND_QUEUE_BUF)內(nèi)的數(shù)據(jù)傳輸至上位機。
MCU主控芯片發(fā)送訪問命令前,MCU主控芯片以輪詢的方式先檢查各個總線的事件就緒列表中是否具有最高優(yōu)先級的事件;如果有最高優(yōu)先級事件,則優(yōu)先處理該事件,當處理完該事件則將其狀態(tài)標志為完成,當事件就緒列表中的所有事件處理完,則清除所有事件的狀態(tài)。
當一個最高優(yōu)先級有多個事件時,則按照一個單位時間輪詢處理該最高優(yōu)先級的多個事件,如果一個單位時間內(nèi)該多個事件還沒處理完,就將這個事件運行的相關(guān)寄存器的值保存到堆棧中;然后處理下一總線的同優(yōu)先級的事件;輪完所有總線的同優(yōu)先級的事件后,再從堆棧中取出未處理完的事件的寄存器的值繼續(xù)處理。
上述實施例和說明書中描述的只是說明實用新型的原理和最佳實施例,在不脫離實用新型精神和范圍的前提下,實用新型還會有各種變化和改進,這些變化和改進都落入要求保護的實用新型范圍內(nèi)。