從事汽車MCU開發(fā)的小伙伴,對(duì)CAN/CAN FD、Ethernet、Lin這幾種總線,應(yīng)該比較熟悉,即使沒(méi)具體開發(fā)過(guò),也應(yīng)該聽過(guò)。如果想更深刻的理解這些總線,實(shí)踐是最行之有效的方法。在之前的文章中,已經(jīng)分享了《基于Tricore的CANFD入門工程》、《基于Tricore的UDP/TCP入門工程》、《基于Aurix的以太網(wǎng)實(shí)踐:TCP Client實(shí)現(xiàn)坑點(diǎn)》,本文基于TC397_5V_TFT開發(fā)板+Tasking編譯器,對(duì)英飛凌官網(wǎng)的Master Lin進(jìn)行了二次開發(fā),助力需要的學(xué)習(xí)Lin總線的小伙伴,文末有工程源碼鏈接。
1、Lin收發(fā)器原理圖
TC397_5V_TFT開發(fā)板的原理圖,可以在英飛凌官網(wǎng)下載,具體下載地址如下:
https://www.infineon.com/dgdl/Infineon-ApplicationKitManual_TC3X7-UM-v02_00-EN.pdf?fileId=5546d462696dbf120169b454383c483d
這里,我們關(guān)注Lin收發(fā)器(TLE7259-3GE)需要配置的端口,如下圖:
上圖中,RxD需要使用P10.6,TxD需要使用P10.5,這兩個(gè)Pin對(duì)應(yīng)ASCLIN2模塊。
對(duì)于外接的Lin Connector,GND可以接跳線2或者跳線5,LIN BUS對(duì)應(yīng)跳線4,如下所示:
2、Lin Code
本文Lin通信采用了中斷收/發(fā)處理模式,且開發(fā)板采用Master模式。Master負(fù)責(zé)發(fā)送Header,ID=0x26(主響應(yīng))/ID=0x33(從響應(yīng)),通信速率為19200bps。
/* 主函數(shù)調(diào)用 */
void ASCLIN_LIN_Master_Send_Message(void)
{
uint8 id = MASTER_ID_0x26;
HandleID = MASTER_ID_0x26;
/* Send LIN header */
IfxAsclin_Lin_sendHeader(&g_linMaster, &id);
}
/* 接收中斷例程 */
IFX_INTERRUPT(ISR_ASCLIN_Rx, 0, ASCLIN_MASTER_RX)
{
/* check Rx response end acknowledgement*/
if (IfxAsclin_getRxResponseEndFlagStatus(g_linMaster.asclin))
{
uint8 id = MASTER_ID_0x26;
IfxAsclin_Lin_clearFlagsStatus(g_linMaster.asclin);
HandleID = MASTER_ID_0x26;
IfxAsclin_Lin_sendHeader(&g_linMaster, &id);
}
}
/* 發(fā)送中斷例程 */
IFX_INTERRUPT(ISR_ASCLIN_Tx, 0, ASCLIN_MASTER_TX)
{
/* check Tx header end acknowledgement */
if (IfxAsclin_getTxHeaderEndFlagStatus(g_linMaster.asclin)) /* THE flag*/
{
if (HandleID == MASTER_ID_0x26)
{
IfxAsclin_Lin_sendResponse(&g_linMaster, Tx_data, 8);
}
else if(HandleID == SLAVE_ID_0x33)
{
IfxAsclin_Lin_receiveResponse(&g_linMaster, Rx_data, 8);
/* Receive interrupt occurred */
if (IfxAsclin_getRxFifoFillLevelFlagStatus(g_linMaster.asclin))
{
uint8 id = MASTER_ID_0x26;
HandleID = MASTER_ID_0x26;
IfxAsclin_Lin_sendHeader(&g_linMaster, &id);
}
}
IfxAsclin_Lin_clearFlagsStatus(g_linMaster.asclin);
}
/* check Tx completed */
if (IfxAsclin_getTransmissionCompletedFlagStatus(g_linMaster.asclin))
{
uint8 id = SLAVE_ID_0x33;
IfxAsclin_Lin_clearFlagsStatus(g_linMaster.asclin);
HandleID = SLAVE_ID_0x33;
IfxAsclin_Lin_sendHeader(&g_linMaster, &id);
}
}
3、通信上位機(jī)配置
Lin上位機(jī)界面如下(淘寶采購(gòu)),設(shè)置上位機(jī)為"從機(jī)",通信速率"19200bps",如下所示:
在“從機(jī)寫配置”界面配置一個(gè)響應(yīng)ID = 0x33以及對(duì)應(yīng)的數(shù)據(jù),采用增強(qiáng)校驗(yàn),如下所示:
啟動(dòng)程序,Lin數(shù)據(jù)流如下所示:
(一)Lin報(bào)文波形
17987-3規(guī)范約束,一幀Lin報(bào)文構(gòu)成如下:
關(guān)于Lin幀結(jié)構(gòu),更多信息可以參考前文《Lin基礎(chǔ):從Lin Frame開始》。本文使用示波器抓取Lin波形如下所示:
如上圖,測(cè)量的Lin總線電壓約等于電源電壓(12V),略小于12V的原因:串聯(lián)防反二極管(diodes)造成的部分壓降。通信速率19200bps(1bit Time = 1/19200≈ 52.083us ),傳輸8byte字節(jié),一幀Lin報(bào)文用時(shí)6~7ms。
波形的局部放大如下所示:
波形的進(jìn)一步放大如下所示:
如上圖,幀間隔段(Break Field)長(zhǎng)度13 Bit顯性位(0)+ 1bit隱性位(1),之后是Sync Byte Field(0x55)+ 字節(jié)空間 + PID(0x73)。關(guān)于Lin幀結(jié)構(gòu),更多信息可以參考前文《Lin基礎(chǔ):從Lin Frame開始》。
(二)Master/Slave對(duì)應(yīng)的Transceiver電阻不同
前文《Lin總線基礎(chǔ):為什么Master節(jié)點(diǎn)需要外接上拉電阻》討論過(guò),Master節(jié)點(diǎn)外接1kΩ原因,這里再次提醒,Master節(jié)點(diǎn)需要通過(guò)并聯(lián)一個(gè)阻值更小的電阻,增大Lin Bus的驅(qū)動(dòng)能力,進(jìn)而提高Lin報(bào)文的質(zhì)量。17987-4中,對(duì)應(yīng)Master/Slave與Transceiver形成的供電回路如下所示:
-
原理圖
+關(guān)注
關(guān)注
1326文章
6415瀏覽量
240476 -
mcu
+關(guān)注
關(guān)注
146文章
17984瀏覽量
366969 -
收發(fā)器
+關(guān)注
關(guān)注
10文章
3673瀏覽量
107968 -
LIN總線
+關(guān)注
關(guān)注
19文章
111瀏覽量
28194
發(fā)布評(píng)論請(qǐng)先 登錄

