学习目标:实现串口收发数据并用printf打印1,使用寄存器和库函数配置串口,实现printf发送2,计算9600波特率,时钟为36000000Hz的情况下:USARTDIV =? BRR寄存器里怎么填?写出来计算过程3,实现串口接收数据,并打印出来4.自定义协议格式:帧头:0xAA 0x55数据部分:0x01 0x01 0x01分别对应灯0 灯1 蜂鸣器帧尾:0x55 0xAA示例: 0xAA 0X55 0x01 0x01 0x01 0x55 0xAA任务:通过串口助手发送上述协议数据,然后控制开发板上的元器件。要做校验,如果帧头和帧尾数据不是正确AA 55, 在串口助手上打印提示,数据格式出错,请重新发送。学习内容:参考资料1,UART串口通信1.1UART的作用和定义UART串行通信接口(异步通信)、USART(同步、异步)应用:PC电脑和开发板之间的通信、开发板和开发板之间的通信、开发板和串口模块之间的通信1.2 通信分类补充说明常见的通信分类方式:同步异步:看有没有时钟线(CLK)同步:通信双方按照同一个时钟进行数据收发,双方需要有一根时钟线进行连接异步:双方不公用一个时钟,只需要双方按照相同的速率进行收发即可单工、半双工、全双工单工:两个设备设备A和设备B,只能是设备A向设备B发送(设备B向设备A发送),传输方向单一半双工:设备A可以向设备B发送数据、设备B也可以向设备A发送数据,但是同一时刻只能有一种状态。全双工:设备A向设备B发送数据的同时,设备B也可以向设备A发送数据。通信数据线有两条串行、并行串行:一次只发送一位数据,独木桥,慢,但是稳定,传输距离远并行:一次可以发送多位数据,高速公路,多车道,快、但是需要考虑干扰问题1.3 通信接口-物理层DB9接口:RTS:请求发送CTS:清除发送接线采用交叉连接:TX-RXGND:一般串口通信必须共地,不同的设备对于0电位的判断可能不一样,避免数据传输出错,一般将两个设备的GND连到一起,确保双方的0电位一致。1.4 通信协议-协议层协议格式速记:1+8+0+1起始位:表示一帧数据开始、低电平数据位:数据长度5-8位,可以配置校验位:奇偶校验,判断数据位中1的个数。一般不用,在数据传输完成后再进行校验(CRC校验、和校验等)奇校验:数据位中1的个数是偶数,校验位补1,数据位中1的个数是奇数,校验位补0偶校验:数据位中1的个数是偶数,校验位补0,数据位中1的个数是奇数,校验位补1停止位:占用0.5-2位,表示一帧数据结束。通信速度控制:通信双方的波特率必须保持一致波特率:一秒钟传输数据的位数。115200 9600 bps传输1字节数据时间计算方式:1801的格式:1位起始位、8位数据位、不使用校验位,1位停止位面试题:115200波特率发送一个0xAA 需要多长时间?1位数据需要的时间:1/115200S发一个0xAA,一共是10位(包含起始和停止位)总时间:10*1/115200 = 1/11520= 86Us左右2,STM32串口通信2.1 参考手册功能介绍通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。● 全双工的,异步通信● NRZ标准格式● 分数波特率发生器系统 ─ 发送和接收共用的可编程波特率,最高达4.5Mbits/s● 可编程数据字长度(8位或9位)● 可配置的停止位-支持1或2个停止位● 单线半双工通信● 可配置的使用DMA的多缓冲器通信 ─ 在SRAM里利用集中式DMA缓冲接收/发送字● 单独的发送器和接收器使能位● 检测标志 ─ 接收缓冲器满 ─ 发送缓冲器空 ─ 传输结束标志● 校验控制 ─ 发送校验位 ─ 对接收数据进行校验2.2 串口通信框图分析串口数据收发流程:DR数据寄存器读写操作:USART1-DR = 10;写操作,通过串口发出去数据,发送数据之前要判断发送数据寄存器是否为空data = USART1-DR;读操作,接收串口收到数据,接收数据之前要先判断RDR里是否有数据波特率产生部分:BRR寄存器控制寄存器:CR1状态寄存器:SR
标准库-3.串口实现流程
学习目标:实现串口收发数据并用printf打印1,使用寄存器和库函数配置串口,实现printf发送2,计算9600波特率,时钟为36000000Hz的情况下:USARTDIV =? BRR寄存器里怎么填?写出来计算过程3,实现串口接收数据,并打印出来4.自定义协议格式:帧头:0xAA 0x55数据部分:0x01 0x01 0x01分别对应灯0 灯1 蜂鸣器帧尾:0x55 0xAA示例: 0xAA 0X55 0x01 0x01 0x01 0x55 0xAA任务:通过串口助手发送上述协议数据,然后控制开发板上的元器件。要做校验,如果帧头和帧尾数据不是正确AA 55, 在串口助手上打印提示,数据格式出错,请重新发送。学习内容:参考资料1,UART串口通信1.1UART的作用和定义UART串行通信接口(异步通信)、USART(同步、异步)应用:PC电脑和开发板之间的通信、开发板和开发板之间的通信、开发板和串口模块之间的通信1.2 通信分类补充说明常见的通信分类方式:同步异步:看有没有时钟线(CLK)同步:通信双方按照同一个时钟进行数据收发,双方需要有一根时钟线进行连接异步:双方不公用一个时钟,只需要双方按照相同的速率进行收发即可单工、半双工、全双工单工:两个设备设备A和设备B,只能是设备A向设备B发送(设备B向设备A发送),传输方向单一半双工:设备A可以向设备B发送数据、设备B也可以向设备A发送数据,但是同一时刻只能有一种状态。全双工:设备A向设备B发送数据的同时,设备B也可以向设备A发送数据。通信数据线有两条串行、并行串行:一次只发送一位数据,独木桥,慢,但是稳定,传输距离远并行:一次可以发送多位数据,高速公路,多车道,快、但是需要考虑干扰问题1.3 通信接口-物理层DB9接口:RTS:请求发送CTS:清除发送接线采用交叉连接:TX-RXGND:一般串口通信必须共地,不同的设备对于0电位的判断可能不一样,避免数据传输出错,一般将两个设备的GND连到一起,确保双方的0电位一致。1.4 通信协议-协议层协议格式速记:1+8+0+1起始位:表示一帧数据开始、低电平数据位:数据长度5-8位,可以配置校验位:奇偶校验,判断数据位中1的个数。一般不用,在数据传输完成后再进行校验(CRC校验、和校验等)奇校验:数据位中1的个数是偶数,校验位补1,数据位中1的个数是奇数,校验位补0偶校验:数据位中1的个数是偶数,校验位补0,数据位中1的个数是奇数,校验位补1停止位:占用0.5-2位,表示一帧数据结束。通信速度控制:通信双方的波特率必须保持一致波特率:一秒钟传输数据的位数。115200 9600 bps传输1字节数据时间计算方式:1801的格式:1位起始位、8位数据位、不使用校验位,1位停止位面试题:115200波特率发送一个0xAA 需要多长时间?1位数据需要的时间:1/115200S发一个0xAA,一共是10位(包含起始和停止位)总时间:10*1/115200 = 1/11520= 86Us左右2,STM32串口通信2.1 参考手册功能介绍通用同步异步收发器(USART)提供了一种灵活的方法与使用工业标准NRZ异步串行数据格式的外部设备之间进行全双工数据交换。USART利用分数波特率发生器提供宽范围的波特率选择。它支持同步单向通信和半双工单线通信。使用多缓冲器配置的DMA方式,可以实现高速数据通信。● 全双工的,异步通信● NRZ标准格式● 分数波特率发生器系统 ─ 发送和接收共用的可编程波特率,最高达4.5Mbits/s● 可编程数据字长度(8位或9位)● 可配置的停止位-支持1或2个停止位● 单线半双工通信● 可配置的使用DMA的多缓冲器通信 ─ 在SRAM里利用集中式DMA缓冲接收/发送字● 单独的发送器和接收器使能位● 检测标志 ─ 接收缓冲器满 ─ 发送缓冲器空 ─ 传输结束标志● 校验控制 ─ 发送校验位 ─ 对接收数据进行校验2.2 串口通信框图分析串口数据收发流程:DR数据寄存器读写操作:USART1-DR = 10;写操作,通过串口发出去数据,发送数据之前要判断发送数据寄存器是否为空data = USART1-DR;读操作,接收串口收到数据,接收数据之前要先判断RDR里是否有数据波特率产生部分:BRR寄存器控制寄存器:CR1状态寄存器:SR