【记录】UART

处理器与外部设备通信的两种方式

  1. 并行通信

    • 传输原理:数据各个位同时传输
    • 优点:速度快
    • 缺点:占用引脚资源多
  2. 串行通信

    • 传输原理:数据按位顺序传输
    • 优点:占用引脚资源少
    • 缺点:速度相对较慢

串行通信

按传送方向,可分为

  1. 单工

    数据传输只支持数据在一个方向上传输

  2. 半双工

    允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信

  3. 全双工

    允许数据同时在两个方向上传输,因此,全双工是两个单工方式的结合,要求发送设备和接收设备都具有独立的接收和发送能力。

这里写图片描述

串行通信的通信方式

  1. 同步通信:带时钟同步信号传输,速度由时钟决定,如SPI,IIC通信接口
  2. 异步通信:不带时钟同步信号,如UART,单总线,速度由波特率决定,同时决定了高低电平持续的时间

常见的串行通信接口
这里写图片描述

串口通信过程

这里写图片描述

串口参数

  1. 起始位
  2. 数据位(8位或者9位)
  3. 奇偶校验位(第9位)
  4. 停止位
  5. 波特率

这里写图片描述

USART框图

  • RX→接收移位寄存器→接收数据寄存器(RDR)
  • 发送数据寄存器(TDR)→发送移位寄存器→TX
  • 发送控制,控制发送器时钟
  • 接收控制,控制接收器时钟
  • 发送、接收共用同一时钟
  • USART_BRR分数波特率发生器
  • SR状态寄存器
  • CR1控制寄存器

这里写图片描述

波特率计算

这里写图片描述

这里写图片描述

串口 1 要设置为 115200 的波特率,而 PCLK2 的时钟(即 APB2 总线时钟频率) 为 84M。这样,
我们根据上面的公式有:

USARTDIV=84000000/(115200*16)=45.572

那么得到:

小数部分:DIV_Fraction=16*0.572=9=0X09;
整数部分:DIV_Mantissa=45=0X2D;

这样,我们就得到了 USART1->BRR 的值为 0X2D9。只要设置串口 1 的 BRR 寄存器值为
0X2D9 就可以得到 115200 的波特率。

串口配置步骤

  1. 使能串口时钟,使能GPIO时钟
  2. 设置引脚复用
  3. 设置GPIO工作模式
  4. 初始化串口参数
  5. 开启中断并初始化NVIC
  6. 使能串口
  7. 编写中断处理函数
  8. 串口发送数据
  9. 获取串口状态

实现

void uart1_init(u32 clk, u32 bound)
{
    float temp;
    u16 mantissa;
    u16 fraction;

    temp = (float)(clk * 1000000) / (bound * 16);
    mantissa = temp;
    fraction = (temp - mantissa)*16;
    mantissa <<= 4;
    mantissa += fraction;

    RCC->AHB1ENR|=1<<0;
    RCC->APB2ENR|=1<<4;
    GPIO_Set(GPIOA,PIN9|PIN10,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_50M,GPIO_PUPD_PU);
    GPIO_AF_Set(GPIOA,9,7);
    GPIO_AF_Set(GPIOA,10,7);       

    USART1->BRR=mantissa;   //Set boundrate 
    USART1->CR1&=~(1<<15);     //Set OVER8= 0 
    USART1->CR1|=1<<3;      //Enable TX 
    USART1->CR1|=1<<13;     //Enable UART
}

参考

STM32F3与 F4 系列 Cortex M4 内核编程手册
STM32F4 开发指南(寄存器版)
STM32F4xxx中文参考手册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值