資料介紹
隨著汽車電子技術(shù)的高速發(fā)展和廣泛應(yīng)用,實(shí)現(xiàn)智能化和網(wǎng)絡(luò)化是汽車發(fā)展的必然趨勢(shì)。為簡(jiǎn)化日益增加的汽車電控設(shè)備的線路連接,提升系統(tǒng)的可靠性和故障診斷水平,實(shí)現(xiàn)各電控設(shè)備之間的數(shù)據(jù)資源共享,并建成開發(fā)的標(biāo)準(zhǔn)化、模塊化結(jié)構(gòu),汽車網(wǎng)絡(luò)總線技術(shù)得到了很大發(fā)展。目前,已經(jīng)開發(fā)出多種總線,如控制器局域網(wǎng)總線CAN、車內(nèi)網(wǎng)絡(luò)總線LIN、高速容錯(cuò)網(wǎng)絡(luò)總線FlexRay、面向媒體的系統(tǒng)傳輸總線MOST、更高帶寬和傳輸速率的車載以太網(wǎng)Ethernet等,這里給大家介紹在MM32F013x上實(shí)現(xiàn)LIN通信的功能應(yīng)用。
Part.1 什么是LIN
LIN 是 Local Interconnect Network 的縮寫,是基于 UART/SCI(Universal Asynchronous Receiver-Transmitter /Serial Communication Interface,通用異步收發(fā)器/串行通信接口)的低成本串行通信協(xié)議,可用于汽車、家電、辦公設(shè)備等多種領(lǐng)域。本文主要針對(duì)在MM32F013x上實(shí)現(xiàn)LIN在分布式的汽車電子網(wǎng)絡(luò)系統(tǒng)中的應(yīng)用。
LIN總線特點(diǎn)
- 低成本:幾乎車規(guī)級(jí)微控制器都具備LIN 通信必需的硬件
- 極少的信號(hào)線即可實(shí)現(xiàn)國際標(biāo)準(zhǔn)ISO9141 規(guī)定
- 傳輸速率最高可達(dá)20Kbit/s
- 單主控器/多從設(shè)備模式無需仲裁機(jī)制
- 從節(jié)點(diǎn)不需晶振或陶瓷震蕩器就能實(shí)現(xiàn)自同步,節(jié)省了從設(shè)備的硬件成本
- 保證信號(hào)傳輸?shù)难舆t時(shí)間
- 不需要改變LIN 從節(jié)點(diǎn)的硬件和軟件就可以在網(wǎng)絡(luò)上增加節(jié)點(diǎn)
- 通常一個(gè)LIN 網(wǎng)絡(luò)上節(jié)點(diǎn)數(shù)目小于12 個(gè)共有64 個(gè)標(biāo)志符

Part.2 LIN總線 幀結(jié)構(gòu)
幀(Frame)包含幀頭(Header)和應(yīng)答(Response)兩部分。
幀頭包括同步間隔段、同步段以及PID(Protected Identifier,受保護(hù)ID)段,應(yīng)答包括數(shù)據(jù)段和校驗(yàn)和段。
如圖所示,其中值“0”為顯性電平(Dominant),值“1”為隱性電平(Recessive),總線上實(shí)行“線-與”:當(dāng)總線上有大于等于一個(gè)節(jié)點(diǎn)發(fā)送顯性電平時(shí),總線呈顯性電平;所有的節(jié)點(diǎn)都發(fā)送隱性電平或不發(fā)送信息(不發(fā)送任何信息時(shí)總線默認(rèn)呈隱性電平)時(shí),總線才呈現(xiàn)隱性電平,即顯性電平起主導(dǎo)作用。

