《朱老师物联网大讲堂》学习笔记
学习地址:www.zhulaoshi.org
上一节课,我们讲了串口通信的原理,
谈到了,当发送数据速率大于接收速率情况下,产生的AFC技术,
这节要谈论的问题也是速率问题,但是对象有所变化,
这回是CPU。
由此而诞生的技术有FIFO,DMA.
FIFO
典型的串口发送/接收缓冲区只有8位,
每次发送/接收只能处理一帧数据,
这在单片机中没有问题,但是在复杂的SOC(一般是有操作系统)中就有问题,会导致效率低下,
因为CPU需要反复不断地切换上下文,
解决方法是想办法扩展我们串口控制器的发送/接收缓冲区,比如将发送/接收缓冲区设置位64字节,
CPU一次过来就直接给缓冲区64字节的数据,
然后transmitter慢慢发,
发完再找CPU要64字节。
想的和做的总是难免有区别,
扩展这个缓冲区,但是不能直接去扩展原来的那个缓冲区,
因为那个缓冲区是不能变得,这里面涉及到原来这个里面电路的设计以及向前兼容的考虑,
所以并不适合去改变原来那个缓冲区,我们做了个变相的扩展,
在原来缓冲区外,加了个更大的缓冲区,这个说法好像有点怪,不过没关系!
总之就是FIFO。
DMA
direct memeory access,直接内存访问。
DMA技术的核心是在交换数据时候不需要CPU参与。
FIFO是一种轻量级的解决方案,DMA模式适合大量数据迸发式的发送/接收。
IrDA
其实就是红外,
在某些开发板上,是通过串口来实现红外的,
但这并不是说,你没有红外硬件就可以实现红外,
还是得需要相关硬件,只不过在软件的层面,是用串口发送数据的方式来实现的。