#硬聲創(chuàng)作季 汽車Lin總線接口電路,Lin收發(fā)器工作原理 #汽車CAN總線 #汽車Lin總線
全集成LIN總線收發(fā)器ATA6628相關(guān)資料下載
全集成LIN總線收發(fā)器ATA6630相關(guān)資料分享
LIN收發(fā)器帶穩(wěn)壓器CP2022電子資料
TJA1020中文資料,TJA1020 LIN收發(fā)器應(yīng)用指南

采用UART做LIN總線的主節(jié)點(diǎn)應(yīng)用
采用UART做LIN總線的從節(jié)點(diǎn)應(yīng)用
基于LIN總線的車燈在線診斷系統(tǒng)的設(shè)計(jì)
NCV7425:局部互連網(wǎng)絡(luò)(LIN)收發(fā)器

LIN總線技術(shù)原理的學(xué)習(xí)課件免費(fèi)下載

校準(zhǔn)LIN總線收發(fā)器ATA6663的主要特性及應(yīng)用分析

SIT1021Q國(guó)產(chǎn)LIN收發(fā)器芯片,可替代TJA1021
芯力特LIN總線收發(fā)器芯片SIT1021主/從節(jié)點(diǎn)應(yīng)用方案

芯力特LIN收發(fā)器芯片SIT1021總線DC/AC參數(shù)完全符合LIN標(biāo)準(zhǔn)

評(píng)論