最近公司乙個專案要用到codec晶元來做語音的採集和輸出,驅動是用的stm32f405的i2s介面。之前沒有深入的了解過i2s的知識,只是大概的知道它是一種用於傳輸音訊資料的匯流排。本來以為沒什麼難的,實際用下來其實也沒感覺有有什麼特別的。但是還是在使用的過程中把自己坑了一把。
codec晶元型號是max9867,主要的應用場合是手機和助聽器之類的。要實現stm32驅動的**我首先是看max9867的資料,codec晶元的資料上並沒有說知否支援i2s的飛利浦協議,只是把每一種配置的時序圖表示了出來。我配置的時序如下圖所示:
然後繼續看stm32的手冊上是否有和這個時序匹配的通訊配置,stm32支援的通訊協議有4種。
這個教訓還是比較深刻的,以後再遇到這種時序不太熟悉的協議時一定要把手冊認真的看完,要把協議的時序完全搞明白。
**
STM32的I2C特性及架構
軟體模擬協議 使用cpu直接控制通訊引腳 gpio 的電平,產生出符合通訊協議標準的邏輯。硬體實現協議 由stm32的i2c片上外設專門負責實現i2c通訊協議,只要配置好該外設,它就會自動根據協議要求產生通訊訊號,收發資料並快取起來,cpu只要檢測該外設的狀態和訪問資料暫存器,就能完成資料收發。這種...
通訊專欄 二 I2C通訊(上篇)STM32微控制器
通俗易懂,看這篇就夠了!本文使用stm32fi03rct6型號的微控制器,基於正點原子的函式庫進行總結講解 想來微控制器這塊兒除了usart串列埠通訊外,常見的便是i2c通訊了,因為i2c通訊 硬體連線簡單,可擴充套件性強,但是這種硬體連線的簡潔,是以協議的複雜來彌補的。i2c通訊是一種半雙工通訊,...
關於STM32與OpenMv通訊踩過的那些坑(2)
不好意思!因為這幾天要準備專案答辯,比較忙,所以沒能及時更新。不過,雖然這種led除錯方法讓串列埠中斷產生了異常,但它確實幫助我查出了openmv方面的錯誤!接下來我將先和大家分享我利用led除錯,檢查出openmv方面錯誤的步驟。下面展示一些內聯 片。使用正點原子串列埠實驗源 void usart...