目录
简单介绍一下串口,然后介绍了串口的初始化结构体、函数,还有一些有关串口的应用
一. 串口介绍
1.1 物理层
电平有两种,一个是RS232标准,一种是TTL标准。在嵌入式用的是TTL标准
1.2 协议层
串口通信时,一个控制器的发送口TXD与另一个控制器的接收口RXD相连,一个控制器的接收口RXD与另一个控制器的发送口TXD相连,这样才能一个发一个收
1.2.1 波特率和比特率
波特率和比特率不是一个东西,波特率与码元相关,而比特率之和比特位数有关
1.2.2 起始和结束
通过寄存器设置,可以设置一个起始位和0.5、1、1.5、2个停止位
其中,起始位是一个低电平信号,停止位是高电平
1.2.3 有效数据
首先来了一个起始位,接着就是n位数据位,数据位的具体位数可以通过寄存器调节
1.2.4 校验位
一般自带的有奇偶校验位,但是我现在打工的地方用的CRC校验比较多,不用自带的奇偶校验。
关于奇偶校验,指的是,通过在数据位后面多放一个位用来加上前面数据中“1”的个数来使1的总数是奇还是偶。比如选定了奇校验,而数据中有3个1,那么这个位写0就好了;如果前面有四个1,那这个位就会变成1,这时1的总数是五个,为奇。
二. 串口功能讲解
一般异步串行通信用的比较多,就介绍这种,异步串行用到的引脚只有TX、RX两个。SCLK用于同步发送时的时钟信号,IRDA_OUT和IRDA_IN是在IRDA模式下用到的,CTS和RTS时用于流控制,当串口准备好接收新数据时nRST变低,接收寄存器满时,nRST变高;串口发送时,监测nCTS,如果是低,就可以发送下一帧数据,如果是高就不发送下一帧。这两个引脚用在硬件流控制中
串口向外发送数据时,需要把数据写到发送数据寄存器里,然后数据会被传送到发送移位寄存器中,然后被移位寄存器一位移位移出来送到外面。接收同理,只不过是反过来的过程,接收时,接收移位寄存器把数据一位一位移进来然后给到接收数据寄存器
其中,发送数据寄存器和接收数据寄存器在操作的时候是同一个名字,都叫USART_DR,但是物理意义上是两个寄存器
发送时,先发送低位
三. 寄存器介绍
3.1 状态寄存器