DB |
Camera ASIC |
Camera sensor |
Serial/Parallel |
LCD |
Serial/Parallel |
I 2C & Parallel |
由于DB不直接与LCD和Camera sensor相连, 不能直接操作。 通常是对Camera ASIC操作。
Camera ASic 与camera sensor的连接
I 2C : SCL, SDA, 用于控制/读/写camera sensor命令
Data[0..7] 双向数据
HSYNC/VSYNC/PCLK同步信号(sensor->camera asic)
开发步骤:
1. 设置LCD bypass模式通常有两种方式, 一种是有单独的CS,如通过操作GPIO CS。这样得话,就先设置bypass模式,调试LCD。
通常可以简单认为Camera Asic不存在(实际上通过了camera asic)。
2. 还有一种就是要通过写Camera Asic寄存器。这样得话,需要先调试Read/Write register (Camera ASIC)
如果是Serial方式,先配置好Serial方式(baudrate, clock, MSB/LSB, 8bit/16bit, Master/Slave, FIFO, enable/disable interrupt)
如果是Parallel方式, 则比较简单。
通常有一个chip ID,如果read register, 读出正确即可
然后Write register, 写完后,再读出看看结果是否一致
3. 通过Camera Asic来Read/Write LCD register
4. 通过camera asic 来Read/Write camera register(I 2C )
这个实际上还是通过Serial/Parallel来写camera asic的寄存器
注意Read/Write结束后,要读I 2C status。
5. Reset & Init camera asic
Reset通常用GPIO来操作,也有SoftReset(通过写camera asic寄存器)
Init 则需要设置Power, Clock, Viewfinder default格式, Overlay大小…
通常在Init中会读出chip ID
6. Power save (enable/disable) camera asic
在这个Sequence中通常设置Clock, Standby, bypass
7. Init camera
设置Power, Clock, I 2C clock, 读出camera ID
8. Viewfinder
Reset & Init camera asic
Disable power save
LCD display position/size
Overlay position/size
Camera sensor init
Property setting(white balance,…)
Viewfinder sequence
9. Overlay in viewfinder
Disable bypass模式
需要对camera asic寄存器操作来update LCD
10. Stop viewfinder
Stop viewfinder sequence (Switch to LCD bypass)
Stop Camera sensor power/clock
Enable power save of camera asic
11. Snapshot
Stop viewfinder procedure
Jpeg encode(encode sequence, output image size, set interrupt if needed)
Wait encode finished
Read jpeg size/data
Notify high level SW to store it to FS