****
起始位+数据位(一般为8位)+奇偶校验位+停止位,每周期传输n个二进制位
s5pv210串口控制器图:
transmitter由发送缓冲区Transmit Buffer Register和发送移位器Transmit Shifter构成。我们要发送信息时,首先将信息进行编码(一般用ASCII码)成二进制流,然后将一帧数据(一般是8位)写入发送缓冲区(从这里以后程序就不用管了,剩下的发送部分是硬件自动的),发送移位器会自动从发送缓冲区中读取一帧数据,然后自动移位(移位的目的是将一帧数据的各个位分别拿出来)将其发送到Tx通信线上。
receiver类似
我们要做的事情:初始化串口(设置好我们需要的模式)+写发送缓冲区+读接收缓冲区。
其他包括移位、起始位定义、TTL电平定义等所有事情控制器以及其外围电路都帮我们做好了。
源时钟信号
外部APB总线(PCLK_PSYS,66MHz)
1.寄存器源设置(为串口控制器选择源时钟,一般选择为PCLK_PSYS,也可以是SCLK_UART),还有波特率发生器的2个寄存器。
2.波特率发生器有2个重要寄存器:UBRDIVn和UDIVSLOTn(其中UBRDIVn是主要的设置波特率的寄存器,UDIVSLOTn是用来辅助设置的,目的是为了校准波特率的。
不用此模式串口控制器本来的发送/接收缓冲区是固定的1字节长度。用此可扩展缓冲区。
每个UART由七个状态(Tx/Rx/Error)信号组成,即溢出错误、奇偶校验错误、帧错误、中断、接收缓冲区数据准备就绪、发送缓冲区清空和发送移位器清空。这些条件由相应的UART状态寄存器(UTRSTATn/UERSTATn)指示。
(溢出错误、奇偶校验错误、帧错误和中断条件指定接收错误状态。)如果控制寄存器(UCONn)中的接收错误状态中断启用位设置为1,则接收错误状态生成接收错误状态中断。如果检测到接收错误状态中断请求,可通过读取UERSTATn的值来识别中断源。
(1)串口通信分为发送/接收2部分。发送方一般不需要(也可以使用)中断即可完成发送,接收方必须(一般来说必须,也可以轮询方式接收)使用中断来接收。
(2)发送方可以选择使用中断,也可以选择不使用中断。使用中断的工作情景是:发送方先设置好中断并绑定一个中断处理程序,然后发送方丢一帧数据给transmitter,transmitter发送耗费一段时间来发送这一帧数据,这段时间内发送方CPU可以去做别的事情,等transmitter发送完成后会产生一个TXD中断,该中断会导致事先绑定的中断处理程序执行,在中断处理程序中CPU会切换回来继续给transmitter放一帧数据,然后CPU切换离开;不使用中断的工作情景是:发送方事先禁止TXD中断(当然也不需要给相应的中断处理程序了),发送方CPU给一帧数据到transmitter,然后transmitter耗费一段时间来发送这帧数据,这段时间CPU在这等着(CPU没有切换去做别的事情),待发送方发送完成后CPU再给它一帧数据继续发送直到所有数据发完。CPU是怎么知道transmitter已经发送完了?原来是有个状态寄存器,状态寄存器中有一个位叫发送缓冲区空标志,transmitter发送完成(发送缓冲区空了)就会给这个标志位置位,CPU就是通过不断查询这个标志位为1还是0来指导发送是否已经完成的。
(3)因为串口通信是异步的,异步的意思就是说发送方占主导权。也就是说发送方随时想发就能发,但是接收方只有时刻等待才不会丢失数据。所以这个差异就导致发送方可以不用中断,而接收方不得不使用中断模式。