色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

在MM32F013x上實現LIN通信的功能應用

電子設計 ? 來源:電子設計 ? 作者:電子設計 ? 2022-02-18 11:10 ? 次閱讀

隨著汽車電子技術的高速發展和廣泛應用,實現智能化和網絡化是汽車發展的必然趨勢。為簡化日益增加的汽車電控設備的線路連接,提升系統的可靠性和故障診斷水平,實現各電控設備之間的數據資源共享,并建成開發的標準化、模塊化結構,汽車網絡總線技術得到了很大發展。目前,已經開發出多種總線,如控制器局域網總線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 個標志符

pIYBAGAH4T6AIMvVAAH8W0hFEqY244.png

Part.2 LIN總線 幀結構

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

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

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

o4YBAGAH4X2AFoJJAAEDI4zjnIo344.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個基礎函數進行發送,現在來看下數據包的具體發送,從下圖中可以看出數據包是根據保護段的定義來進行區分是發送信號幀還是診斷幀。

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

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

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

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

轉自:靈動MM32MCU
審核編輯:何安

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

    關注

    7

    文章

    121

    瀏覽量

    19638
  • LIN通信
    +關注

    關注

    2

    文章

    8

    瀏覽量

    3780
收藏 人收藏

    評論

    相關推薦

    TMS320F2838x和TMS320F28P65x之間進行遷移

    電子發燒友網站提供《TMS320F2838x和TMS320F28P65x之間進行遷移.pdf》資料免費下載
    發表于 10-31 09:58 ?0次下載
    <b class='flag-5'>在</b>TMS320<b class='flag-5'>F2838x</b>和TMS320<b class='flag-5'>F28P65x</b>之間進行遷移

    TMS320F2837x和TMS320F28P65x之間進行遷移

    電子發燒友網站提供《TMS320F2837x和TMS320F28P65x之間進行遷移.pdf》資料免費下載
    發表于 10-30 09:54 ?2次下載
    <b class='flag-5'>在</b>TMS320<b class='flag-5'>F2837x</b>和TMS320<b class='flag-5'>F28P65x</b>之間進行遷移

    TMS320C62x實現的擴展精度基數-4快速傅里葉變換

    電子發燒友網站提供《TMS320C62x實現的擴展精度基數-4快速傅里葉變換.pdf》資料免費下載
    發表于 10-28 10:03 ?0次下載
    <b class='flag-5'>在</b>TMS320C62<b class='flag-5'>x</b><b class='flag-5'>上</b><b class='flag-5'>實現</b>的擴展精度基數-4快速傅里葉變換

    TMS320DM643x DMSoC實現DDR2 PCB布局

    電子發燒友網站提供《TMS320DM643x DMSoC實現DDR2 PCB布局.pdf》資料免費下載
    發表于 10-16 11:46 ?0次下載
    <b class='flag-5'>在</b>TMS320DM643<b class='flag-5'>x</b> DMSoC<b class='flag-5'>上</b><b class='flag-5'>實現</b>DDR2 PCB布局

    TMS320DM644x DMSoC實現DDR2 PCB布局

    電子發燒友網站提供《TMS320DM644x DMSoC實現DDR2 PCB布局.pdf》資料免費下載
    發表于 10-16 10:43 ?0次下載
    <b class='flag-5'>在</b>TMS320DM644<b class='flag-5'>x</b> DMSoC<b class='flag-5'>上</b><b class='flag-5'>實現</b>DDR2 PCB布局

    利用VLIBTMS320C64x/64x+實現Canny邊緣檢測

    電子發燒友網站提供《利用VLIBTMS320C64x/64x+實現Canny邊緣檢測.pdf》資料免費下載
    發表于 10-14 11:13 ?0次下載
    利用VLIB<b class='flag-5'>在</b>TMS320C64<b class='flag-5'>x</b>/64<b class='flag-5'>x</b>+<b class='flag-5'>上</b><b class='flag-5'>實現</b>Canny邊緣檢測

    LIN接口靜電放電防護方案

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

    AM62x器件實現最小平臺開發

    電子發燒友網站提供《AM62x器件實現最小平臺開發.pdf》資料免費下載
    發表于 08-29 14:41 ?1次下載
    <b class='flag-5'>在</b>AM62<b class='flag-5'>x</b>器件<b class='flag-5'>上</b><b class='flag-5'>實現</b>最小平臺開發

    微型化晶振技術:實現1.2mm x 1.0mm尺寸的關鍵與優勢

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

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

    模式的驅動程序。 1.我能否獲得通過 LIN 塊中應用 UART 模式并激活噪聲檢測功能實現基本 Tx 和 Rx 的示例代碼? 2.如果將 UART 用作
    發表于 07-03 07:51

    如何通過電路板LIN引腳發送占空比調制PWM數據?

    我們的應用中,我們試圖特定情況下通過 LIN 引腳向主控發送輸出信號。 該輸出信號應為占空比調制 PWM 信號,因此我們并不是要通過 LIN 協議進行
    發表于 05-23 06:20

    TSMaster 自定義 LIN 調度表編程指導

    LIN(LocalInterconnectNetwork)協議調度表是用于LIN總線通信中的消息調度的一種機制,我們收到越來越多來自不同用戶希望能夠通過接口實現自定義
    的頭像 發表于 05-11 08:21 ?658次閱讀
    TSMaster 自定義 <b class='flag-5'>LIN</b> 調度表編程指導

    如何用cubemx做lin通信

    怎樣用cubemx做lin通信,沒有找到相應的函數,只有一個init函數,如下設置后,生成了與lin有關的代碼,連中斷都沒有。請高手指點 /* USART3 init function
    發表于 04-26 07:44

    STM32F103 HAL_LIN主機模式只要開接收就發生錯誤是為什么?

    STM32F103ZE,用CUBEMX生成DEMO,作為主機單獨發送數據都沒有問題,只要一發從機頭后LIN就再也沒有輸出了,DEBUG看到一直中斷函數里執行,又沒有跳入某個錯誤中,
    發表于 04-16 08:27

    MM32F5270 UART實現LIN通信

    LIN(Local Interconnect Network)總線是基于UART/SCI(通用異步收發器/串行接口)的低成本串行通訊協議,其目標定位于車身網絡模塊節點間的低端通信
    的頭像 發表于 01-04 17:35 ?3737次閱讀
    <b class='flag-5'>MM32F</b>5270 UART<b class='flag-5'>實現</b><b class='flag-5'>LIN</b><b class='flag-5'>通信</b>
    主站蜘蛛池模板: 伦理片在线线手机版韩国免费观看 | 一个人的视频全免费在线观看www| 小sao货ji巴cao死你视频| 少妇人妻偷人精品视蜜桃| 午夜电影三级还珠格格| 亚洲狠狠97婷婷综合久久久久| 亚洲香蕉网久久综合影院| 综合人妻久久一区二区精品| 91九色视频在线观看| chinese帅哥gv在线看| 丰满老熟女白浆直流| 国产乱人伦AV麻豆网| 九九99热久久精品在线6| 美女教师朝桐光在线播放| 日本久久和电影| 亚洲AV无码影院在线播放| 诱人的女邻居9中文观看| BLACKED太粗太长| 国产精品成人免费视频99| 久久成人精品免费播放| 美女脱精光让男生桶下面| 日韩精品在线观看免费| 亚洲色无码播放| av天堂影音先锋在线| 国产精品亚洲视频在线观看| 久久永久免费视频| 日本三级按摩推拿按摩| 亚洲欧美日韩一级特黄在线| beeg xxx日本老师| 国产亚洲精品久久无码98 | bbw极度另类孕妇| 岛国大片在线观看完整版| 国产福利视频第一导航| 国产午夜小视频| 快穿之诱受双性被灌满h| 欧美aa级片| 性欧美video另类hd高清| 99精品国产免费观看视频| 草莓AV福利网站导航| 狠狠色狠狠色综合| 免费视频国产|