单片机基础原理2----接口

摄像头上的接口是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这两个引脚。

我们需要编写一个代码,目的是让数据开始传输。

整个过程分成三部:

一、告诉总线,现在开始传输I2C数据

二、告诉控线,现在开始输出数据

三、告诉总线,现在开始接受数据

 

 

具体实现:

一、我们先给XCLK高电平,PCLK一个高电平,随后给PCLK一个低电平,这就制造了一个下降沿,发出开始信号。

 

二、摄像头接收到开始信号以后,应该给出一个ACK信号作传输指令。这个信号是8位的,前七位是数据,最后一位是0、1代表读或者写。我们当然是读像素信息。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章