前言:
UART是最常见的串行通讯,广泛应用于单片机和单片机之间通讯。这里UART/RLIN的具体原理讲解就不做介绍,不清楚的朋友可移步up主的个人专栏 ---- “串行通讯原理”中的“串行通讯 -- 串口通讯原理”,此专栏会有针对uart/RLIN的工作原理的详细介绍。
RLIN30 时钟源选择
Unit Name | Unit Clock Name | Supply Clock Name | Description |
RLIN30 | LIN通信时钟源 | CKSCLK_ILIN | 通讯时钟 |
| 注册访问时钟 | CPUCLK2 | 总线时钟 |
| 注册访问时钟 | CKSCLK_ILIN | 总线时钟 |
RLIN30 接口框图
1.1、RLN3nLUOER — UART操作使能寄存器
Bit position | Bit Name | Function |
1 | UROE | 接收使能位 0:禁用接收。 1:使能接收。 |
0 | UTOE | 发送使能位 0:禁用发送。 1:使能发送。 |
1.2、RLN3nLCUC — UART控制寄存器
Bit position | Bit Name | Function |
0 | OM0 | LIN复位 0: LIN复位模式 1:取消LIN复位模式 |
1.3、RLN3nLMD — UART模式寄存器
Bit position | Bit Name | Function |
5 | LRDNFS | UART接收数据噪声过滤器 0:开启噪声滤波。 1:关闭噪声滤波器。 |
1 - 0 | LMD | LIN / UART 模式选择 0 0: 0 1:UART模式。 |
1.4、RLN3nLBFC — UART配置寄存器
Bit position | Bit Name | Function |
6 | UTPS | 输出极性开关 0:传输数据正常输出 1:反向输出的传输数据 |
5 | URPS | 输入极性开关 0:接收数据正常输出 1:接收数据,输出倒排 |
4 - 3 | UPS | UART校验选择 00:校验禁用 01:即使校验 10:奇校验 11:奇校验 |
2 | USBLS | UART停止位长度选择 0:停止位:1位 1:停止位:2位 |
1 | UBOS | UART传输格式顺序选择 0: LSB先 1: MSB先 |
0 | UBLS | UART字符长度选择 0: UART 8位通信 1: UART 7位通信 |
1.5、RLN3nLEDE — UART错误检测使能寄存器
Bit position | Bit Name | Function |
3 | FERE | 帧错误检测使能 0:禁用帧错误检测功能。 1:帧错误检测。 |
2 | OERE | 超限错误检测启用 0:禁用溢出错误检测。 1:表示启动溢出错误检测。 |
0 | BERE | 误码检测使能 0:禁用误码检测。 1:表示启用误码检测。 |
1.6、RLN3nLWBR — UART唤醒波特率选择寄存器
Bit position | Bit Name | Function |
7 - 4 | NSPB | 位采样计数选择 B7 - B4 0 0 0 0: 16次采样 0 0 1 1: 4采样 0 1 1 1: 8个采样 1 1 1 1: 16个采样 禁止进行上述以外的设置。 |
3 - 1 | LPRS | 预分频时钟选择 B3 - B1 0 0 0: 1/1 0 0 1: 1/2 0 1 0: 1/4 0 1 1: 1/8 1 0 0: 1/16 1 0 1: 1/32 1 1 0: 1/64 1 1 1: 1/128 |
1.71.7、RLN3nLBRP01 — UART波特率预分频01寄存器
Bit position | Bit Name | Function |
15 - 0 | BRP | 假设该寄存器中设置的值为L(0 ~ 65535),即波特率 prescaler将precaler时钟的频率除以L + 1。 设置范围:0000H ~ FFFFH |
例程:
/*****************************************************************************
** Function: RLIN30_init
** Description: Initialize the RLIN31 for UART
** Parameter: None
** Return: None
******************************************************************************/
void RLIN30_Init(UART_Baudrate_T baudrate)
{
/* Disable RLIN */
RLN30LUOER = 0x00u; //Disables transmission/reception.
RLN30LCUC = 0x00u; //LIN wake-up mode / LIN reset mode
CLKCTLCKSC_ILIND_STPM = 0x03;
/* LIN Mode Register/UART Mode Register (LMD) */
RLN30LMD = 0x01u;
/* UART mode */
/* LIN / UART System Clock: fa */
/* Module generates 1 interrupt signal */
/* 3-bit majority voting logic for sampling RX data is enabled */
/* LIN Break Field Configuration Register/UART Configuration Register1 */
RLN30LBFC = 0x00u;
/* UART 8-bit communication */
/* LSB first */
/* Stop Bit 1 bit */
/* Parity Disabled */
/* Without RX inversion */
/* Without RX inversion */
/* LIN / UART Error Detection Enable Register */
RLN30LEDE = 0; //0x8Fu; //add
/* No error detection */
/* LIN Wake-up Baud Rate Selector register */
//RLN31LWBR = 0x30u; /* 4 samples per bit ;because datasheet is 6~16,we donot use this */
RLN30LWBR = 0x60u; //add
/* 12 samples per bit */
/* LIN Baud Rate Prescaler1/UART Baud Rate Prescaler */
//RLN31LBRP01 = Uart_Baudrate[baudrate];
RLN30LBRP01 = 4;
//(115200bps) 40MHz * ( 1 / 1 ) / ( 28 + 1 ) / 7 = 114942(-0.2%)
/* LIN / UART Control Register */
RLN30LCUC = 0x01u;
/* Set SW Reset request to inactive */
}