0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

在MM32F013x上實(shí)現(xiàn)LIN通信的功能應(yīng)用

電子設(shè)計(jì) ? 來(lái)源:電子設(shè)計(jì) ? 作者:電子設(shè)計(jì) ? 2022-02-18 11:10 ? 次閱讀

隨著汽車電子技術(shù)的高速發(fā)展和廣泛應(yīng)用,實(shí)現(xiàn)智能化和網(wǎng)絡(luò)化是汽車發(fā)展的必然趨勢(shì)。為簡(jiǎn)化日益增加的汽車電控設(shè)備的線路連接,提升系統(tǒng)的可靠性和故障診斷水平,實(shí)現(xiàn)各電控設(shè)備之間的數(shù)據(jù)資源共享,并建成開(kāi)發(fā)的標(biāo)準(zhǔn)化、模塊化結(jié)構(gòu),汽車網(wǎng)絡(luò)總線技術(shù)得到了很大發(fā)展。目前,已經(jīng)開(kāi)發(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 的縮寫(xiě),是基于 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)國(guó)際標(biāo)準(zhǔn)ISO9141 規(guī)定

傳輸速率最高可達(dá)20Kbit/s

單主控器/多從設(shè)備模式無(wú)需仲裁機(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)志符

pIYBAGAH4T6AIMvVAAH8W0hFEqY244.png

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)作用。

o4YBAGAH4X2AFoJJAAEDI4zjnIo344.png

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ā)送,通過(guò)使能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)在來(lái)看下數(shù)據(jù)包的具體發(fā)送,從下圖中可以看出數(shù)據(jù)包是根據(jù)保護(hù)段的定義來(lái)進(jìn)行區(qū)分是發(fā)送信號(hào)幀還是診斷幀。

pIYBAGAH4cCABocJAADR99gcDG4213.png

