在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何在MM32F013x實現LIN通信的功能

電子設計 ? 來源:靈動MM32MCU ? 作者:靈動MM32MCU ? 2021-02-16 06:11 ? 次閱讀

隨著汽車電子技術的高速發展和廣泛應用,實現智能化和網絡化是汽車發展的必然趨勢。為簡化日益增加的汽車電控設備的線路連接,提升系統的可靠性和故障診斷水平,實現各電控設備之間的數據資源共享,并建成開發的標準化、模塊化結構,汽車網絡總線技術得到了很大發展。目前,已經開發出多種總線,如控制器局域網總線CAN、車內網絡總線LIN、高速容錯網絡總線FlexRay、面向媒體的系統傳輸總線MOST、更高帶寬和傳輸速率的車載以太網Ethernet等,這里給大家介紹在MM32F013x上實現LIN通信的功能應用。

Part.1 什么是LIN

LIN 是 Local Interconnect Network 的縮寫,是基于 UART/SCI(Universal Asynchronous Receiver-Transmitter /Serial Communication Interface,通用異步收發器/串行通信接口)的低成本串行通信協議,可用于汽車、家電、辦公設備等多種領域。本文主要針對在MM32F013x上實現LIN在分布式的汽車電子網絡系統中的應用。

LIN總線特點

低成本:幾乎車規級微控制器都具備LIN 通信必需的硬件

極少的信號線即可實現國際標準ISO9141 規定

傳輸速率最高可達20Kbit/s

單主控器/多從設備模式無需仲裁機制

從節點不需晶振或陶瓷震蕩器就能實現自同步,節省了從設備的硬件成本

保證信號傳輸的延遲時間

不需要改變LIN 從節點的硬件和軟件就可以在網絡上增加節點

通常一個LIN 網絡上節點數目小于12 個共有64 個標志符

pIYBAF_8BjSACwaGAAHEdZCdr5s013.png

Part.2 LIN總線 幀結構

幀(Frame)包含幀頭(Header)和應答(Response)兩部分。

幀頭包括同步間隔段、同步段以及PID(Protected Identifier,受保護ID)段,應答包括數據段和校驗和段。

如圖所示,其中值“0”為顯性電平(Dominant),值“1”為隱性電平(Recessive),總線上實行“線-與”:當總線上有大于等于一個節點發送顯性電平時,總線呈顯性電平;所有的節點都發送隱性電平或不發送信息(不發送任何信息時總線默認呈隱性電平)時,總線才呈現隱性電平,即顯性電平起主導作用。

o4YBAF_8BkCAE2sXAAE5cvzUER0312.png

Part.3 程序配置

01、初始化MM32F013x UART1串口

從官網下載MM32F013x例程,參考MM32F0133C7P的UART例程的初始化以及中斷服務函數,這里不在贅述。

02、LIN的發送

2.1 同步間隔段的發送

UART內部有Break信號的發送,通過使能LIN,即可實現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 數據的發送

數據的發送沿用原有的UART接口數據發送即可:

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 數據包的發送

有了上面2個基礎函數進行發送,現在來看下數據包的具體發送,從下圖中可以看出數據包是根據保護段的定義來進行區分是發送信號幀還是診斷幀。

pIYBAF_8Bk2APvuZAADmdstVPF4873.png

信號幀的數據就可以做成以下的方式:

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中斷函數里收到從機返回的數據。

2.4 從機的接受與發送

從機收數據與正常的串口一樣,只需要做BRK信號的處理即可,從機收到數據以后按正常的返回數據,返回數據就不需要發送BRK信號。

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

通過邏輯分析儀可以看到信號幀的數據:

o4YBAF_8BlqAKXsrAABq3im32_w203.png

而診斷幀數據就有從機回應的數據:

pIYBAF_8BmiAcGFKAABClcVrmcE908.png

