有不少的MCU设备的USART的介绍那里写的支持IrDA和LIN的相关功能。那他们是什么关系。
IrDA
IrDA是国际红外数据协会的英文缩写,IrDA相继制定了很多红外通信协议。
IrDA1.0协议基于异步收发器UART,最高通信速率在115.2kbps,简称SIR(Serial Infrared,串行红外协议),采用3/16 ENDEC编/解码机制。
IrDA1.1协议提高通信速率到4Mbps,简称FIR(Fast Infrared,快速红外协议),采用4PPM (Pulse Position Modulation,脉冲相位调制)编译码机制,同时在低速时保留1.0协议规定。
之后,IrDA又推出了最高通信速率在16Mbps的协议,简称VFIR(Very Fast Infrared,特速红外协议)。
以STM32F7举例,只能支持IrDA1.0协议。控制器做的就是波形转换。如下图:
通过串口发送数据,控制器转换成IrDA相应的波形,再通过外接的驱动器、LED发射出去。接收也一样。接收信号,解码接收。
可以看出:IrDA1.0协议使用的就是UART这个接口发出的一种波形(如上图的波形),链路层使用的是UART。
LIN
LIN(Local Interconnect Network)总线是基于UART/SCI(通用异步收发器/串行接口)的低成本串行通讯协议。
这是一个一主多从的协议;采用的是单线传输形式,总线电平一般为12V,传输速率最高限制为20kbps。由于物理层的限制,一个LIN网络最多可以连接16个节点。
最终发出的波形如下
可以看出在不考虑具体传输数据协议的时候,与普通的串口区别在于帧头(同步间隔、同步段、PID段)的不同。这个就是MCU控制器主要去做的。
可以看出:LIN协议使用的就是UART这个接口发出的一种波形(如上图的波形),链路层使用的是UART。
区别和联系
IrDA1.0和LIN都会使用UART发出一种波形,这两种波形的链路层相同(物理层和其余上层协议不同),使用的UART。