一種用於處理多個總線設備數據的方法、及其總線系統與流程
2023-07-07 19:32:01 1
本發明涉及一種總線系統,尤其是一種用於處理多個總線設備數據的方法、及其總線系統。
背景技術:
隨著數據通信技術的發展,多機通信、多總線、多通道數據處理的應用也越來越廣。所謂多通道數據處理是指多個入通道接收報文,然後通過出通道將報文發送出去。在數據通信中,經常需要對中斷及各通道數據的發送等事件進行處理。在多總線通信系統中,經常需要對總線仲裁、總線切換等處理。隨著vr技術的發展,對數據的實時性和可靠性以及速率都有更高的要求,現有技術存在成本高、接線複雜、數據處理效率低等缺點。
技術實現要素:
針對現有技術的不足,本發明提供一種用於處理多個總線設備數據的方法、及其總線系統。
本發明的技術方案為:一種用於處理多個總線設備數據的方法,其特徵在於:包括以下步驟:
1)、當主控模塊接收到上位機發送的訪問總線上設備的通訊命令時,主控模塊將訪問命令存儲到需要訪問設備所對應總線的總線命令緩存區(cmd_queue_buf);
2)、mcu主控晶片根據訪問命令的先後順序以輪詢的方式將訪問命令依次發送至需要訪問的總線上,並對與訪問命令上的地址對應的設備進行訪問,並將該命令的狀態標記為正在運行狀態(stat_running),然後退出對該總線上設備的操作,此狀態則表明還在等待該總線上設備的響應或者還在處理從設備返回的數據;
3)、mcu主控晶片以中斷的方式接收總線上設備返回的數據並將該返回的數據存儲於該總線對應的返回數據存儲區(back_temp_buf),等待mcu主控晶片空閒時來解析該返回的數據;
mcu主控晶片利用發送訪問命令到等待設備響應的這個空閒時間去訪問另外一條總線上的設備或者處理另外一條總線返回的數據;
4)、當mcu主控晶片完成所有需要訪問總線上第一輪訪問命令的發送後,mcu主控晶片根據步驟2)中各個總線訪問命令的發送的先後順序依次查看各個總線對應的返回數據存儲區(back_temp_buf)內是否有返回數據;
如果有數據返回則解析該返回的數據並提取有效數據存儲於該總線對應的從機設備有效數據存儲區(slave_dat_buf)內,並將該命令的狀態機標記為完成狀態(stat_ok);如果超過預定時間內總線上設備還沒有將數據返回,則將這條命令的狀態機標記為超時狀態(stat_timeout),如果在預訂時間內總線上設備沒有數據返回,則退出對該總線的訪問;
5)、然後查看該總線的命令緩存區(cmd_queue_buf)當前處理命令的狀態值,如果該狀態值還是正在運行狀態(stat_running),退出對該總線的操作,繼續處理下一條總線;如果該狀態值已經為完成狀態(stat_ok)或者超時狀態(stat_timeout),則繼續處理該總線的命令緩存區(cmd_queue_buf)的下個命令,即mcu主控晶片繼續發送訪問命令至該總線上的下一臺需要訪問的設備,並將該設備的狀態標記為正在運行狀態(stat_running),然後繼續處理下一條總線;
6)、重複步驟4)和步驟5)直至輪詢完所有總線上所有需要訪問的設備,並將每條總線的從機設備有效數據存儲區(slave_dat_buf)的有效數據匯總到上傳數據緩存區(send_queue_buf);
7)、主控模塊的上位機通訊接口(send_prot)以dma方式將上傳數據緩存區(send_queue_buf)內的數據傳輸至上位機。
mcu主控晶片發送訪問命令前,mcu主控晶片以輪詢的方式先檢查各個總線的事件就緒列表中是否具有最高優先級的事件;如果有最高優先級事件,則優先處理該事件,當處理完該事件則將其狀態標誌為完成,當事件就緒列表中的所有事件處理完,則清除所有事件的狀態。
當一個最高優先級有多個事件時,則按照一個單位時間輪詢處理該最高優先級的多個事件,如果一個單位時間內該多個事件還沒處理完,就將這個事件運行的相關寄存器的值保存到堆棧中;然後處理下一總線的同優先級的事件;輪完所有總線的同優先級的事件後,再從堆棧中取出未處理完的事件的寄存器的值繼續處理。
一種用於處理多個總線設備數據的總線系統,其特徵在於;包括主控模塊、與主控模塊通訊連接的多條總線,每條所述的總線與多個設備通訊連接,並且每個設備都有獨立的通信地址;
所述主控模塊包括:
mcu主控晶片,用於控制整個系統的運行;任務的調度,所有總線的輪詢,根據每個命令的處理狀態(stat_machine)判斷是否要繼續處理該總線的數據,以及控制上傳數據接口dma的啟動和關閉;
總線接口(bus_prot),用於與總線通訊連接,總線接口與總線數量相對應;
總線命令緩存區(cmd_queue_buf),每條總線接口對應一個總線命令緩衝區(cmd_queue_buf),用於存儲mcu主控晶片訪問相對應總線上的設備的命令;
返回數據存儲區(back_temp_buf),每條總線分別對應相應的返回數據存儲區(back_temp_buf),用於存儲當mcu主控晶片訪問該總線上的設備時,設備對應返回的數據,mcu主控晶片通過中斷方式接收從設備返回的數據;
從機設備有效數據存儲區(slave_dat_buf),每條總線分別對應相應的從機設備有效數據存儲區,用於存儲mcu主控晶片處理返回數據存儲區內的數據後提取的有效數據;
上傳數據緩存區(send_queue_buf),用於存儲所有從機設備有效數據存儲區(slave_dat_buf)內存儲的有效數據;
上位機通訊接口(send_prot),用於與上位機通訊連接,將上傳數據緩存區(send_queue_buf)內存儲的所有總線的有效數據發送至上位機。
本發明的有益效果為:通過mcu主控晶片以輪詢的方式處理總線上設備的返回數據,並且主控模塊連接多條總線,每條總線連接多個設備,mcu主控晶片能夠訪問所有總線的所有設備,無需切換,接線簡單,佔用資源少,並以中斷方式接收設備返回的數據,不僅減少了設備成本,而且進一步提高了mcu主控晶片的處理效率。
附圖說明
圖1為本發明的結構框架圖;
具體實施方式
下面結合附圖對本發明的具體實施方式作進一步說明:
如圖1所示,一種用於處理多個總線設備數據的方法,其特徵在於:包括以下步驟:
1)、當主控模塊接收到上位機發送的訪問總線[a,b,c]上設備[ai,bj,ck]的訪問命令時,主控模塊將訪問命令存儲到需要訪問設備所對應總線的總線命令緩存區(cmd_queue_buf);
2)、mcu主控晶片以輪詢的方式首先將通訊命令發送至總線a上的設備ai(i=1,2,n),並將該命令的狀態標記為正在運行狀態(stat_running),然後退出對總線a上設備ai(i=1,2,n)的操作;
然後繼續發送訪問命令到下一總線b上的設備bj(j=1,2,n),並將該命令的狀態也標記為正在運行狀態(stat_running),並依次發送訪問命令至總線c上的設備ck(k=1,2,n),該狀態表明還在等待該總線上該設備的響應或者還在處理從設備返回的數據;
3)、mcu主控晶片以中斷的方式接收總線上設備返回的數據並將該返回的數據存儲於返回數據存儲區(back_temp_buf);
4)、當mcu主控晶片發送完訪問總線c上的設備ck(k=1,2,n)的命令後,mcu主控晶片返回查看總線a對應的返回數據存儲區(back_temp_buf)內是否有返回的數據;
如果有數據返回則解析該返回的數據並提取有效數據存儲於總線a對應的從機設備有效數據存儲區(slave_dat_buf),並將該命令的狀態機標記為完成狀態(stat_ok),如果超過預定時間內總線上設備還沒有將數據返回,則將這條命令的狀態機標記為超時狀態(stat_timeout),如果在預訂時間內總線上設備沒有數據返回,則退出對該總線a的訪問;
5)、然後查看總線a的命令緩存區(cmd_queue_buf)當前處理命令的狀態值,如果該狀態值還是正在運行狀態(stat_running),退出對總線a的操作,繼續處理下一條總線b;如果該狀態值已經為完成狀態(stat_ok)或者超時狀態(stat_timeout),則繼續處理總線a的命令緩存區(cmd_queue_buf)的下個命令,即mcu主控晶片發送訪問命令至總線a上的下一臺需要訪問的設備am(m=1,2...n,m≠i),並將該設備am(m=1,2...n,m≠i)的狀態標記為正在運行狀態(stat_running),然後繼續處理下一條總線b;
6)、重複步驟4)和步驟5)直至需要訪問的所有總線上的所有設備都輪詢完,並將每條總線的從機設備有效數據存儲區(slave_dat_buf)的有效數據匯總到上傳數據緩存區(send_queue_buf);
7)、主控模塊的上位機通訊接口(send_prot)以dma方式將上傳數據緩存區(send_queue_buf)內的數據傳輸至上位機。
mcu主控晶片發送訪問命令前,mcu主控晶片以輪詢的方式先檢查各個總線的事件就緒列表中是否具有最高優先級的事件;如果有最高優先級事件,則優先處理該事件,當處理完該事件則將其狀態標誌為完成,當事件就緒列表中的所有事件處理完,則清除所有事件的狀態。
當一個最高優先級有多個事件時,則按照一個單位時間輪詢處理該最高優先級的多個事件,如果一個單位時間內該多個事件還沒處理完,就將這個事件運行的相關寄存器的值保存到堆棧中;然後處理下一總線的同優先級的事件;輪完所有總線的同優先級的事件後,再從堆棧中取出未處理完的事件的寄存器的值繼續處理。
一種用於處理多個總線設備數據的總線系統,其特徵在於;包括主控模塊、與主控模塊通訊連接的多條總線,每條所述的總線與多個設備通訊連接,並且每個設備都有獨立的通信地址;
所述主控模塊包括:
mcu主控晶片,用於控制整個系統的運行;任務的調度,所有總線的輪詢,根據每個命令的處理狀態(stat_machine)判斷是否要繼續處理該總線的數據,以及控制上傳數據接口dma的啟動和關閉;
總線接口(bus_prot),用於與總線通訊連接,總線接口與總線數量相對應;
總線命令緩存區(cmd_queue_buf),每條總線接口對應一個總線命令緩衝區(cmd_queue_buf),用於存儲mcu主控晶片訪問相對應總線上的設備的命令;
返回數據存儲區(back_temp_buf),每條總線分別對應相應的返回數據存儲區(back_temp_buf),用於存儲當mcu主控晶片訪問該總線上的設備時,設備對應返回的數據,mcu主控晶片通過中斷方式接收從設備返回的數據;
從機設備有效數據存儲區(slave_dat_buf),每條總線分別對應相應的從機設備有效數據存儲區,用於存儲mcu主控晶片處理返回數據存儲區內的數據後提取的有效數據;
上傳數據緩存區(send_queue_buf),用於存儲所有從機設備有效數據存儲區(slave_dat_buf)內存儲的有效數據;
上位機通訊接口(send_prot),用於與上位機通訊連接,將上傳數據緩存區(send_queue_buf)內存儲的所有總線的有效數據發送至上位機。
上述實施例和說明書中描述的只是說明本發明的原理和最佳實施例,在不脫離本發明精神和範圍的前提下,本發明還會有各種變化和改進,這些變化和改進都落入要求保護的本發明範圍內。