摄像头上的接口是SCCB(PCLK,XCLK)的,用uart是肯定读不出的,其实SCCB接口就是向当时I2C接口,所以现在了解一下I2C然后实践一下怎么把这个I2C的数据读出来。
I2C是两根线的,分别时SDA和SCL,开漏输出。
I2C的传输是有起点和终点的,当SDA在下降沿的时候信号开始传输,当SDA在上升沿的时候信号结束传输,期间SCL都是保持高电平。
所有的起始和终止信号都是由主机发送,这也就是为什么XCLK是摄像头的输入端,因为信号是由单片机输出后摄像头接收的。
其流程是:主控(单片机)会发送一个地址,当被控器件(摄像头)检测到主控发送的地址是自己的地址的时候会发送一个应答信号(ACK),主控收到ACK后会发送数据字节,这就考试了,当被控器件发送NACK时代表传输结束。
这就是I2C的基本概念。
其实I2C有许多细枝末节的细节,比如只有在SCL处于低电平的时候数据线才能改变;SCL发出的电平也并不是那种规整的周期波形;直接用I\O口是无法读取SCL和SDA的,只能写协议;想直接读SCL和SDA只能用逻辑分析仪之类的。
接下来了解一下SCCB的概念。
那么对于这个摄像头,我们接住P1.0和P1.1这两个I/O口接上PCLK和XCLK这两个引脚。