信號(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通信功能演示

通過(guò)邏輯分析儀可以看到信號(hào)幀的數(shù)據(jù):

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

有這個(gè)演示作為基礎(chǔ)就可以開(kāi)發(fā)LIN的通訊產(chǎn)品了。

轉(zhuǎn)自:靈動(dòng)MM32MCU
審核編輯:何安

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 靈動(dòng)微電子
    +關(guān)注

    關(guān)注

    7

    文章

    117

    瀏覽量

    19599
  • LIN通信
    +關(guān)注

    關(guān)注

    2

    文章

    8

    瀏覽量

    3756
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    LIN接口靜電放電防護(hù)方案

    是現(xiàn)有汽車網(wǎng)絡(luò)(比如CAN總線通訊)提供輔助功能,不需要CAN總線的寬帶和多功能的場(chǎng)合下,使用LIN總線能夠大大地節(jié)約成本。常用于連接車輛中的各種控制單元,如傳感器、執(zhí)行器和其他電子
    的頭像 發(fā)表于 09-19 17:04 ?136次閱讀
    <b class='flag-5'>LIN</b>接口靜電放電防護(hù)方案

    AM62x器件實(shí)現(xiàn)最小平臺(tái)開(kāi)發(fā)

    電子發(fā)燒友網(wǎng)站提供《AM62x器件實(shí)現(xiàn)最小平臺(tái)開(kāi)發(fā).pdf》資料免費(fèi)下載
    發(fā)表于 08-29 14:41 ?0次下載
    <b class='flag-5'>在</b>AM62<b class='flag-5'>x</b>器件<b class='flag-5'>上</b><b class='flag-5'>實(shí)現(xiàn)</b>最小平臺(tái)開(kāi)發(fā)

    微型化晶振技術(shù):實(shí)現(xiàn)1.2mm x 1.0mm尺寸的關(guān)鍵與優(yōu)勢(shì)

    隨著現(xiàn)代電子設(shè)備的不斷小型化和高性能化,晶振(晶體振蕩器)也面臨著向更小尺寸發(fā)展的需求。1.2mm x 1.0mm這種微型化晶振的實(shí)現(xiàn)代表了當(dāng)前晶體振蕩技術(shù)的前沿,它不僅在尺寸
    的頭像 發(fā)表于 08-22 17:25 ?178次閱讀
    微型化晶振技術(shù):<b class='flag-5'>實(shí)現(xiàn)</b>1.2<b class='flag-5'>mm</b> <b class='flag-5'>x</b> 1.0<b class='flag-5'>mm</b>尺寸的關(guān)鍵與優(yōu)勢(shì)

    請(qǐng)問(wèn)如何在LIN塊中配置UART模式?

    模式的驅(qū)動(dòng)程序。 1.我能否獲得通過(guò) LIN 塊中應(yīng)用 UART 模式并激活噪聲檢測(cè)功能來(lái)實(shí)現(xiàn)基本 Tx 和 Rx 的示例代碼? 2.如果將 UART 用作
    發(fā)表于 07-03 07:51

    如何通過(guò)電路板LIN引腳發(fā)送占空比調(diào)制PWM數(shù)據(jù)?

    我們的應(yīng)用中,我們?cè)噲D特定情況下通過(guò) LIN 引腳向主控發(fā)送輸出信號(hào)。 該輸出信號(hào)應(yīng)為占空比調(diào)制 PWM 信號(hào),因此我們并不是要通過(guò) LIN 協(xié)議進(jìn)行
    發(fā)表于 05-23 06:20

    TSMaster 自定義 LIN 調(diào)度表編程指導(dǎo)

    LIN(LocalInterconnectNetwork)協(xié)議調(diào)度表是用于LIN總線通信中的消息調(diào)度的一種機(jī)制,我們收到越來(lái)越多來(lái)自不同用戶希望能夠通過(guò)接口實(shí)現(xiàn)自定義
    的頭像 發(fā)表于 05-11 08:21 ?426次閱讀
    TSMaster 自定義 <b class='flag-5'>LIN</b> 調(diào)度表編程指導(dǎo)

    如何用cubemx做lin通信

    怎樣用cubemx做lin通信,沒(méi)有找到相應(yīng)的函數(shù),只有一個(gè)init函數(shù),如下設(shè)置后,生成了與lin有關(guān)的代碼,連中斷都沒(méi)有。請(qǐng)高手指點(diǎn) /* USART3 init function
    發(fā)表于 04-26 07:44

    MM32F5270 UART實(shí)現(xiàn)LIN通信

    LIN(Local Interconnect Network)總線是基于UART/SCI(通用異步收發(fā)器/串行接口)的低成本串行通訊協(xié)議,其目標(biāo)定位于車身網(wǎng)絡(luò)模塊節(jié)點(diǎn)間的低端通信
    的頭像 發(fā)表于 01-04 17:35 ?3051次閱讀
    <b class='flag-5'>MM32F</b>5270 UART<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>LIN</b><b class='flag-5'>通信</b>

    使用MM32F0160 FlexCAN-FD接口實(shí)現(xiàn)CAN FD通信

    CAN-FD模式下,可實(shí)現(xiàn)最高8 Mbps的FD模式通信速率,支持標(biāo)準(zhǔn)幀(11位標(biāo)識(shí)符)和擴(kuò)展幀(29位標(biāo)識(shí)符),支持最大64字節(jié)有效負(fù)載,并且具有非常靈活的用于傳輸和接收的郵箱系統(tǒng)。
    的頭像 發(fā)表于 12-14 16:44 ?1703次閱讀
    使用<b class='flag-5'>MM32F</b>0160 FlexCAN-FD接口<b class='flag-5'>實(shí)現(xiàn)</b>CAN FD<b class='flag-5'>通信</b>

    MM32F0010使用總結(jié)

    MM32F0010使用總結(jié)
    的頭像 發(fā)表于 11-01 17:07 ?758次閱讀
    <b class='flag-5'>MM32F</b>0010使用總結(jié)

    請(qǐng)問(wèn)LIN總線通信怎么理解比較好?

    LIN總線通信怎么理解比較好?
    發(fā)表于 10-16 07:20

    YTM32的LIN通信協(xié)議引擎LinFlexD外設(shè)模塊詳解

    YTM32微控制器的LINFlexD外設(shè)模塊,實(shí)現(xiàn)LIN協(xié)議控制器的功能,可以支持LIN總線協(xié)議的主機(jī)和從機(jī)功能。
    的頭像 發(fā)表于 10-08 11:15 ?1622次閱讀
    YTM32的<b class='flag-5'>LIN</b><b class='flag-5'>通信</b>協(xié)議引擎LinFlexD外設(shè)模塊詳解

    MM32F3270 ADC注入通道

    MM32F3270 ADC注入通道
    的頭像 發(fā)表于 09-27 15:59 ?858次閱讀
    <b class='flag-5'>MM32F</b>3270 ADC注入通道

    使用MM32F3270 FSMC驅(qū)動(dòng)OLED

    使用MM32F3270 FSMC驅(qū)動(dòng)OLED
    的頭像 發(fā)表于 09-27 15:30 ?787次閱讀
    使用<b class='flag-5'>MM32F</b>3270 FSMC驅(qū)動(dòng)OLED

    LIN基礎(chǔ)知識(shí)和8位PIC單片機(jī)上實(shí)現(xiàn)的MCC LIN協(xié)議棧庫(kù)

    電子發(fā)燒友網(wǎng)站提供《LIN基礎(chǔ)知識(shí)和8位PIC單片機(jī)上實(shí)現(xiàn)的MCC LIN協(xié)議棧庫(kù).pdf》資料免費(fèi)下載
    發(fā)表于 09-25 14:56 ?12次下載
    <b class='flag-5'>LIN</b>基礎(chǔ)知識(shí)和8位PIC單片機(jī)上<b class='flag-5'>實(shí)現(xiàn)</b>的MCC <b class='flag-5'>LIN</b>協(xié)議棧庫(kù)