Part.3 程序配置
01、初始化MM32F013x UART1串口
從官網(wǎng)下載MM32F013x例程,參考MM32F0133C7P的UART例程的初始化以及中斷服務(wù)函數(shù),這里不在贅述。
02、LIN的發(fā)送
2.1 同步間隔段的發(fā)送
UART內(nèi)部有Break信號(hào)的發(fā)送,通過使能LIN,即可實(shí)現(xiàn)LIN的間隔段,代碼如下:
bool LINSendbreak(void)
{
uint16_t Tempcnt = 0;
UART2->CCR |= UART_CCR_LIN; //LIN Enable
UART2->CCR |= UART_CCR_BRK; //Send Break
while ((UART2->ISR & 0x00000080) == 0) //TXBRK_INTF
{
Tempcnt++;
if (Tempcnt > 5000)
return (false);
}
return (true);
}
2.2 數(shù)據(jù)的發(fā)送
數(shù)據(jù)的發(fā)送沿用原有的UART接口數(shù)據(jù)發(fā)送即可:
bool LINSendChar(uint8_t ch)
{
uint16_t Tempcnt = 0;
while ((UART2->CSR & UART_IT_TXIEN) == 0)//The loop is sent until it is finished
{
Tempcnt++;
if (Tempcnt > 5000)
return (false);
}
UART2->TDR = (ch & (uint16_t)0x00FF);
return (true);
}
2.3 數(shù)據(jù)包的發(fā)送
有了上面2個(gè)基礎(chǔ)函數(shù)進(jìn)行發(fā)送,現(xiàn)在來看下數(shù)據(jù)包的具體發(fā)送,從下圖中可以看出數(shù)據(jù)包是根據(jù)保護(hù)段的定義來進(jìn)行區(qū)分是發(fā)送信號(hào)幀還是診斷幀。

信號(hào)幀的數(shù)據(jù)就可以做成以下的方式:
bool LINSendMsg(void)
{
uint8_t check_sum, i;
frame_send.error = 0;
if (!LINSendbreak()) //Send Break
return (false);
if (!LINSendChar(0x55)) //Send Sync Byte
return (false);
msg_send.Data[0] = LINCalcParity(msg_send.Data[0]);
for (i = 0; i < 9; i++)
{
if (!LINSendChar(msg_send.Data[i])) //Send Data
return (false);
}
check_sum = LINCalcChecksum(msg_send.Data, 1);
if (!LINSendChar(check_sum)) //Send Checksum
return (false);
frame_send.state = IDLE;
return (true);
}
而診斷幀的就是:
bool LINSendID(void)
{
if (!LINSendbreak())
return (false);
if (!LINSendChar(0x55))
return (false);
msg_send.Data[0] = LINCalcParity(msg_send.Data[0]);
if (!LINSendChar(msg_send.Data[i]))
return (false);
return (true);
}
這樣就可以在等待UART中斷函數(shù)里收到從機(jī)返回的數(shù)據(jù)。
2.4 從機(jī)的接受與發(fā)送
從機(jī)收數(shù)據(jù)與正常的串口一樣,只需要做BRK信號(hào)的處理即可,從機(jī)收到數(shù)據(jù)以后按正常的返回?cái)?shù)據(jù),返回?cái)?shù)據(jù)就不需要發(fā)送BRK信號(hào)。
if (LIN_RxBuff[1] == LIN_PID_60_0x3C)
{
msg_send1.Data[0] = 0x3C;
msg_send1.Data[0] = LINCalcParity(msg_send1.Data[0]);
UART2->ICR |= UART_ICR_RXIDLE; //clear idle int bit
UART2->IER |= UART_IER_RXIDLE; //enable uart rx idle int
for (i = 1; i < 9; i++)
{
if (!LINSendChar(msg_send1.Data[i]))
return (false);
}
check_sum = LINCalcChecksum(msg_send1.Data, 1);
if (!LINSendChar(check_sum))
return (false);
}
Part.4 MM32F013x LIN通信功能演示
通過邏輯分析儀可以看到信號(hào)幀的數(shù)據(jù):

而診斷幀數(shù)據(jù)就有從機(jī)回應(yīng)的數(shù)據(jù):

