7、ARM嵌入式系统:UART初始化
作者:互联网
一、UART概述
百度上UART的定义:通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信与并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。简单来说就是UART就是一种用于信号串行传输的总线。
UART参数的介绍这篇CSDN文章写的很详细:
从电路原理图上可以看出,UART1与PORTC引脚相连接。
二、初始化步骤:
UART初始化分为三步:
void UART1_Init()
{
// 配置对应端口的时钟
UART1_SIM_Init();
//将端口配置为UART使用
UART1_PORT_Init();
//配置UART的各种参数
UART1_Config(10500,9600);
}
三、初始化详解
1、配置管脚的时钟
void UART1_SIM_Init(void)
{
SIM_SCGC4 |= SIM_SCGC4_UART1_MASK;
SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;
}
step1.1:使能UART的时钟
SIM_SCGC4 |= SIM_SCGC4_UART1_MASK;
step1.2: 使能PORTC管脚的时钟
2、配置PORTC为芯片专用
PORTC_PCR3 = PORT_PCR_MUX(0x3);
PORTC_PCR4 = PORT_PCR_MUX(0x3);
3、配置UART参数
UART1_Config(10500,9600);
系统时钟频率为10500,波特率为9600
3.1 配置UART控制寄存器2,将UART的发送和接受使能
UART1_C2 &= ~ (UART_C2_TE_MASK| UART_C2_RE_MASK);
3.2 配置UART控制寄存器1,配置奇偶校验、环回等参数
UART1_C1 = 0x00;
控制寄存器1值全部配置为0.未使能环回、未打开奇偶校验等。
3.3 配置时钟频率和波特率
1)//系统时钟的单位为K,所以要乘以1000;因为采样都是采用过采样的方式来解决采用抖动的问题,过采样16倍,所以要除以16。
/* Calculate baud settings */
sbr = (unsigned short)((sysclk*1000)/(baud * 16));
2)配置波特率要配置2个寄存器,总共13bit,BDH(5bit)和BDL(8bit)。sbr的13bit的值,取高5bit配置到BDH,取低8bit配置到BDL。
/* Save off the current value of the uartx_BDH except for the SBR field */
temp = UART1_BDH & (~(0x1F));
UART1_BDH = temp | (((sbr & 0x1F00) >> 8));
UART1_BDL = (unsigned char)(sbr & UART_BDL_SBR_MASK);
3.4 打开UART的发送和接收
UART1_C2 |= UART_C2_TE_MASK| UART_C2_RE_MASK|UART_C2_RIE_MASK;
标签:UART,MASK,嵌入式,UART1,波特率,ARM,SIM,时钟 来源: https://blog.csdn.net/cyf31/article/details/123035176