接上一篇。上一篇介绍的是I2C的写操作。
接着介绍I2C的读操作。读操作要比写操作复杂一些,因为读操作也是从写操作开始的,要写入从哪里个地址开始读。读函数也得重新封装,函数名字定义为:SensorRead1A2B(uint8_t slaveAddr, uint8_t OneAddr),1A代表的是1个字节的寄存器地址,2B代表的是2个字节的寄存器值,输入参数有两个,一个是slaveAddr,另一个是OneAddr。
测试此函数的方法同前面,下面是截图,也就是读回MT9M001的ID,
对上图进行一下说明。MT9M001的ID是寄存器0x00里的值,正确的是0x8431。上图是一个完整的ID读操作,第一步要通过0xBA写入要读取的寄存器地址0x00。 第二步写入0xBA,读回的值是0x8431,高字节0x84在前,低字节0x31在后。可以看到,ID值已经被正确读回。
AN75779配套的摄像头是MT9M114,是一款120万像素的,分辨率是720P的,分辨率是1280 X 720的。MT9M001是一款130万像素的,分辨率是1280 X 1024的。在默认情况下,两者分辨率是不同的,需要重新配置一下MT9M001,使MT9M001的输出分辨率也为1280 X 720,这样才有可能成像。
查MT9M001的数据手册,找到与窗口控制相关的寄存器如下:
上面红框中的是与窗口大小相关的。改变这两个寄存器的值,可以改变摄像头输出的窗口大小。这两个寄存器的解释如下:
寄存器0x03是设置窗口大小的,默认值是0x03FF,对应的十进制是1023(1024-1)。 我们需要输出是719(720-1),16进制是0x02CF,也就是要通过I2C写入0x03的值是0x02CF。
未完待续,,,,。
(另公布一群号178338109,CYUSB3014开发专业讨论区)
淘宝店铺:http://liangziusb.taobao.com
良子.2015年 承接USB开发工程
QQ:2687652834
用户3981863 2021-11-24 15:55