為PCM1792設計I 2C介面

2022-07-10 20:30:13 字數 1700 閱讀 3303

文件識別符號:pcm1792_t-d-p12

最後修改日期:2021.10.2

前言

有沒有這樣一種可能:你是乙個音響發燒友,恰好有一塊pcm1792解碼板,就像圖0.0所示,遺憾的是這塊板子還缺少了i^2s音訊資料板和i^2c控制板。但是,你幸運地發現這塊板子上預留了i^2s和i^2c的介面,於是就想設計相應的硬體電路和程式來驅動這塊解碼板,這是本文所討論的問題。(注意:本文成功地實現了52微控制器通過i^2c介面讀寫pcm1792內部暫存器,但是pcm1792解碼板仍然無法工作)

圖0.0-pcm1792解碼板

專案位址

github(原始碼、原理圖以及資料手冊):

硬體設計

音訊資料輸入部分:用乙個現成的pcm2706音效卡輸出i^2s音訊資料給pcm1792,要達到這個目的需要將pcm2706的9號引腳接地,並且從pcm2706晶元上引出四根訊號線,分別為:bck、lrck、data、gnd,這四根訊號線就是i^2s訊號輸出線,時序如圖所示。

圖1.0-pcm2706音效卡

圖1.1-pcm2706引腳定義

圖1.2-pcm2706引腳說明

圖1.3-pcm2706輸出的i^2s訊號時序

i^2c控制板:使用52微控制器通過i^2c介面配置pcm1792內部暫存器,52微控制器通過串列埠接收命令,然後通過i^2c介面讀寫pcm1792內部暫存器,以達到配置pcm1792晶元的目的。串列埠命令格式(只有兩種命令共兩條,分別為讀暫存器命令和寫暫存器命令)如下圖所示。

圖1.4-串列埠命令格式

圖1.5- i^2c控制板原理圖

圖1.6- i^2c控制板

軟體設計

源**詳見github。主要實現了89c52微控制器通過i^2c匯流排讀寫pcm1792內部暫存器和串列埠使用者介面。實際操作起來十分簡單。

測試結果

1.成功實現了讀寫pcm1792內部暫存器。

2.但解碼板仍然不工作,可能是解碼板其它地方存在問題。

宣告

數字介面(續) I2C 匯流排

了解內部積體電路匯流排 一種基本的低成本互聯方案 的連線和格式。內建積體電路 i2c 匯流排是一種單端 多主控雙線匯流排,適合在半雙工模式下進行高效的內部積體電路通訊。該匯流排使用漏極開路技術,因此通過電阻器連線到 vdd 時就需要兩根訊號線,分別為序列資料 sda 線和序列時鐘線 scl 如圖 1...

低速通訊介面(二)I2C

i2c引腳定義 都是雙向i o線,介面電路為開漏輸出,需通過上拉電阻接電源。當匯流排空閒時,兩根線都是高電平,連到匯流排上的任一器件輸出的低電平,都將使匯流排的訊號變低。起始訊號與終止訊號 scl線為高電平期間,sda線由高電平向低電平的變化表示起始訊號 scl線為高電平期間,sda線由低電平向高電...

I2C介面訊號的處理(SCL SDA)

i2c有scl,sda這2根線,對這2個訊號的處理如下 always posedge clk or negedge rstn begin if rstn begin rg scld1 1 b1 rg scld2 1 b1 rg scld3 1 b1 rg scld4 1 b1 rg scld5 1 ...