UART的学习记录

文章目录时钟的设置I/OMAP开始写程序 移植别人的实现在里面显示打印信息 总结
其实学这章的时候到我学完了,感觉还是没什么章法的样子,摸不着一条清晰的脉络 。
所以一步步从头开始自己整理回顾吧 。开发板的UART的block
从上图可以提取到比较关键的信息是:
1.从 bus外部总线连接的
2. Unit 应该有相关配置的寄存器
3.Buad rate跟时钟源有关
4.里面有 和
5.里面包括 和
6.别漏了最终的TXD和RXD
DATA
能获取的信息
数据帧是可被设计的包括:
1.一个起始位
2.五到8位数据位
3.可选的奇偶校验位
4.一到两位停止位
5.这些都是被寄存器所制定的
DATA
数据接收跟数据传输类似,最后讲了接收器会侦测各种错误并且标出一个flag出来让你辨识 。
RS-232
红色框框是自己网上查再补充的 。
各种工作模式
紧接着讲到了
AFC模式
引用课程笔记
1.7.4.2、自动流控(AFC:Auto flow )
(1)为什么需要流控?流控的目的是让串口通信非常可靠,在发送方速率比接收方快的时候流控可以保证发送和接收不会漏掉东西 。
(2)现在为什么不用流控?现在计算机之间有更好更高级(usb、)的通讯方式,串口已经基本被废弃了 。现在串口的用途更多是SoC用来输出调试信息的 。由于调试信息不是关键性信息、而且由于硬件发展串口本身速度已经相对慢的要死了,所以硬件都能协调发送和接收速率,因此流控已经失去意义了,所以现在基本都废弃了 。
然后是
DMA模式
1.7.5.2、DMA模式及其作用
(1)DMA,直接内存访问 。DMA本来是DSP中的一种技术,DMA技术的核心就是在交换数据时不需要CPU参与,模块可以自己完成 。
(2)DMA模式要解决的问题和上面FIFO模式是同一个问题,就是串口发送/接收要频繁的折腾CPU造成CPU反复切换上下文导致系统效率低下 。
(3)传统的串口工作方式(无FIFO无DMA)效率是最低的,适合低端单片机;高端单片机上CPU事物繁忙所以都需要串口能够自己完成大量数据发送/接收 。这时候就需要FIFO或者DMA模式 。FIFO模式是一种轻量级的解决方案,DMA模式适合大量数据迸发式的发送/接收时 。
FIFO模式
1.7.5.1、FIFO模式及其作用
(1)典型的串口设计,发送/接收缓冲区只有1字节,每次发送/接收只能处理1帧数据 。这样在单片机中没什么问题,但是到复杂SoC中(一般有操作系统的)就会有问题,会导致效率低下,因为CPU需要不断切换上下文 。
(2)解决方案就是想办法扩展串口控制器的发送/接收缓冲区,譬如将发送/接收缓冲器设置为64字节,CPU一次过来直接给发送缓冲区64字节的待发送数据,然后慢慢发,发完再找CPU再要64字节 。但是串口控制器本来的发送/接收缓冲区是固定的1字节长度的,所以做了个变相的扩展,就是FIFO 。
(3)FIFO就是first in first out,先进先出 。fifo其实是一种数据结构,这里这个大的缓冲区叫FIFO是因为这个缓冲区的工作方式类似于FIFO这种数据结构 。
IrDA模式
1.7.5.3、IrDA模式及其用法 (1)IrDA其实就是红外,红外就是红外线通信(电视机、空调遥控器就是红外通信的) 。(2)红外通信的原理是发送方固定间隔时间向接收方发送红外信号(表示1或0)或者不发送红外信号(表示0或者1),接收方每隔固定时间去判断有无红外线信号来接收1和0.

UART的学习记录

文章插图
(3)分析可知,红外通信和串口通信非常像,都是每隔固定时间发送1或者0(判断1或0的物理方式不同)给接收方来通信 。因此210就利用串口通信来实现了红外发送和接收 。