通過USB上位機與帶CAN和/或LIN總線設備通訊的方法與流程
2023-04-27 17:52:26 1
![](http://img.xjishu.com/img/zl/2017/10/18122632565204.gif)
本發明涉及通訊控制技術領域,尤其涉及一種通過usb上位機與帶can和/或lin總線設備通訊的方法。
背景技術:
usb埠與can總線埠或lin總線埠之間的通信傳輸必須依賴於數據信號的轉換,二者發送的數據格式不一致,傳輸控制的協議也不一致,在現有技術中,usb埠轉can總線和/或lin總線,一般結構比較複雜,在轉換過程中存在漏洞,經常性出現死機、退出程序或程序終止現象,且程序無法升級,對於後續的使用帶來不便,因此,現有技術需要改進。
技術實現要素:
本發明實施例所要解決的一個技術問題是:提供一種通過usb上位機與帶can和/或lin總線設備通訊的方法,以解決現有技術中存在的問題。
根據本發明實施例的一個方面,提供的一種通過usb上位機與帶can和/或lin總線設備通訊的方法,包括:
系統上電,對bootloader區進行初始化,所述bootloader區為系統實現遠程更新的模塊;
在設定的第一時間閾值內檢測flash存儲區內是否有app程序,所述flash存儲區存儲can總線模塊或lin總線模塊的配置參數數據、app程序,所述app程序用於實現usb上位機與帶can和/或lin總線設備之間的通訊,所述第一時間閾值為10ms;
如果否,則通過usb上位機命令,觸發app下載協議分析處理程序,在第二時間閥值內運行app下載協議分析處理程序,直至flash存儲區內發現app程序;
如果是,則對app程序進行初始化,等待usb埠數據,觸發數據處理程序,所述觸發處理程序在設定的第二時間閾值內發送至usb埠,所述第二時間閾值為1ms;
當到達設定的第一時間閾值後,系統依次判斷進入的工作狀態,當檢測到某一工作狀態後,進入到當前狀態的工作模式子程序。
基於本發明上述通過usb上位機與帶can和/或lin總線設備通訊的方法的另一個實施例中,所述對app程序進行初始化包括:系統時鐘初始化、系統中斷分組初始化、串口初始化、定時器初始化、can總線模塊初始化、lin總線模塊初始化。
基於本發明上述通過usb上位機與帶can和/或lin總線設備通訊的方法的另一個實施例中,所述工作狀態包括:app檢測程序狀態、app下載協議分析處理程序狀態、can總線模塊數據通道狀態、can總線模塊配置通道狀態、lin總線模塊數據通道狀態、lin總線模塊配置通道狀態、進入bootloader檢測狀態。
基於本發明上述通過usb上位機與帶can和/或lin總線設備通訊的方法的另一個實施例中,所述app下載協議分析處理程序狀態包括:
系統上電,對bootloader區進行初始化,在設定的第一時間閾值檢測flash存儲區是否存在app程序;
如果存在,則跳轉到app程序中;
如果不存在則說明校驗失敗或參數燒錄過程中失敗,mcu重啟後等待上位機燒寫命令,執行app下載協議分析處理程序;
當接到上位機命令,依次執行上位機命令,運行下載協議分析處理程序,上位機命令包括:bootloader判斷命令、flash擦除命令、flash編程命令、復位命令,上位機下載app程序到mcu需要依次發送上位機命令;
當接收到的數據符合既定協議,則存儲數據,否則拋棄數據;
當正確接收到一串命令後,mcu根據上位機命令發送應答;
如果接收兩條命令之間的時間超過60s,則拋棄數據,同時認為燒錄失敗,並進入低功耗模式。
基於本發明上述通過usb上位機與帶can和/或lin總線設備通訊的方法的另一個實施例中,所述can總線模塊數據通道狀態包括:
can總線上有需要接收的數據,系統根據用戶設定的配置參數接收數據,系統接收數據時通過用戶設置的id和idmask過濾總線上的數據;
接收的數據符合用戶設定的can總線配置,則將數據保存到緩衝區中,然後通過usb埠反饋數據到電腦端上位機中;
電腦端上位機通過usb埠發送can總線數據到can總線數據發送通道;
mcu根據id號分析id號類型,並將待發送數據保存到usb埠接收緩衝區中;
根據協議計算待發送數據的發送次數,並按照發送次數將待發送數據封裝到can總線數據發送緩衝區,等待can總線空閒後發送。
基於本發明上述通過usb上位機與帶can和/或lin總線設備通訊的方法的另一個實施例中,所述can總線模塊配置通道狀態包括:
電腦端上位機通過usb埠發送can總線的配置命令;
如果校驗位正確,則保存配置到mcu緩衝區;
依次設置can總線的速率配置,idmask濾波器設置,id濾波器設置和模式設置,所述模式設置的默認模式為監聽模式,在監聽模式下不對所有id進行濾波,監聽總線上所有數據;
觸發usb埠通訊,通過usb埠發送數據,直至所有數據發送完畢。
基於本發明上述通過usb上位機與帶can和/或lin總線設備通訊的方法的另一個實施例中,所述lin總線模塊數據通道狀態包括:
lin總線上有需要接收的數據,將lin總線數據保存到緩衝區;
根據lin總線協議處理數據,並發送數據,如果mcu接收到上位機發送命令後,處於主機模式下,需要先發送間隔符,然後發送上位機要求發送的數據;
數據發送成功後,mcu通過usb埠反饋數據到電腦端上位機中。
基於本發明上述通過usb上位機與帶can和/或lin總線設備通訊的方法的另一個實施例中,所述lin總線模塊配置通道狀態包括:
電腦端上位機通過usb埠發送lin總線的配置命令;
如果校驗位正確,則保存配置到mcu緩衝區;
依次設置lin總線的主從機模式配置,從機地址配置,通訊速率配置,配置成功後,mcu將反饋應答給上位機;
觸發usb埠通訊,通過usb埠發送數據,直至所有數據發送完畢。
基於本發明上述通過usb上位機與帶can和/或lin總線設備通訊的方法的另一個實施例中,所述進入bootloader檢測狀態包括:
電腦端上位機通過usb埠發送進入bootloader區狀態的命令;
如果校驗正確,則mcu依次向單片機發送三次復位命令,如果3條命令中任何一條被打斷,mcu將不會進入在bootloader區,停留在app中繼續運行;
如果三個復位命令均置位,則mcu復位單片機,且停留在bootloader區中。
與現有技術相比,本發明包括以下優點:
本發明通過usb埠連接電腦上位機,按照預先設定的協議參數,對can總線模塊和/或lin總線模塊的參數配置進行修改,使用can總線和/或lin總線通訊測試驗證,能夠實現數據透傳。當遇到can總線和/或lin總線發送或接收數據出錯時,通過上位機就可讀取can總線和/或lin總線模塊發生的錯誤,協助用戶分析總線出錯原因,設置的參數被保存到單片機的flash中,可掉電保存,不需重複配置,以適應用戶在各種應用場合。發明具備遠程升級的功能,方便實用。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所使用的附圖做一簡單地介紹,顯而易見地,下面描述中的附圖是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
圖1是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的一個實施例的流程圖。
圖2是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的另一個實施例的流程圖。
圖3是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的又一個實施例的流程圖。
圖4是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的又一個實施例的流程圖。
圖5是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的又一個實施例的流程圖。
圖6是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的又一個實施例的流程圖。
圖7是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的又一個實施例的流程圖。
具體實施方式
為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例只是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
下面結合附圖和實施例對本發明提供的一種通過usb上位機與帶can和/或lin總線設備通訊的方法進行更詳細地說明。
圖1是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的一個實施例的流程圖,如圖1所示,該實施例的通過usb上位機與帶can和/或lin總線設備通訊的方法包括:
10,系統上電,對bootloader區進行初始化,所述bootloader區為系統實現遠程更新的模塊;
11,在設定的第一時間閾值內檢測flash存儲區內是否有app程序,所述flash存儲區存儲can總線模塊或lin總線模塊的配置參數數據、app程序,所述app程序用於實現usb上位機與帶can和/或lin總線設備之間的通訊,所述第一時間閾值為10ms;
12,如果否,則通過usb上位機命令,觸發app下載協議分析處理程序,在第二時間閥值內運行app下載協議分析處理程序,直至flash存儲區內發現app程序;
13,如果是,則對app程序進行初始化,等待usb埠數據,觸發數據處理程序,所述觸發處理程序在設定的第二時間閾值內發送至usb埠,所述第二時間閾值為1ms,所述對app程序進行初始化包括:系統時鐘初始化、系統中斷分組初始化、串口初始化、定時器初始化、can總線模塊初始化、lin總線模塊初始化;
14,當到達設定的第一時間閾值後,系統依次判斷進入的工作狀態,當檢測到某一工作狀態後,進入到當前狀態的工作模式子程序,系統以第一時間閾值為時間間隔檢測系統的運行的狀態,以便在不同的狀態中切換。
在本實施例中,系統的工作狀態包括:app檢測程序狀態、app下載協議分析處理程序狀態、can總線模塊數據通道狀態、can總線模塊配置通道狀態、lin總線模塊數據通道狀態、lin總線模塊配置通道狀態、進入bootloader檢測狀態,系統以10ms和1ms為間隔,其中每10ms檢測系統的運行的狀態,以便在不同的狀態中切換,每1ms系統將檢測usb串口發送觸發模式,所以系統在這7種狀態中不停的運行,在不同的狀態中運行各個狀態的子程序,各個狀態之間不會發生衝突,有序的執行電腦端上位機通過usb串口發送過來的命令,或者將接收到總線上的數據根據工作模式反饋到上位機。
圖2是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的另一個實施例的流程圖,如圖2所示,所述app下載協議分析處理程序狀態包括:
20,系統上電,對bootloader區進行初始化,在設定的第一時間閾值檢測flash存儲區是否存在app程序,系統以10ms為檢測時長閾值,當10ms檢測時間到達後,檢測單片機flash中的app程序;
21,如果存在,則跳轉到app程序中,執行app程序;
22,如果不存在,則說明校驗失敗或參數燒錄過程中失敗,mcu重啟後等待上位機燒寫命令,執行app下載協議分析處理程序,需要上位機發送命令,為保證能夠接收到上位機的命令,需要數據傳輸協議符合要求,系統與上位機能夠實現數據傳輸;
23,當接到上位機命令,依次執行上位機命令,運行下載協議分析處理程序,上位機命令包括:bootloader判斷命令、flash擦除命令、flash編程命令、復位命令,上位機下載app程序到mcu需要依次發送上位機命令;
24,當接收到的數據符合既定協議,則存儲數據,否則拋棄數據;
25,當正確接收到一串命令後,mcu根據上位機命令發送應答;
26,如果接收兩條命令之間的時間超過60s,則拋棄數據,同時認為燒錄失敗,並進入低功耗模式。
圖3是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的又一個實施例的流程圖,如圖3所示,所述can總線模塊數據通道分為數據發送通道和數據接收通道,can總線模塊數據通道狀態包括:
30,can總線上有需要接收的數據,系統根據用戶設定的配置參數接收數據,系統接收數據時通過用戶設置的id和idmask過濾總線上的數據;
31,接收的數據符合用戶設定的can總線配置,則將數據保存到緩衝區中,然後通過usb埠反饋數據到電腦端上位機中;
32,電腦端上位機通過usb埠發送can總線數據到can總線數據發送通道;
33,mcu根據id號分析id號類型,並將待發送數據保存到usb埠接收緩衝區中;
34,根據協議計算待發送數據的發送次數,並按照發送次數將待發送數據封裝到can總線數據發送緩衝區,等待can總線空閒後發送。
圖4是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的又一個實施例的流程圖,如圖4所示,所述can總線模塊配置通道狀態包括:
40,電腦端上位機通過usb埠發送can總線的配置命令;
41,如果校驗位正確,則保存配置到mcu緩衝區;
42,依次設置can總線的速率配置,idmask濾波器設置,id濾波器設置和模式設置,所述模式設置的默認模式為監聽模式,在監聽模式下不對所有id進行濾波,監聽總線上所有數據;
43,觸發usb埠通訊,通過usb埠發送數據,直至所有數據發送完畢。
圖5是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的又一個實施例的流程圖,如圖5所示,所述lin數據通道分為數據發送通道和數據接收通道,所述lin總線模塊數據通道狀態包括:
50,lin總線上有需要接收的數據,將lin總線數據保存到緩衝區,在接收lin總線上數據時,無論當前用戶配置的是主機模式還是從機模式,都將保存數據,且不需要用戶發送讀取lin總線數據命令,mcu將自動通過usb埠反饋數據到電腦端上位機中;
51,在lin總線數據發送通道,根據lin總線協議處理並發送數據,如果mcu接收到上位機發送命令後,處於主機模式下,需要先發送間隔符,然後發送上位機要求發送的數據;
52,數據發送成功後,mcu通過usb埠反饋數據到電腦端上位機中。
圖6是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的又一個實施例的流程圖,如圖6所示,所述lin總線模塊配置通道狀態包括:
60,電腦端上位機通過usb埠發送lin總線的配置命令;
61,如果校驗位正確,則保存配置到mcu緩衝區;
62,依次設置lin總線的主從機模式配置,從機地址配置,通訊速率配置,配置成功後,mcu將反饋應答給上位機;
63,觸發usb埠通訊,通過usb埠發送數據,直至所有數據發送完畢。
圖7是本發明的通過usb上位機與帶can和/或lin總線設備通訊的方法的又一個實施例的流程圖,如圖7所示,所述進入bootloader檢測狀態包括:
70,電腦端上位機通過usb埠發送進入bootloader區狀態的命令;
71,如果校驗正確,則mcu依次向單片機發送三次復位命令,如果3條命令中任何一條被打斷,mcu將不會進入在bootloader區,停留在app中繼續運行;
72,如果三個復位命令均置位,則mcu復位單片機,且停留在bootloader區中。
本發明通過專用上位機或使用電腦的usb串口監控軟體,對can總線或lin總線的相關配置進行修改,自動發送和接收can總線或lin總線上的數據,接收到的數據將根據工作模式反饋給上位機,lin總線還支持多於8位元組的數據透傳,可以滿足使用can總線和lin總線通訊測試驗證,能夠進行數據透傳。當遇到can和/或lin總線發送或接收數據出錯時,通過上位機就可讀取通訊盒can和/或lin總線模塊發生的錯誤,協助用戶分析總線出錯原因。用戶所設置的參數將被保存到單片機的flash中,可掉電保存,不需重複配置,並支持兩種工作模式,分別是監聽模式和正常模式,以適應用戶在各種應用場合的使用。同時,為了降低系統在使用過程中可能存在的漏洞,且因程序無法升級所帶來的風險,本系統具備遠程升級的功能。
以上對本發明所提供的一種通過usb上位機與帶can和/或lin總線設備通訊的方法進行了詳細介紹,本文中應用了具體個例對本發明的原理及實施方式進行了闡述,以上實施例的說明只是用於幫助理解本發明的方法及其核心思想;同時,對於本領域的一般技術人員,依據本發明的思想,在具體實施方式及應用範圍上均會有改變之處,綜上所述,本說明書內容不應理解為對本發明的限制。
最後應說明的是:以上所述僅為本發明的優選實施例而已,並不用於限制本發明,儘管參照前述實施例對本發明進行了詳細的說明,對於本領域的技術人員來說,其依然可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特徵進行等同替換,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。