單片機基礎原理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代表讀或者寫。我們當然是讀像素信息。

 

 

 

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