6 - 输入/输出:DMA

DMA, Direct Memory Access. 设定后,无需CPU干预即可将外设数据读到RAM中去。
摄像头组需要不断读取图像到内存,DMA可以分担图像读取的操作,大大减少了CPU的负担,于是我们可以有更多资源处理其他事情。
DMA另一个好处是可以跟着摄像头的PCLK读取数据,图像不会有噪点。
坏消息是,XS128不带DMA功能,呵呵。

通过DMA读取图像的方法:
1. 初始化摄像头管脚输入方向,初始化DMA;
2. 场中断到来,允许行中断;
3. 行中断到来,开启DMA,让DMA读取一行的数据;
4. 关闭DMA,等待下一次行中断。

继续阅读“6 - 输入/输出:DMA”

5 - 输入/输出:I2C

I2C是一种串行通信总线,维基百科有比较详细的介绍 http://zh.wikipedia.org/zh-cn/I%C2%B2C

它需要SDA和SCL两个接口来进行与外部硬件的通信。
我们用到的数字加速度计用的就I2C通信的,用I2C的好处是,它只占用2个管脚就可以读14bit精度的数据,且外部的电路自带了各种滤波,而AD转换要读取8bit就用掉8个管脚。
对I2C的工作方式,我的理解是,要用I2C读取外部硬件(比如数字加速度计),首先要向外部硬件发送“请求”,把要读取的寄存器地址请求过去,然后能得到相应的数据反馈。