嵌入式--串口、RS232、RS485通信

一、串口通信

1.UART指的是通用异步收发器,是一种通用的串行异步通信总线该总线有两条数据线,一条接收一条发送,可以实现全双工的发送和接收,在嵌入式开发过程中比较常用。异步通信没有使用同一个时钟,可能出现误差,串口一次只能发送一个字节,避免累积误差的出现。

波特率:用于描述UART通信时的通信速度,其单位为bps(bit per second)即每秒钟传送的bit数量。

USART指的是通用同步异步收发器,通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。

NRZ:不归零码(Non-Return-Zero),指的是传输1bit数据后电平不需归零。

RZ:归零码(Return-Zero),指的是传输1bit数据后电平需归零。

2. 串口通信过程

3.字符格式

字符格式一般都是采用字符帧的形式进行传输,字符帧由起始位、数据位、校验位、停止位组成 

数据线在空闲的时候为高电平,且发送数据的时候先发送低位再发送高位。 

(1)起始位:指的是一帧数据的开始,规定为1bit的低电平,无需设置

(2)数据位:指的是有效的信息内容,可以设置为7bit(标准的ASCII码)或者8bit(拓展ASCII)

(3)校验位:指的是 对数据位的简单校验,可以确保数据正常发送,也可以避免噪声的影响,校验分为奇校验和偶校验,校验位只占1bit,数据位+校验位中的数字1的个数为奇数就是奇校验,一般不使用校验位。

 (4)停止位:指的是一帧数据传输完成,停止位为高电平,一般选择一位停止位。

 3.通信速率:指的是单位时间内传输的有效二进制的个数,也被称为波特率,单位为bps,常用的波特率有9600bps、115200bps。

  

4.中断请求 

 二、串口相关寄存器

 1.状态寄存器(USART_SR)

 

2.数据寄存器(USART_DR)
3.波特比率寄存器(USART_BRR)
 4.控制寄存器 1(USART_CR1)

 5.控制寄存器 2(USART_CR2)

6.控制寄存器 3(USART_CR3)
void USART_DeInit(USART_TypeDef* USARTx); 

 三、串口常用相关库函数功能

 1.void USART_DeInit(USART_TypeDef* USARTx);

串口初始化函数,利用RCC_APB2PeriphResetCmd进行配置,1.选择串口。 

2.void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct); 

串口初始化函数,1.选择串口。2.对串口参数进行配置,主要包括(1)USART_BaudRate波特率设置(2)USART_WordLength数据长度是八位还是九位(3) USART_StopBits停止位选择(1/1.5/0.5/2)(4)USART_Parity奇偶校验位选择,一般不选(5)USART_Mode是接收还是发送模式(6)USART_HardwareFlowControl硬件流控模式设置,只有USART模式才有。

3.void USART_StructInit(USART_InitTypeDef* USART_InitStruct);

对串口进行结构体初始化,参数和初始化函数一样,但都是默认的参数。

4.void USART_Cmd(USART_TypeDef* USARTx, FunctionalState NewState);

串口使能函数,1.选择串口,2.使能。

5.void USART_ITConfig(USART_TypeDef* USARTx, uint16_t USART_IT, FunctionalState NewState); 

串口中断函数,1.选择串口,2. 选择中断类型,3.使能

6.void USART_SendData(USART_TypeDef* USARTx, uint16_t Data);

串口发送数据函数,1. 选择串口,2.发送数据

7.uint16_t USART_ReceiveData(USART_TypeDef* USARTx); 

串口接收数据函数, 1. 选择串口,2.发送数据

8.FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG); 

获取状态标志函数,1.选择串口,2.标志选择

9.void USART_ClearFlag(USART_TypeDef* USARTx, uint16_t USART_FLAG); 

清除状态标志函数,1.选择串口,2.标志选择

10.ITStatus USART_GetITStatus(USART_TypeDef* USARTx, uint16_t USART_IT); 

获取中断状态函数,1.选择串口,2.中断选择

11.void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT); 

清除中断标志函数,1.选择串口,2.中断选择

四、RS232通信 

1.串口存在的问题:

(1)UART没有规定不同器件连接时连接器的标准,所以不同器件之间通过UART通信时连接很不方便。

(2)不同处理器规定的高低电平标准存在差异,不同处理器没办法直接使用UART通信。

(3)抗干扰能力差、通信距离极短

2.RS232协议

RS232是用于串行通讯的标准,采用一个标准的连接器,标准中对连接器的每个引脚的作用加以规定,还对信号的电平加以规定,一般最常用的是RXD、TXD、GND。

规定逻辑“1”的电平为-5v到-15v,逻辑“0”的电平为+5v到+15v,选用该电气标准的目的在于提高抗干扰能力,增大通信距离,其通信距离一般可达15m。

在通信过程中,一般都需要芯片对信号进行转换,将TTL电平转换成RS231电平,如采用MAX232EPE。

3.RS232存在的问题

(1)接口信号电平值较高,易损坏接口电路的芯片

(2)通信速率较低,易产生共模干扰,抗噪声干扰性弱

(3)传输距离只有15米

 五、RS485通信

 1.RS485通信协议

可以在远距离(1500米)条件下以及电子噪声大的环境下有效传输信号,可以连接多个收发器。可以利用单一的RS485接口建立一个设备网络。

RS485采用差分信号进行数据传输,两线间的电压差为+2v-+6v表示逻辑“1”,两线间的电压差为-2v到-6v表示逻辑“0”,RS485的电平与TTL电平兼容,可方便与TTL电路连接。

2.接口

RS485采用两线制,在同一总线上可以存在多个节点,因采用两线制,数据的发送和接受都要使用这对差分信号线,发送和接受不能同时进行,只能采用半双工的方式工作。

处理器产生的信号一般都是TTL信号并不是符合RS485标准的信号,所以一般我们还需要在处理器外部去添加电路将TTL信号转换成差分信号。如MAX485

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值