ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-02-20 21:31:40  阅读:246  来源: 互联网

标签:UART MASK 嵌入式 UART1 波特率 ARM SIM 时钟


一、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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有