有這個(gè)演示作為基礎(chǔ)就可以開發(fā)LIN的通訊產(chǎn)品了。
轉(zhuǎn)自:靈動(dòng)MM32MCU
- MM32F013x——ADC任意通道工作模式
- MM32F013x——RTC鬧鐘定時(shí)喚醒
- MM32F013x——移植EasyLogger組件
- MM32F013x——LIN 通信
- MM32F013x——UART 多處理器通信
- MM32F013x——UART 極性取反通信
- MM32F013x——UART 單線半雙工通信
- MM32F013x——ADC任意通道工作模式
- MM32F013x——萬年歷
- MM32F013x——移植EasyFlash組件
- MM32F013x——移植EasyLogger組件
- MM32F013x——Event Recorder使用方法
- 基于ARM Cortex M0的微控制器MM32F013x 22次下載
- MM32F013x——UART 單線半雙工通信
- MM32F013x——UART 極性取反通信
- 瑞薩RL78F24系列微控制器中的LIN總線主機(jī)配置方法 2.7k次閱讀
- 廣州唯創(chuàng)電子WT588F(C013)語音芯片:賦能智能玩具的“聲”動(dòng)未來 586次閱讀
- CKS32F107xx系列USART的LIN模式 980次閱讀
- Lin總線的定義以及靜電保護(hù)方案 2.2k次閱讀
- LIN數(shù)據(jù)總線ESD保護(hù)方案 1.3k次閱讀
- TSMaster 自定義 LIN 調(diào)度表編程指導(dǎo) 2k次閱讀
- MM32F0140 DMA學(xué)習(xí)筆記 1.3k次閱讀
- LIN總線系統(tǒng)的解析和應(yīng)用 4k次閱讀
- 基于MM32F5270控制器的I2S音頻播放 3.6k次閱讀
- 汽車智能電池傳感器MM912J637的主要特性及應(yīng)用電路 4.5k次閱讀
- 雙芯片解決方案MM912F634的主要特性及應(yīng)用分析 4.4k次閱讀
- LIN總線通信技術(shù)在汽車通信控制網(wǎng)絡(luò)中的應(yīng)用 7.8k次閱讀
- 什么是LIN總線? CAN和LIN的區(qū)別 12.5w次閱讀
- 基于LIN總線控制系統(tǒng)實(shí)現(xiàn)LIN開發(fā)平臺(tái)的搭建 7.2k次閱讀
- 汽車網(wǎng)絡(luò)LIN總線協(xié)議解析 1.8w次閱讀
下載排行
本周
- 1冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 2安川A1000變頻器中文版說明書
- 20.16 MB | 3次下載 | 3 積分
- 3直流電路的組成和基本定律
- 1.67 MB | 2次下載 | 免費(fèi)
- 4丹佛斯2800系列變頻器說明書
- 8.00 MB | 1次下載 | 5 積分
- 5PC8011同步開關(guān)型降壓3.5A單節(jié)鋰電池充電管理電路技術(shù)手冊(cè)
- 0.74 MB | 1次下載 | 免費(fèi)
- 6ES7243E+ES8311音頻錄制與播放電路資料
- 0.06 MB | 1次下載 | 5 積分
- 7SDM02 激光測(cè)距模塊產(chǎn)品手冊(cè)
- 0.43 MB | 1次下載 | 免費(fèi)
- 8SDFM 激光測(cè)距模塊模組手冊(cè)
- 0.54 MB | 1次下載 | 免費(fèi)
本月
- 1CH341編程器軟件NeoProgrammer_2.2.0.10
- 20.47 MB | 170次下載 | 1 積分
- 22025智能家居傳感器市場(chǎng)分析及創(chuàng)新應(yīng)用
- 3.11 MB | 43次下載 | 免費(fèi)
- 3RV1126B系列開發(fā)板產(chǎn)品資料
- 4.19 MB | 18次下載 | 免費(fèi)
- 4CH341編程軟件下載
- 2.50 MB | 16次下載 | 5 積分
- 5全志系列-米爾基于T153核心板開發(fā)板 四核異構(gòu)、3路千兆網(wǎng),賦能多元化工業(yè)場(chǎng)景
- 3.05 MB | 12次下載 | 免費(fèi)
- 6【開源】60余套STM32單片機(jī)、嵌入式Linux、物聯(lián)網(wǎng)、人工智能項(xiàng)目案例及入門學(xué)習(xí)資源包
- 10.55 MB | 8次下載 | 免費(fèi)
- 7冷柜-電氣控制系統(tǒng)講解
- 13.68 MB | 4次下載 | 10 積分
- 8特斯拉MODEL S車載充電機(jī)主電路回路原理圖
- 0.81 MB | 4次下載 | 3 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935137次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233094次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191448次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183356次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81604次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73824次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65991次下載 | 10 積分
電子發(fā)燒友App





創(chuàng)作
發(fā)文章
發(fā)帖
提問
發(fā)資料
發(fā)視頻
上傳資料賺積分
評(píng)論