STM32F103 串口uart学习笔记(一)

1,常用的通信方式

通信方式         时钟          引脚工作方式电平        
SPI                 同步步                        MISO,SDA,SCK,MOSI全双工单端
串口                异步RXD,TXD全双工单端
I2C                 同步SCL,SDA半双工单端

1,1 单端电平:对应本设备的GND端口的电平来进行电平高低确认,区别与差分法(根据双端的两个电压差)。

1,2 时钟:在发送端的电平之下,无法确定具体的采样时间,因此就需要一个时钟来进行数据采样,例如一个标准的,高低电平时间相等的下降沿产生一秒的波形,根据不同的采样频率4bite/s与2bit/s可将采集到的电平区分为(1,1,0,0)与(1,0)。

同步时钟:由于硬件带有SCK\SCLK引脚可以两个设备之间约定相同的操作来进行相互传输。

异步时钟:由于双方不具备约定好的内,外部晶振时钟,因此需要约定波特率,并相互进行在数据帧格式的头尾来进行相对的格式以保证传输。

其中串口可分为UART与USART,前者为异步时钟后者为同步时钟。而串口多数是以异步形式使用。

2,串口通信方式

2,1串口通信有两根通信线一根为TXD(发送端口)RXD(接收端口),其中发送设备的发送端要连接接收设备的接收端口,另一设备同理。

2,2 stm32的ttl电平:对应本设备的GND的端口电平(如0v)置为低电平,若该设备(如3.3v)则置为高电平。

2,3 串口的发送时序,串口为异步通信,根据波特率(每秒传输的码元个数)来进行传输,在二进制的条件下一个码元为1bit,因此此时的波特率就对应每秒传输多少个bit位;

2,4发送协议 根据串口的协议

首先需要在发送一个数据帧时使其置为高电平,并置低(为起始位),依次为八个数据位,其次为(停止位)位置低后拉高并未下一次的起始位做准备;在每一字节数据发送完毕时可选择校验,其中校验方式分为,不校验,奇数校验,偶数校验三种方式,夹在最后一位数据与停止位之间的1bit,且串口通信为低位先行,例如0x0F 转换为二进制为00001111,则在传输中为11110000。

2,5 USART的收发功能:

      串口的收发功能通过两个数据寄存器来进行配置,其中发送数据寄存器(TDR)使只写的,接受数据寄存器(RDR)是只读的,两个寄存器的地址相同。

(1),发送功能详情:通过配置TDR使其存入数据,其中标志位TXE(TDR空,在TDR中数据未发送完毕时为0,TDR是一次性的将数据发送到移位寄存器中,因此在移位寄存器右移时,如果数据未传输完毕,TDR需要进行等待下一组数据的移入)在TDR向发送移位寄存器发送完毕置1并代表TDR可接受下一帧数据,但移位寄存器的数据仍未发送到TX上,需要在发送器控制下,将数据右移到TX上。“可以将此功能比作长尾漏斗,头口大尾口小,一次进八个(并行),一次出一个。当八个全部进入漏斗尾巴时再次加入八个”。

(2),接收功能详情: 通过接收器控制与接受移位寄存器,将数据右移,移位寄存器每次只工作一位,当RDR读取,其中RXNE(接收数据寄存器非空标志位)置1时,可以将RDR读取。并且可以进入中断。

2,6 波特率发生器:配置寄存器将时钟总线进行分频得到波特率,最高位4.5Mbit/s。

其中,stm32f103c8t6的内部USART资源为:USART1(APB2),USART2(APB1),USART3(APB1).

2,7硬件控制:

流控:可以避免发送太快接收设备来不及出来造成的数据覆盖。nRTS(输出脚Request请求发送)低电平时表示可以接收数据,nCTS(clear清除脚,判断另一设备的RTS是否可以接收,从而发送数据)。

2,8时钟输出

串口的时钟根据发送移位寄存器,发送移位寄存器移出一个位跳变一个周期。只能输出不能输入,可通过配置来兼容SPI。采样点时刻在数据的中间时间点,避免误差,也可以实现双设备同步时钟输出的功能。

2,9唤醒单元

可以通过USART的地址来唤醒设备,实现总线通信。

3,串口的振格式与时钟

由上图可发现,串口的数据帧可以分为8位与9位(包含校验位),其中时钟为发送移位寄存器的输出时钟,可以通过配置应用为串口间相互通信的同步时钟。并且时钟的采样点位时每位数据传输时的中间。

关于时钟采样的16分频:正常来说每次传输一位的数据对应着通信之间的波特率, 但是串口的独特采样方式使得需要将时钟进一步进行配置。

时钟CLK=DIV*16*传输的波特率(时钟需要进行每一位十六次的采样进行跳变)

DIV为寄存器对时钟的分频处理

当时钟采样点过于靠近数据的跳变沿时,导致采样误差概率变高,因此串口的采样点设置在了数据传输时刻的中间

关于每一位十六次采样:为了保证数据是在传输的中间时刻进行采样,采用了1bit16次的采样,通过将起始位进行十六次的采样(中途经过一系列的噪声检测)并且取得789次采样获得了低电平,从而使得后续每一位数据采样同样进行789的采样,并且根据3次当中更多出现的电平次数作为实际电平,从而进行了更为精准的数据采样

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值