首先比较一下串行通讯和并行通讯的特点。 并行通讯的特点:接线较多,速度快,控制简单。 串行通讯的特点:接线少,速度慢,控制复杂。
一、串口通讯的传输方向:(1)单工:数据传输仅能沿一个方向。不能事项反向传输。 (2)半双工:数据传输可以沿两个方向,但需要分时进行。 (3)全双工:数据可以同时进行双向传输。 半双工的通讯实例(RS485通讯电路): 一个数据通道,是差分信号,由A线和B线共同构成。 接收管脚1,发送管脚4,方向控制管脚2、3,当方向控制管脚拉低时,允许485总线上的数据传到单片机(左边);当方向控制管脚拉高,允许单片机向485总线上发送数据。 倘若有很多设备挂在485总线上,这些设备在同一时刻只有一个设备处在发送状态,其他设备都处于接收状态。如果在同一时刻有两个或两个以上设备处于发送状态会导致485总线错误,通讯失败。因此设计电路和编写程序都要注意。在每次单片机发送数据完毕后要把发送管脚的电平拉低,不允许485总线上其他设备发送数据。 二、串行通信的类型:(1)同步通信:指发送方在同步时钟的控制下,将数据逐位发出去,接收方在同步时钟控制下逐位接收,如SPI,IIC等。 (2)异步通信:指双方要线约定好通讯格式,如:波特率,数据格式(位数,有无起始位、停止位个数、有无校验位)如UART,单总线通讯(DS18B20) 三、stm32f4 串口通讯程序编程:1. 新建串口通讯模块文件:SCI.C和SCI.H 2. 编写 SCI.C和SCI.H文件 (1) 开启 USART1时钟 :RCC_APB2PeriphClockCmd (2) 开启GPIOA时钟:RCC_AHB1PeriphClockCmd (3) 配置GPIOA Pin9和Pin10为串口功能:GPIO_Init和GPIO_PinAFConfig (4) 初始化串口参数:USART_Init (5) 串口中断配置:USART_ITConfig (6) 中断优先配置:NVIC_PriorityGroupConfig和NVIC_Init (7) 使能串口:USART_Cmd (8) 串口中断函数编写 (9) 在main函数中调用串口初始化
|