從事汽車MCU開發的小伙伴,對CAN/CAN FD、Ethernet、Lin這幾種總線,應該比較熟悉,即使沒具體開發過,也應該聽過。如果想更深刻的理解這些總線,實踐是最行之有效的方法。在之前的文章中,已經分享了《基于Tricore的CANFD入門工程》、《基于Tricore的UDP/TCP入門工程》、《基于Aurix的以太網實踐:TCP Client實現坑點》,本文基于TC397_5V_TFT開發板+Tasking編譯器,對英飛凌官網的Master Lin進行了二次開發,助力需要的學習Lin總線的小伙伴,文末有工程源碼鏈接。
1、Lin收發器原理圖
TC397_5V_TFT開發板的原理圖,可以在英飛凌官網下載,具體下載地址如下:
https://www.infineon.com/dgdl/Infineon-ApplicationKitManual_TC3X7-UM-v02_00-EN.pdf?fileId=5546d462696dbf120169b454383c483d
這里,我們關注Lin收發器(TLE7259-3GE)需要配置的端口,如下圖:
上圖中,RxD需要使用P10.6,TxD需要使用P10.5,這兩個Pin對應ASCLIN2模塊。
對于外接的Lin Connector,GND可以接跳線2或者跳線5,LIN BUS對應跳線4,如下所示:
2、Lin Code
本文Lin通信采用了中斷收/發處理模式,且開發板采用Master模式。Master負責發送Header,ID=0x26(主響應)/ID=0x33(從響應),通信速率為19200bps。
/* 主函數調用 */
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);
}
}
/* 發送中斷例程 */
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、通信上位機配置
Lin上位機界面如下(淘寶采購),設置上位機為"從機",通信速率"19200bps",如下所示:
在“從機寫配置”界面配置一個響應ID = 0x33以及對應的數據,采用增強校驗,如下所示:
啟動程序,Lin數據流如下所示:
(一)Lin報文波形
17987-3規范約束,一幀Lin報文構成如下:
關于Lin幀結構,更多信息可以參考前文《Lin基礎:從Lin Frame開始》。本文使用示波器抓取Lin波形如下所示:
如上圖,測量的Lin總線電壓約等于電源電壓(12V),略小于12V的原因:串聯防反二極管(diodes)造成的部分壓降。通信速率19200bps(1bit Time = 1/19200≈ 52.083us ),傳輸8byte字節,一幀Lin報文用時6~7ms。
波形的局部放大如下所示:
波形的進一步放大如下所示:
如上圖,幀間隔段(Break Field)長度13 Bit顯性位(0)+ 1bit隱性位(1),之后是Sync Byte Field(0x55)+ 字節空間 + PID(0x73)。關于Lin幀結構,更多信息可以參考前文《Lin基礎:從Lin Frame開始》。
(二)Master/Slave對應的Transceiver電阻不同
前文《Lin總線基礎:為什么Master節點需要外接上拉電阻》討論過,Master節點外接1kΩ原因,這里再次提醒,Master節點需要通過并聯一個阻值更小的電阻,增大Lin Bus的驅動能力,進而提高Lin報文的質量。17987-4中,對應Master/Slave與Transceiver形成的供電回路如下所示:
-
原理圖
+關注
關注
1316文章
6388瀏覽量
237932 -
mcu
+關注
關注
146文章
17695瀏覽量
357829 -
收發器
+關注
關注
10文章
3551瀏覽量
107036 -
LIN總線
+關注
關注
19文章
109瀏覽量
27932
發布評論請先 登錄
相關推薦

#硬聲創作季 汽車Lin總線接口電路,Lin收發器工作原理 #汽車CAN總線 #汽車Lin總線
全集成LIN總線收發器ATA6628相關資料下載
全集成LIN總線收發器ATA6630相關資料分享
LIN收發器帶穩壓器CP2022電子資料
TJA1020中文資料,TJA1020 LIN收發器應用指南

采用UART做LIN總線的主節點應用
采用UART做LIN總線的從節點應用
基于LIN總線的車燈在線診斷系統的設計
NCV7425:局部互連網絡(LIN)收發器

LIN總線技術原理的學習課件免費下載

校準LIN總線收發器ATA6663的主要特性及應用分析

SIT1021Q國產LIN收發器芯片,可替代TJA1021
芯力特LIN總線收發器芯片SIT1021主/從節點應用方案

評論