一、通信接口
1.通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统。
2.通信协议:制定通信的规则,通信双方按照协议规则进行数据收发。
STMF103C8T6支持以下通信协议
如果需要蓝牙无线遥控功能,陀螺仪加速度计测量姿态的功能,STM32没有,只能通过外挂芯片完成,这时就需要将两个设备用通信线连接,完成数据交换,从而实现读取外挂模块数据和控制外挂模块的目的。
图中 TX(或TXD)为数据发送脚,RX(或RXD)为数据接收脚,SCL,SCLK为时钟,SDA是数据。MOSI是主机输出数据脚,MISO是主机输入数据脚。CS是片选,用于指定通信的对象。CAN_H和CAN_L是差分数据脚,用两个引脚表示一个差分数据。DP(D+)和DM(D-)也是一对差分数据脚。
二、串口通信
1.串口是一种应用十分广泛的通讯接口,串口成本低容易使用,通信线路简单、可实现两个设备的互相通信。
2.单片机的串口可以使单片机和单片机、单片机和电脑、单片机和各种各样的模块互相通信、极大的扩展了单片机的应用范围,增强了单片机系统的硬件实力。
三、硬件电路
1.简单双向串口通信有两根通信线(发送端TX和接收端RX)
2.TX和RX要交叉连接
3.当只需要单向的数据传输时,可只接一根通信线
3.当电平标准不一致时,需要加电平转换芯片
注:电平标准时数据1和数据0的表达方式,是传输线缆中人为规定的电压与数据的对应关系,串口常用的电平标准有如下三种。
a.TTL电平:+3.3v或+5v表示1,0v表示0.
b.RS232电平:-3~-5v表示1,+3~+5v表示0
c.RS485电平:两线压差+2~+6v表示1,-2~-6v表示0(差分信号,抗干扰能力强)
四、串口参数及时序
波特率:串口通信的速率
起始位:标志一个数据帧的开始,固定为低电平
数据位:数据帧的有效荷载,1为高电平,0为低电平,低位先行
校验位;用于数据验证,根据数据位计算得来(无校验、奇校验、偶校验、CRC校验)
停止位:用于数据帧间隔,固定为高电平
五、USART简介
USAR:通用同步/异步收发器
USART是STM32内部集成的硬件外设,可根据数据寄存器的一个字节数据自动生成数据帧时序,从TX引脚发送出去,也可自动接收RX引脚的数据帧时序,拼接为一个字节数据,并存放在寄存器里
USART自带波特率发生器,最高达4.5Mbits/s,相当于分频器
可配置的数据位长度(8或9),停止位长度(0.5或1或1.5或2),数据位长度如上图所示,如果需要校验位就设置9,不需要就设置8.停止位决定了波的间隔,一般用1。
可以选择无校验、奇校验和偶校验三种
STM32的USART资源: USART1、 USART2、 USART3
六、USART框图
功能引脚
TX: 发送数据输出引脚。
RX: 接收数据输入引脚。
SW_RX: 数据接收引脚,只用于单线和智能卡模式,属于内部引脚,没有具体外部引脚。
nRTS: 请求以发送(Request To Send),n表示低电平有效。如果使能RTS流控制,当USART接收器准备好接收新数据时就会将nRTS变成低电平; 当接收寄存器已满时,nRTS将被设置为高电平。该引脚只适用于硬件流控制。
nCTS: 清除以发送(Clear To Send),n表示低电平有效。如果使能CTS流控制,发送器在发送下一帧数据之前会检测nCTS引脚, 如果为低电平,表示可以发送数据,如果为高电平则在发送完当前数据帧之后停止发送。该引脚只适用于硬件流控制。
SCLK: 发送器时钟输出引脚。这个引脚仅适用于同步模式。
STM32F103VET6系统控制器有三个USART和两个UART,其中USART1和时钟来源于APB2总线时钟,其最大频率为72MHz, 其他四个的时钟来源于APB1总线时钟,其最大频率为36MHz。UART只是异步传输功能,所以没有SCLK、nCTS和nRTS功能引脚。
控制器
USART有专门控制发送的发送器、控制接收的接收器,还有唤醒单元、中断控制等等。 使用USART之前需要向USART_CR1寄存器的UE位置1使能USART,UE位用来开启供给给串口的时钟。
发送或者接收数据字长可选8位或9位。
发送器
一个字符帧发送需要三个部分:起始位+数据帧+停止位。起始位是一个位周期的低电平,位周期就是每一位占用的时间; 数据帧就是我们要发送的8位或9位数据,数据是从最低位开始传输的;停止位是一定时间周期的高电平。
接收器
如果将USART_CR1寄存器的RE位置1,使能USART接收,使得接收器在RX线开始搜索起始位。 在确定到起始位后就根据RX线电平状态把数据存放在接收移位寄存器内。接收完成后就把接收移位寄存器数据移到RDR内, 并把USART_SR寄存器的RXNE位置1,同时如果USART_CR2寄存器的RXNEIE置1的话可以产生中断。
RE | 接收使能 |
RXNE | 读数据寄存器非空 |
RXNEIE | 接收完成中断使能 |