USART串口通信
1.原理:数据以0或1的方式一帧一帧的传输,有起始位和校验位,同时要约定传输的数据帧字长和波特率即传输的速度,其中起始位代表着一数据帧信息的开始和结束,校验位保证了传输的准确性,字长即每数据帧的信息容量,波特率即传输的速度。
USART结构体成员
USART_InitStructure.USART_BaudRate = 9600; //波特率
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; //硬件流控制,不需要
USART_InitStructure.USART_Mode = USART_Mode_Tx; //模式,选择为发送模式
USART_InitStructure.USART_Parity = USART_Parity_No; //奇偶校验,不需要
USART_InitStructure.USART_StopBits = USART_StopBits_1; //停止位,选择1位
USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字长,选择8位
2.其中硬件流控制会产生两个信号RTS和CTS,这两个信号会分别传给接收端和发送端,做好准备或者拒绝接收或者发送数据。RTS信号是发送端向接收端发送信号,表示发送端已经准备好发送数据,而CTS信号是接收端向发送端发送信号,表示接收端已经准备好接收数据。这两个信号在不同的方向上进行控制,所以需要在发送端和接收端各有一个。
在一般来说,在发送端,当发送缓冲区满时,发送端就会发送RTS信号让接收端不能再接受数据,在接收端接收完数据后,就发送CTS信号告诉发送端可以继续发送数据。
3. 通过模式选择,可配置USART是发送还是接收。
4. 从这个框图可以看出,写入数据时数据先进入发送数据寄存器,此时要判断一下发送移位寄存器是不是处于忙碌状态,如果不忙,数据就会通过发送移位寄存器进入编解码模块到达TX引脚发送。控制发送移位寄存器的就是发送器控制单元。同理,接收数据也有相应的接受数据寄存器和接受控制器,上面说的硬件流控制也是通过发送器控制和接收器控制来控制发送和接收的过程,同时接受完数据还可以产生中断。右边的SCLK是伴随发送数据而产生的,相当于反馈,同时用此时钟可以兼容别的通信协议。下方的TE,和RE控制波特率是给发送还是接受用,即控制USART的模式。唤醒单元的存在是为了多设备通信模式而设计的。
其他注意事项,后续更新再添加。