有這個演示作為基礎就可以開發LIN的通訊產品了。
編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 網絡系統
    +關注

    關注

    0

    文章

    86

    瀏覽量

    25736
  • 異步收發器
    +關注

    關注

    0

    文章

    37

    瀏覽量

    10990
  • 邏輯分析儀
    +關注

    關注

    3

    文章

    216

    瀏覽量

    23643
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    如何使用IFX ePower BootStrapLoader工具通過lin通信升級固件?

    如何使用 IFX ePower BootStrapLoader 工具通過 lin 通信升級我的固件
    發表于 04-18 06:56

    何在S32K146中實現以下功能

    原來有一個項目芯片是MPC5606B(CodeWarrior編譯器),現在換成S32K146(S32DS ARM),其中有段代碼移植遇到了些問題,請問如何在S32K146中實現以下功能,請幫忙
    發表于 04-04 08:00

    使用stm32F103的USART的lin通訊模式,TX,RX,GND,三根線怎么和lin總線連接?

    使用stm32F103的USART的lin通訊模式,TX,RX,GND,三根線怎么和lin總線連接
    發表于 03-14 07:39

    300x32mm玻璃鋼天線:高性能通信解決方案

    深圳安騰納天線|300x32mm玻璃鋼天線:高性能通信解決方案
    的頭像 發表于 02-27 09:03 ?379次閱讀

    CKS32F107xx系列USART的LIN模式

    CKS32F107xx系列在支持正常USART功能的同時,亦支持LIN(局域互聯網)模式。
    的頭像 發表于 02-18 17:18 ?416次閱讀
    CKS32<b class='flag-5'>F</b>107xx系列USART的<b class='flag-5'>LIN</b>模式

    AN030 GD32F47x&F42x與GD32F45x&F40x系列間的差異

    電子發燒友網站提供《AN030 GD32F47x&F42x與GD32F45x&F40x系列間的差異.pdf》資料免費下載
    發表于 01-17 15:42 ?0次下載
    AN030 GD32<b class='flag-5'>F47x</b>&<b class='flag-5'>F42x</b>與GD32<b class='flag-5'>F45x</b>&<b class='flag-5'>F40x</b>系列間的差異

    AN-891: ADuC703x系列LIN波特率計算

    電子發燒友網站提供《AN-891: ADuC703x系列LIN波特率計算.pdf》資料免費下載
    發表于 01-14 15:53 ?0次下載
    AN-891: ADuC703<b class='flag-5'>x</b>系列<b class='flag-5'>LIN</b>波特率計算

    靈動微電子MM32F5370 MCU產品特色

    MM32F3、靈動·天樞 MM32F5、靈動·玉衡 MM32G5、靈動·天璣 MM32H5 等子系列,MM32F5270、
    的頭像 發表于 01-10 10:02 ?1331次閱讀
    靈動微電子<b class='flag-5'>MM32F</b>5370 MCU產品特色

    LIN總線錯誤類型介紹#lin總線 #汽車電子

    LIN總線
    北匯信息POLELINK
    發布于 :2024年12月21日 14:04:56

    【技術分享】汽車電子之LIN協議

    應用的低成本、低速率的串行通信總線,屬于局部互聯網。LIN由汽車行業開發,用作經濟高效的子總線系統,其屬于CAN的下層網絡,是SAE規范的汽車A類網絡,適用于對總線性能
    的頭像 發表于 11-12 01:05 ?1297次閱讀
    【技術分享】汽車電子之<b class='flag-5'>LIN</b>協議

    Lin總線的定義以及靜電保護方案

    1、Lin總線介紹LIN(LocalInterconnectNetwork,本地互連網絡)是一種低成本、串行通信協議,主要用于汽車電子系統中的微控制器和智能傳感器之間的通信
    的頭像 發表于 10-13 08:03 ?861次閱讀
    <b class='flag-5'>Lin</b>總線的定義以及靜電保護方案

    LIN接口靜電放電防護方案

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

    何在采用 SOT563 封裝的 TPS56x242-7 上實現更良好的熱性能

    電子發燒友網站提供《如何在采用 SOT563 封裝的 TPS56x242-7 上實現更良好的熱性能.pdf》資料免費下載
    發表于 09-12 11:07 ?0次下載
    如<b class='flag-5'>何在</b>采用 SOT563 封裝的 TPS56<b class='flag-5'>x</b>242-7 上<b class='flag-5'>實現</b>更良好的熱性能

    何在openmv中實現圖傳功能

    Vision board的openmv固件wifi只能實現連接,一些通信和物聯網也用不了。如果我要實現在openmv中的圖傳功能該怎么做呢,求助各位大佬
    發表于 07-09 06:36

    請問如何在LIN塊中配置UART模式?

    模式的驅動程序。 1.我能否獲得通過在 LIN 塊中應用 UART 模式并激活噪聲檢測功能實現基本 Tx 和 Rx 的示例代碼? 2.如果將 UART 用作 LIN 塊,則可通過
    發表于 07-03 07:51
    主站蜘蛛池模板: 日本黄色片在线观看 | 亚洲人成毛片线播放 | 日本aaaaa毛片在线视频 | 黄色录像三级 | 成人影院久久久久久影院 | 成人性色生活片免费看爆迷你毛片 | brazzersvideosex欧美最 | 国产精品爱久久久久久久三级 | 亚洲久久久 | 欧美色吧视频在线观看 | 91精品国产亚洲爽啪在线影院 | 亚洲天堂.com | 热久久久 | 奇米网在线观看 | 黄在线观看在线播放720p | 综合网在线 | 性做久久久久久久免费观看 | 日本在线观看成人小视频 | 亚洲美女激情视频 | 女人本色高清在线观看wwwwww国产 | 国模私拍在线观看 | 天天干夜夜爽天天操夜夜爽视频 | 五月婷婷深爱 | 双性人皇上被c到哭 | 小雪被撑暴黑人黑人与亚洲女人 | 你懂的网址免费国产 | 亚州1区2区3区4区产品乱码2021 | 国产一级特黄a大片免费 | 一区二区免费在线观看 | 一日本道加勒比高清一二三 | 91视频三级 | 色丁香在线视频 | 在线www天堂资源网 在线播放 你懂的 | 日韩免费高清一级毛片 | 天天干 夜夜操 | 国产成人a| www.四虎在线| 午夜影院在线观看 | 日韩美毛片 | 亚洲 欧美 另类 综合 日韩 | 亚欧美色|