ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ARM uart-2

2021-10-30 23:05:03  阅读:181  来源: 互联网

标签:transmitter 一帧 uart CPU 发送 中断 寄存器 ARM


文章目录


前言


****

overview

起始位+数据位(一般为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是用来辅助设置的,目的是为了校准波特率的。

FIFO模式

不用此模式串口控制器本来的发送/接收缓冲区是固定的1字节长度。用此可扩展缓冲区。

DMA模式

中断/DMA请求生成

每个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)因为串口通信是异步的,异步的意思就是说发送方占主导权。也就是说发送方随时想发就能发,但是接收方只有时刻等待才不会丢失数据。所以这个差异就导致发送方可以不用中断,而接收方不得不使用中断模式。

标签:transmitter,一帧,uart,CPU,发送,中断,寄存器,ARM
来源: https://blog.csdn.net/weixin_44705391/article/details/121052996

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有