王勢(shì)權(quán) 吳長(zhǎng)水
摘 要:針對(duì)某車載終端與CAN總線間的長(zhǎng)數(shù)據(jù)傳輸問(wèn)題,以STM32F103單片機(jī)為主控制器,設(shè)計(jì)一種符合SAE J1939多包傳輸協(xié)議的底層軟件。根據(jù)SAE J1939協(xié)議中多包數(shù)據(jù)傳輸工作原理,基于STM32CubeMX硬件平臺(tái)對(duì)控制器CAN節(jié)點(diǎn)端口進(jìn)行初始化配置,在Keil5開(kāi)發(fā)環(huán)境下,實(shí)現(xiàn)J1939多包傳輸?shù)讓榆浖_(kāi)發(fā),最后開(kāi)發(fā)上位機(jī)軟件對(duì)所設(shè)計(jì)的底層軟件進(jìn)行驗(yàn)證。實(shí)驗(yàn)結(jié)果表明,該底層軟件能夠穩(wěn)定有效地進(jìn)行長(zhǎng)數(shù)據(jù)多包傳輸,符合設(shè)計(jì)要求。
關(guān)鍵詞:STM32F103;SAE J1939;多包傳輸;底層軟件;汽車電子控制
DOI:10. 11907/rjdk. 201186????????????????????????????????????????????????????????????????? 開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
中圖分類號(hào):TP319 ? 文獻(xiàn)標(biāo)識(shí)碼:A ??????????????? 文章編號(hào):1672-7800(2020)011-0126-05
Underlying Software Design of J1939 Multi-packet Transmission
Based on STM32F103
WANG Shi-quan,WU Chang-shui
(College of Mechanical and Automotive Engineering, Shanghai University of Engineering Science, Shanghai 201620, China)
Abstract: Aiming at the problem of long data transmission between a vehicle terminal and the CAN bus, the STM32F103 single-chip microcomputer is used as the main controller, and an underlying software conforming to the SAE J1939 multi-packet transmission protocol is designed. According to the working principle of multi-packet data transmission in the SAE J1939 protocol, this paper initializes the configuration of the CAN node port of the controller based on the STM32CubeMX hardware platform. In the development environment of Keil5, the development of the underlying software for the multi-packet transmission of J1939 is realized. The upper computer software verifies the design of the underlying software. The experimental results show that the underlying software can stably and efficiently perform long data multi-packet transmission, which meets the design requirements.
Key Words: STM32F103; SAE J1939; multi-packet transmission; underlying software; automotive electronic control
0 引言
重型柴油車國(guó)六標(biāo)準(zhǔn)首次對(duì)車載監(jiān)控終端提出了要求,即終端能夠讀取并存儲(chǔ)車輛數(shù)據(jù)流信息和OBD信息[1-2]。SAE J1939作為目前商用車中最廣泛的應(yīng)用層協(xié)議,描述了重型車輛現(xiàn)場(chǎng)總線的一種網(wǎng)絡(luò)應(yīng)用,其以CAN2.0B作為網(wǎng)絡(luò)核心協(xié)議,包括物理層和數(shù)據(jù)鏈路層,數(shù)據(jù)傳輸速率可達(dá)250kbps[3-5]。
對(duì)于符合SAE J1939的CAN總線各節(jié)點(diǎn)間信息交互及診斷報(bào)文收發(fā),數(shù)據(jù)長(zhǎng)度小于8個(gè)字節(jié)時(shí),單幀即可完成數(shù)據(jù)發(fā)送,數(shù)據(jù)長(zhǎng)度大于8個(gè)字節(jié)時(shí),需要使用SAE J1939多包傳輸協(xié)議[6]。劉明[7]研究J1939在ECU通信中的功能應(yīng)用、具體通訊流程及應(yīng)用實(shí)例;謝娟娟等[8]分析多包傳輸協(xié)議在商用車整車CAN網(wǎng)絡(luò)開(kāi)發(fā)過(guò)程中的應(yīng)用;李志濤[9]提出一種基于VSPY3工具的多幀總線數(shù)據(jù)庫(kù)設(shè)計(jì)方法;董建業(yè)等[10]在VC6.0環(huán)境下設(shè)計(jì)并實(shí)現(xiàn)CAN總線長(zhǎng)幀數(shù)據(jù)拆裝與重組。
上述文獻(xiàn)大多只對(duì)SAE J1939多包傳輸在CAN總線中的應(yīng)用進(jìn)行分析,沒(méi)有對(duì)底層傳輸軟件作詳細(xì)設(shè)計(jì)。本文在分析J1939協(xié)議多包傳輸工作原理基礎(chǔ)上,基于STM32平臺(tái)開(kāi)發(fā)一種多包傳輸?shù)讓榆浖?。該軟件主要由多包接收與多包發(fā)送兩部分組成,并對(duì)多包數(shù)據(jù)收發(fā)的各階段進(jìn)行詳細(xì)設(shè)計(jì),能夠?qū)崿F(xiàn)基于J1939協(xié)議的CAN網(wǎng)絡(luò)節(jié)點(diǎn)間多包數(shù)據(jù)傳輸,適用于商用車車載監(jiān)控終端開(kāi)發(fā)。
1 SAE J1939多包傳輸工作原理
1.1 SAE J1939數(shù)據(jù)結(jié)構(gòu)
SAE J1939協(xié)議對(duì)CAN2.0B協(xié)議擴(kuò)展幀的29位ID進(jìn)行了重新定義,并與數(shù)據(jù)域組成了SAE J1939協(xié)議數(shù)據(jù)單元(PDU)[11]。協(xié)議數(shù)據(jù)單元由優(yōu)先級(jí)(P)、保留位(R)、數(shù)據(jù)頁(yè)(DP)、PDU格式(PF)、特定PDU(PS)、源地址(SA)和數(shù)據(jù)段組成[12]。
1.2 SAE J1939多包傳輸通訊過(guò)程
SAE J1939在數(shù)據(jù)鏈路層對(duì)多包數(shù)據(jù)傳輸方法進(jìn)行定義,主要包括數(shù)據(jù)拆裝、重組和連接管理[13]。對(duì)于采用多包傳輸?shù)腃AN幀消息,其數(shù)據(jù)域的第1個(gè)字節(jié)從1開(kāi)始作為數(shù)據(jù)包的序號(hào),后7個(gè)字節(jié)用于存放數(shù)據(jù),按照編號(hào)依次發(fā)送數(shù)據(jù)包,最后一個(gè)數(shù)據(jù)包未使用的字節(jié),使用0xFF進(jìn)行補(bǔ)充。接收節(jié)點(diǎn)根據(jù)數(shù)據(jù)域中首字節(jié)的大小重新組合出原有數(shù)據(jù)。如果消息需要發(fā)送到多個(gè)節(jié)點(diǎn)或是全局,無(wú)需使用數(shù)據(jù)流控制管理功能,只需通過(guò)廣播公告消息完成長(zhǎng)數(shù)據(jù)發(fā)送即可。如果多包數(shù)據(jù)需要發(fā)送到指定的目標(biāo)地址,必須使用連接模式下的點(diǎn)對(duì)點(diǎn)會(huì)話,這種連接管理可以實(shí)現(xiàn)CAN網(wǎng)絡(luò)節(jié)點(diǎn)間虛擬連接的打開(kāi)、關(guān)閉和數(shù)據(jù)流控制。
在進(jìn)行多包數(shù)據(jù)傳輸時(shí),若目標(biāo)地址為全局地址,發(fā)送節(jié)點(diǎn)首先發(fā)送一條TP.CM_BAM,向其它節(jié)點(diǎn)聲明自己要發(fā)送多包消息,之后可直接使用TP.DT進(jìn)行數(shù)據(jù)傳輸,而不必等待接收節(jié)點(diǎn)響應(yīng),數(shù)據(jù)傳輸完成后也沒(méi)有關(guān)閉連接操作。若目標(biāo)地址為特定地址,發(fā)送節(jié)點(diǎn)必須先與接收節(jié)點(diǎn)建立虛擬連接,發(fā)送節(jié)點(diǎn)首先要發(fā)送一條TP.CM_RTS消息,等待接收節(jié)點(diǎn)返回一條TP.CM_CTS后,數(shù)據(jù)傳輸才正式開(kāi)始,數(shù)據(jù)傳輸完成后,接收節(jié)點(diǎn)返回結(jié)束應(yīng)答TP.CM_EndOfMsgAck并關(guān)閉連接,數(shù)據(jù)傳輸結(jié)束。
2 CAN端口在STM32CubeMX中的配置
2.1 底層硬件
控制器主芯片采用意法半導(dǎo)體集團(tuán)(ST)所產(chǎn)芯片STM32F103RCT6,CAN收發(fā)器芯片為TJA1050。主控芯片STM32F103RCT6采用ARM公司32位Cortex-M3內(nèi)核,其內(nèi)部帶有支持CAN2.0B協(xié)議的CAN控制器,3個(gè)發(fā)送郵箱,2個(gè)3級(jí)深度的接收郵箱,3級(jí)14個(gè)可調(diào)節(jié)的濾波器,支持11位標(biāo)準(zhǔn)幀或29位擴(kuò)展幀收發(fā),最高支持通訊速率1Mbps[14]。TJA1050是一種標(biāo)準(zhǔn)的高速CAN收發(fā)器,可以與STM32自帶的CAN控制器主控芯片相結(jié)合,為CAN總線提供差動(dòng)發(fā)送功能,為STM32CAN控制器提供差動(dòng)接收功能,實(shí)現(xiàn)車載終端與CAN總線信號(hào)的交互。
2.2 CAN端口初始化配置
STM32CubeMX集成了一個(gè)全面的圖形化軟件設(shè)置平臺(tái),支持STM32全系列芯片,用戶可以非常方便地配置MCU的引腳、時(shí)鐘、外設(shè)等,并且支持自動(dòng)生成工程項(xiàng)目文件[15]。首先對(duì)系統(tǒng)時(shí)鐘進(jìn)行配置,STM32CubeMX極大地簡(jiǎn)化了開(kāi)發(fā)人員的工作,使用更形象的圖形化界面表示時(shí)鐘配置關(guān)系。參考STM32F103官方數(shù)據(jù)手冊(cè),選取外部8MHz晶振作為系統(tǒng)輸入時(shí)鐘,配置鎖相環(huán)(PLL)倍頻至72MHz為系統(tǒng)時(shí)鐘,并配置CAN外設(shè)掛載的APB1總線時(shí)鐘為最大值36MHz。然后初始化CAN端口GPIO引腳模式,配置CAN_RX引腳PA11為輸入模式,CAN_TX引腳PA12為復(fù)用推挽輸出模式。
最后對(duì)CAN工作模式進(jìn)行配置,配置過(guò)程下:①配置CAN總線波特率,根據(jù)手冊(cè)可知CAN總線波特率計(jì)算公式為:
BaudRate=Fpclktsync+tbs1+tbs2×brp (1)
其中,F(xiàn)pclk為CAN外設(shè)掛載的總線時(shí)鐘頻率,為36MHz,brp為分頻系數(shù),設(shè)定為8,tsync為STM32中CAN位時(shí)序的同步段,固定位1,tbs1和tbs2為CAN位時(shí)序的BS1段和BS2段,設(shè)定為9和8,由此確定CAN網(wǎng)絡(luò)波特率為250kbps,滿足SAE J1939報(bào)文傳輸速率要求;②禁用時(shí)間觸發(fā)模式,該模式只有在需要生成接收發(fā)送時(shí)間戳?xí)r才啟用;③啟動(dòng)自動(dòng)離線管理,當(dāng)報(bào)文發(fā)送錯(cuò)誤超過(guò)一定次數(shù)時(shí),使CAN總線處于離線狀態(tài),關(guān)閉CAN節(jié)點(diǎn)收發(fā);④啟用CAN網(wǎng)絡(luò)自動(dòng)喚醒,CAN外設(shè)可使用軟件進(jìn)入低功耗睡眠模式,當(dāng)檢測(cè)到總線活動(dòng)時(shí)自動(dòng)喚醒;⑤禁用報(bào)文自動(dòng)重傳,當(dāng)報(bào)文發(fā)送失敗時(shí),為了不影響其它報(bào)文的正常發(fā)送,默認(rèn)發(fā)送失敗的報(bào)文只重傳1次;⑥禁用接收郵箱報(bào)文鎖定模式,當(dāng)接收郵箱溢出時(shí),新報(bào)文覆蓋舊報(bào)文;⑦啟用報(bào)文發(fā)送優(yōu)先級(jí)由幀ID標(biāo)識(shí)符決定,當(dāng)CAN外設(shè)的發(fā)送郵箱中有多個(gè)待發(fā)送報(bào)文時(shí),根據(jù)存進(jìn)發(fā)送郵箱的報(bào)文ID優(yōu)先級(jí)順序發(fā)送;⑧將該CAN外設(shè)工作設(shè)定在正常模式,只有當(dāng)調(diào)試程序時(shí),可選用其它模式進(jìn)行測(cè)試。
CAN端口及工作模式初始化配置完成后,使用STM32CubeMX平臺(tái)自帶的Generate Code工具可生成初始化MDK工程,將所生成的工程文件導(dǎo)入Keil5中,在此基礎(chǔ)上進(jìn)行J1939多包傳輸?shù)讓榆浖_(kāi)發(fā)。
3 J1939多包傳輸實(shí)現(xiàn)
在STM32CubeMX生成的MDK文件中,包含有一個(gè)STM32的抽象層集成軟件HAL庫(kù)[16],在Keil5開(kāi)發(fā)環(huán)境下,主要通過(guò)HAL庫(kù)進(jìn)行編程。本文設(shè)計(jì)的J1939多包傳輸?shù)讓榆浖捎幂喸兎绞竭M(jìn)行CAN節(jié)點(diǎn)數(shù)據(jù)收發(fā),并設(shè)置消息緩存隊(duì)列,保證接收發(fā)送數(shù)據(jù)不掉幀。首先設(shè)置J1939_MASSAGE結(jié)構(gòu)體,實(shí)現(xiàn)長(zhǎng)數(shù)據(jù)與HAL庫(kù)自帶的CAN驅(qū)動(dòng)結(jié)構(gòu)體賦值,然后設(shè)置接收步驟結(jié)構(gòu)體J1939_TP_Rx_Step和發(fā)送步驟結(jié)構(gòu)體J1939_TP_Tx_Step,用于標(biāo)識(shí)多包數(shù)據(jù)傳輸?shù)牟煌A段,以便對(duì)不同連接管理消息進(jìn)行解析和存儲(chǔ),同時(shí)加入超時(shí)判斷機(jī)制,保證長(zhǎng)數(shù)據(jù)傳輸?shù)耐暾?,最后設(shè)置一個(gè)心跳函數(shù)J1939_Poll,該函數(shù)由接收函數(shù)J1939_ReceiveMessages和發(fā)送函數(shù)J1939_TransmitMessages兩部分組成,用于驅(qū)動(dòng)總線數(shù)據(jù)收發(fā),并將收發(fā)數(shù)據(jù)存入消息緩存隊(duì)列。
在進(jìn)行長(zhǎng)數(shù)據(jù)接收時(shí),首先進(jìn)入接收等待階段J1939_TP_RX_WAIT,保存長(zhǎng)數(shù)據(jù)源地址、總字節(jié)數(shù)、數(shù)據(jù)包個(gè)數(shù)、參數(shù)組編號(hào),并解析該幀數(shù)據(jù)域控制字節(jié)。若為點(diǎn)對(duì)點(diǎn)會(huì)話,跳轉(zhuǎn)至接收準(zhǔn)備階段J1939_TP_RX_READY,返回CTS消息,與長(zhǎng)數(shù)據(jù)源地址建立虛擬連接,寫入控制字節(jié)0x11,向源地址返回可接收的數(shù)據(jù)包個(gè)數(shù),將要接收的下一個(gè)數(shù)據(jù)包編號(hào)并確認(rèn)長(zhǎng)數(shù)據(jù)參數(shù)組編號(hào),之后跳轉(zhuǎn)至數(shù)據(jù)接收階段J1939_TP_RX_DATA;若為廣播公告會(huì)話,則直接跳轉(zhuǎn)至數(shù)據(jù)接收階段J1939_TP_RX_DATA。在數(shù)據(jù)接收階段,根據(jù)存儲(chǔ)的長(zhǎng)數(shù)據(jù)總數(shù)據(jù)包個(gè)數(shù),可判斷是否接收到最后一個(gè)數(shù)據(jù)包,若接收到最后一包數(shù)據(jù),則跳轉(zhuǎn)至接收完成階段J1939_RX_DONE。在接收完成階段,廣播公告會(huì)話根據(jù)數(shù)據(jù)包總字節(jié)數(shù),完成長(zhǎng)數(shù)據(jù)重組;點(diǎn)對(duì)點(diǎn)會(huì)話首先返回消息結(jié)束應(yīng)答TP.CM_EndOfMsgAck,確認(rèn)收到的總數(shù)據(jù)字節(jié)數(shù)和數(shù)據(jù)包個(gè)數(shù),中斷虛擬連接,然后完成長(zhǎng)數(shù)據(jù)重組。
在進(jìn)行長(zhǎng)數(shù)據(jù)發(fā)送時(shí),首先進(jìn)入發(fā)送等待階段J1939_TP_TX_WAIT,對(duì)長(zhǎng)數(shù)據(jù)進(jìn)行 拆分,確定要發(fā)送的長(zhǎng)數(shù)據(jù)參數(shù)組編號(hào)、字節(jié)數(shù)、包個(gè)數(shù),并對(duì)最后一包不足7個(gè)字節(jié)的數(shù)據(jù)位補(bǔ)充0xFF。若該長(zhǎng)數(shù)據(jù)目標(biāo)地址為特定地址,跳轉(zhuǎn)至連接請(qǐng)求階段J1939_TP_TX_CM_START,裝載RTS消息,寫入數(shù)據(jù)域控制字節(jié)0x10,長(zhǎng)數(shù)據(jù)總字節(jié)數(shù),將要發(fā)送的數(shù)據(jù)包個(gè)數(shù)及長(zhǎng)數(shù)據(jù)參數(shù)組編號(hào),跳轉(zhuǎn)至連接等待階段J1939_TP_TX_CM_WAIT,解析目標(biāo)地址返回的CTS消息,包括可接收的數(shù)據(jù)包個(gè)數(shù)及將要接收的下一個(gè)數(shù)據(jù)包編號(hào),跳轉(zhuǎn)至數(shù)據(jù)發(fā)送階段J1939_TP_TX_DT;若該長(zhǎng)數(shù)據(jù)目標(biāo)地址為全局,則跳轉(zhuǎn)至廣播公告準(zhǔn)備階段J1939_TP_TX_BAM,寫入控制字節(jié)0x20,長(zhǎng)數(shù)據(jù)總字節(jié)數(shù)、數(shù)據(jù)包個(gè)數(shù)及參數(shù)組編號(hào),跳轉(zhuǎn)至數(shù)據(jù)發(fā)送階段J1939_TP_TX_DT。在數(shù)據(jù)發(fā)送階段,廣播公告消息按照長(zhǎng)數(shù)據(jù)數(shù)據(jù)包編號(hào)依次發(fā)送,點(diǎn)對(duì)點(diǎn)會(huì)話按照連接管理消息中的流控制完成所有數(shù)據(jù)包發(fā)送。當(dāng)所有數(shù)據(jù)包發(fā)送完成,進(jìn)入發(fā)送結(jié)束階段J1939_TX_DONE,對(duì)J1939發(fā)送結(jié)構(gòu)體變量進(jìn)行清零,以便下一長(zhǎng)數(shù)據(jù)發(fā)送。
4 測(cè)試與驗(yàn)證
在Visual Studio平臺(tái)上搭建上位機(jī)軟件,對(duì)J1939多包傳輸?shù)讓榆浖M(jìn)行驗(yàn)證。上位機(jī)軟件通過(guò)調(diào)用CAN驅(qū)動(dòng)動(dòng)態(tài)鏈接庫(kù),實(shí)現(xiàn)CAN報(bào)文收發(fā)功能,在選擇測(cè)試配置一欄,可選擇不同模式下的多包數(shù)據(jù)傳輸,包括請(qǐng)求PGN、廣播公告消息、點(diǎn)對(duì)點(diǎn)會(huì)話等。通過(guò)USB-CAN連接下位機(jī)進(jìn)行測(cè)試,實(shí)際測(cè)試結(jié)果如圖7所示。
圖7(a)為點(diǎn)對(duì)點(diǎn)會(huì)話模式下車輛VIN碼的多幀傳輸測(cè)試,下位機(jī)首先向上位機(jī)請(qǐng)求車輛VIN碼的參數(shù)組編號(hào)0x00FEEC,上位機(jī)收到請(qǐng)求后,首先發(fā)送一個(gè)TP.CM_RTS,其中0x10為控制字節(jié)16,表示該幀消息屬于指向下位機(jī)地址的發(fā)送請(qǐng)求(RTS),0x0011表示上位機(jī)將要發(fā)送的長(zhǎng)數(shù)據(jù)為17個(gè)字節(jié),0x03表示該長(zhǎng)數(shù)據(jù)共分為3個(gè)數(shù)據(jù)包發(fā)送,0xFF為填充字節(jié),0x00FEEC為將要發(fā)送數(shù)據(jù)所在的參數(shù)組編號(hào)。當(dāng)下位機(jī)收到RTS消息發(fā)送請(qǐng)求后,回復(fù)一個(gè)TP.CM_CTS,其中0x11為控制字節(jié)17,表示該幀消息為指向上位機(jī)地址的準(zhǔn)備發(fā)送(CTS),0x03為下位機(jī)可接收的數(shù)據(jù)包個(gè)數(shù),0x01表示下位機(jī)請(qǐng)求上位機(jī)從第一包數(shù)據(jù)開(kāi)始發(fā)送,0xFF為填充字節(jié),0x00FEEC為下位機(jī)確認(rèn)接收到的數(shù)據(jù)為車輛VIN碼PGN編號(hào)。上位機(jī)收到返回的CTS消息后,調(diào)用連接管理TP.DT,按下位機(jī)最大接收數(shù)據(jù)包進(jìn)行發(fā)送,當(dāng)所有數(shù)據(jù)傳輸完成后,下位機(jī)發(fā)送一個(gè)TP.CM_EndOfMsgAck,其中0x13為控制字節(jié)19,表示該幀消息為結(jié)束應(yīng)答,0x11表示接收到的數(shù)據(jù)總字節(jié)數(shù)為17,0x03表示完整接收到了3個(gè)數(shù)據(jù)包,0xFF為填充字節(jié),0x00FEEC表示所接收到的數(shù)據(jù)為車輛VIN碼。
圖7(b)為廣播公告模式下車輛故障碼測(cè)試。以故障2為例,由上位機(jī)發(fā)出廣播公告消息TP.CM_BAM,其中0x20為控制字節(jié)32,表示該幀消息屬于廣播公告消息,0x18表示將要發(fā)送的長(zhǎng)數(shù)據(jù)為24個(gè)字節(jié),0x04表示該長(zhǎng)數(shù)據(jù)分為4個(gè)數(shù)據(jù)包發(fā)送,0xFF為填充字節(jié),0x00FECA表示該廣播公告消息為車輛故障碼。
5 結(jié)語(yǔ)
本文分析J1939多包傳輸工作原理,設(shè)計(jì)一種基于輪詢收發(fā)機(jī)制的多階段長(zhǎng)數(shù)據(jù)多包傳輸?shù)讓榆浖?,在STM32CubeMX環(huán)境下,通過(guò)可視化編程完成初始化工程搭建,節(jié)省開(kāi)發(fā)時(shí)間,使用HAL庫(kù)編程,保證了該底層軟件的最大可移植性。但文中并未對(duì)多包傳輸過(guò)程中的超時(shí)判斷及錯(cuò)誤診斷機(jī)制進(jìn)行詳細(xì)設(shè)計(jì),后續(xù)將進(jìn)一步研究完善。
參考文獻(xiàn):
[1] 生態(tài)環(huán)境部辦公廳. 重型柴油車污染物排放限值及測(cè)量方法(中國(guó)第六階段). GB 17691-2018[S]. 2018.
[2] 羅源. 基于國(guó)六標(biāo)準(zhǔn)的重型柴油車遠(yuǎn)程排放監(jiān)控系統(tǒng)研發(fā)[D]. 杭州:浙江大學(xué),2019.
[3] 駱志宏,許勇,馬秋香. 商用車在線故障診斷系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)測(cè)量與控制,2015,23(4):1098-1101.
[4] 梁云龍. 基于AUTOSAR的J1939通訊與診斷模塊設(shè)計(jì)[D]. 長(zhǎng)春:吉林大學(xué),2019.
[5] 付衍法,崔冬梅,馬乾. 基于SAE J1939協(xié)議的發(fā)動(dòng)機(jī)離線診斷軟件開(kāi)發(fā)[J]. 建筑機(jī)械化,2019,40(4):57-59.
[6] 汪志斌,吳長(zhǎng)水,黃敏濤,等. 基于J1939協(xié)議的車輛故障診斷與ECU報(bào)文解析[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2017,17(12):7-11.
[7] 劉明. J1939協(xié)議在ECU通信中的應(yīng)用研究[J]. 電子科技,2015,28(5):36-38,42.
[8] 謝娟娟,李晉,鄭創(chuàng)明. SAE J1939多包傳輸協(xié)議及應(yīng)用分析[J]. 周口師范學(xué)院學(xué)報(bào),2016,33(2):66-67.
[9] 李志濤. 基于VSPY3的CAN總線多幀數(shù)據(jù)庫(kù)的設(shè)計(jì)與應(yīng)用[J]. 汽車電器,2016(6):43-45,48.
[10] 董建業(yè),劉子龍. 基于J1939標(biāo)準(zhǔn)的長(zhǎng)幀數(shù)據(jù)應(yīng)用[J]. 電子技術(shù)與軟件工程,2015(2):18-19.
[11] 曾海林,李懿,陳平松. 基于J1939的發(fā)動(dòng)機(jī)通信控制軟件設(shè)計(jì)[J]. 測(cè)控技術(shù),2018,37(5):156-160.
[12] 周良潤(rùn). 基于J1939協(xié)議的汽車信息采集系統(tǒng)的研究[D]. 武漢:湖北工業(yè)大學(xué),2017.
[13] 藺春明,王守勝,高美芹,等. 商用車CAN總線多幀數(shù)據(jù)通訊[J]. 汽車實(shí)用技術(shù),2018,44(11):87-91.
[14] 董小輝,胡錦波,黃浩,等. 基于SAE J1939的商用車智能車載終端系統(tǒng)設(shè)計(jì)[J]. 計(jì)算機(jī)測(cè)量與控制,2019,27(7):209-213.
[15] 劉鵬. 基于STM32F407的雙CAN總線設(shè)計(jì)與實(shí)現(xiàn)[J]. 科技視界,2016(13):130-132.
[16] 許鵬程,李小波. MATLAB與STM32CubeMX聯(lián)合的嵌入式開(kāi)發(fā)方法[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2016,16(10):14-16.
(責(zé)任編輯:孫 娟)