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

    浏览量

    26945
  • 异步收发器
    +关注

    关注

    0

    文章

    37

    浏览量

    11096
  • 逻辑分析仪
    +关注

    关注

    3

    文章

    217

    浏览量

    24250
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    HXS320F280025C数字信号处理器(DSP)芯片

    实现了对无人机电机的精确控制和高速响应。 HXS320F28025C 器件型号与封装信息 (工业级 –40 °C ~ +125 °C,Sn 镀层,MSL-3)订购型号封装引脚数封装尺寸 (mm)托盘数量
    发表于 12-03 09:02

    瑞萨RL78F24系列微控制器中的LIN总线从机配置方法

    在汽车电子领域,LIN总线是RL78F24系列微控制器的核心外设之一。为简化LIN通信的配置流程,瑞萨电子提供了专用的RLIN3配置工具,该工具能够高效定义
    的头像 发表于 12-02 14:11 2869次阅读
    瑞萨RL78<b class='flag-5'>F</b>24系列微控制器中的<b class='flag-5'>LIN</b>总线从机配置方法

    求助,关于使用 TC39x Aurix 微控制器上的 SCR 检测 LIN 唤醒脉冲疑问求解

    您好,我正在尝试使用 TC39x Aurix 微控制器上的 SCR 检测 LIN 唤醒脉冲(250us 至 5ms 的显性(低)脉冲)。根据数据表,SCR 的 UART 模块中有一个硬件 LIN
    发表于 08-15 06:45

    广州唯创电子WT588F(C013)语音芯片:赋能智能玩具的“声”动未来

    在追求寓教于乐的智能玩具时代,丰富的语音交互能力已成为核心竞争力。广州唯创电子WT588F(C013)语音芯片凭借其卓越的性能与多功能性,正成为打造高互动性、高趣味性智能玩具的“声”力军,为孩子们
    的头像 发表于 08-08 08:09 506次阅读
    广州唯创电子WT588<b class='flag-5'>F</b>(C<b class='flag-5'>013</b>)语音芯片:赋能智能玩具的“声”动未来

    虹科技术分享 | LIN总线译码功能LIN控制交流发电机(二)

    上一期,我们详细分享了LIN总线的结构、译码方法、休眠与唤醒过程。那如何借助串行译码分析总线故障?我们能否从译码结果中,进一步提取LIN线发送的信息?答案是肯定的。这一期,我们就将结合LIN总线控制
    的头像 发表于 08-07 11:28 604次阅读
    虹科技术分享 | <b class='flag-5'>LIN</b>总线译码<b class='flag-5'>功能</b>与<b class='flag-5'>LIN</b>控制交流发电机(二)

    LIN协议:汽车电子中的隐形功臣

    在汽车电子通信领域,CAN/CANFD和车载以太网常被提及,但有一个低调却不可或缺的协议—LIN,正默默支撑着车窗、车灯等车身系统的智能化控制。LIN协议LIN是面向汽车底端分布式应用
    的头像 发表于 07-01 11:40 1710次阅读
    <b class='flag-5'>LIN</b>协议:汽车电子中的隐形功臣

    如何使用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 860次阅读

    CKS32F107xx系列USART的LIN模式

    CKS32F107xx系列在支持正常USART功能的同时,亦支持LIN(局域互联网)模式。
    的头像 发表于 02-18 17:18 874次阅读
    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 2132次阅读
    灵动微电子<b class='flag-5'>MM32F</b>5370 MCU产品特色

    LIN总线错误类型介绍#lin总线 #汽车电子

    LIN总线
    北汇信息POLELINK
    发布于 :2024年12月21日 14:04:56