其他分享
首页 > 其他分享> > 7、ARM嵌入式系统:UART初始化

7、ARM嵌入式系统:UART初始化

作者:互联网

一、UART概述

百度上UART的定义:通用异步收发传输器(Universal Asynchronous Receiver/Transmitter),通常称作UART。它将要传输的资料在串行通信并行通信之间加以转换。作为把并行输入信号转成串行输出信号的芯片,UART通常被集成于其他通讯接口的连结上。简单来说就是UART就是一种用于信号串行传输的总线。

UART参数的介绍这篇CSDN文章写的很详细:

时钟频率、波特率、波特因子关系详解_zuosifengli的专栏-CSDN博客_波特率和时钟频率的关系smartcard和串口复用, guardtime就是停止位。smartcard标准是3.57M,如果时钟因子(    波特率因子)为372,  则对应波特率为9600,  时钟因子=  CLK / 波特率etu =时钟因子/ CLK =  1/波特率, 即传输一个符号位(一个bit)的时间。  =======================https://blog.csdn.net/zuosifengli/article/details/48313423

从电路原理图上可以看出,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