学习KEA之UART之一:简介和发送数据

我们以KEA64系列来学习UART 。这是最常用的外设之一了,必须要掌握的。

简介

KEA64有3个串口:UART0, UART1, UART2, 时钟来自Bus Clock。

几个重要的参数:

  • 起始位(固定1位)
  • 波特率(300 - 1500000bps)
  • 数据位 (5 - 8位,低位数据先发送)
  • 校验位 (None、奇校验或偶校验)
  • 停止位 (1、1.5 或2)
  • 流控(不常用)

比较常见的配置之一:

  • 波特率(9600bps)
  • 数据位 (8位)
  • 校验位 (None)
  • 停止位 (1)
  • 流控(无)

则发送一个字节,需要发送的有:起始位1位、数据位8位、停止位1位,总共10位,总共时间是 10 bit * (1/9600) s/bit ≈ 1.04 ms, 串口波形如下(TTL电平):
在这里插入图片描述
从上图可以看到,空闲时,UART的TX都是高电平(约2.2V),起始位是低电平,数据位(高电平表示1,低电平表示0,低位先发送,对应波形是b10101010,反过来就是b01010101,即最终发送的数据是0x55),停止位是高电平。更多的串口解读,可以参考:深入剖析串口通信数据格式

串口初始化的过程发下:

  1. 使能串口时钟
  2. 设置停止位
  3. 设置波特率
  4. 设置校验位和数据位
  5. 允许发送或 接收
  6. 允许中断(可选)
  7. 使能串口管脚

串口发送过程(非中断)如下:

  1. 等待发送缓冲区为空
  2. 清除TDRE 标志位
  3. 加载数据到串口数据寄存器发送

发送程序

#include "derivative.h" /* include peripheral declarations SSKEAZN64M2 */

void Clk_Init(void);
void Enable_Interrupt(uint8_t vector_number);
void init_PIT(void);

void UART_Init(void);
void UART_Transmit_Char(char send);
void UART_Transmit_String(char data_string[]);

uint8_t timer1sFlag = 0;

int 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值