嵌入式学习之51单片机——串口(UART)
一、Uart 串口通信:
1. UART:通用异步收发器
2. 通信方式:
- 单工:两个主机之间通过一根数据线进行传输,发送方和接收方是固定的,数据在传输过程中方向保持单向性
- 半双工:两个主机之间通过一根数据线进行传输,通信的主机双方既可以作为发送方也可以作为接收方,数据的传输方向可以是双向的(同一时刻数据的传输方向单向的)
- 全双工:两个主机之间通过耳根数据线进行传输,通信的主机双方既可以作为发送方也可以作为接收方,数据的传输方向可以是双向的
单工:
半双工:
全双工:
3. 主机和从机的区别:
- 主机:主机拥有通信的绝对控制权,主机想何时通信就何时发起通信,给从机下发指令
- 从机:从机无法直接发起通信,完成主机下发的指令,并将结果上报给主机
4. Uart数据传输的顺序:
串口通信中,遵循LSB(低位)优先传输的原则
5. 串行和并行:
- 串行:传输数据时通过一根线实现,需要按照1个bit1个bit的次序先后传输(资源消耗小->1根线 传输速度慢)
- 并行:多个bit在多根数据线上同时进行传输(传输速度快 资源消耗大->需要占用多根数据线)
6. 串口通信时序
起始位 +数据位(8bit ) + 校验位(奇偶校验) + 停止位
- 空闲时数据线为高电平;
- 发送发发送一个低电平表示起始位;
- 发送的第一个比特是最低为(最右边);
- 校验位分为奇校验,偶校验和无校验。奇校验是指确保数据位加上校验位中"1",1的总数为奇数;偶校验是指确保数据位加上校验位中"1",1的总数为偶数;
- 为保证下一个字节发送前的起始位能够表现出来,校验位之后发送一个停止位1。
7. 波特率:每秒传输bit数量
8. 同步和异步:
- 串口通信通过波特率实现同步
- I2C 通过时钟线实现同步
I2C
9. TTL、RS232、RS485 电器属性
- TTL: TTL电平 -> 高电平:5V 3.3V 低电平:0V
- RS232: 负逻辑 高电平:-3 - -15V 低电平: 3 - 15V
- RS485:差分信号 高电平 7 - 12V 低电平 -7 - -12V
二、Uart相关寄存器配置(串口初始化):
1.SCON 串口控制寄存器:
(1)先将SCON寄存器中的Bit6和Bit7清零
(2)将SCON寄存器中的Bit6置1,代表串口工作在方式1(8位UART,波特率可变)-> Timer1 (8位自动重装模式)
(3)将SCON寄存器中的Bit4置1,允许串口接收数据
(4)检测SCON寄存器中的bit1为1还是0
- 1:数据发送完毕,可以向SBUF赋值;
- 0:数据未发送完毕
2. PCON 电源控制寄存器:
(1)将PCON寄存器中的Bit6清0,代表可以通过SCON寄存器中的Bit7和Bit6指定串口工作方式
(2)将PCON寄存器中的Bit7置1,波特率加倍
3.TMOD、TCON 定时器模式选择、定时器控制寄存器
(1)将TMOD寄存器中的高4位清0
(2)将TMOD寄存器中的bit5置1,代表定时器工作在8位自动重装模式
(3)为定时器赋初值(TL0 TH0)
(4)将TCON寄存器中的bit6置1,允许定时器开始计数