剛拿到這個片子的時候,就感覺又是個一個坑,果不其然的事情也隨之發(fā)生了(哈哈哈,預(yù)測準確。。。)
這款芯片的話存在一些問題,就是參考資料比較少,最大的關(guān)鍵點是廠家沒有技術(shù)支持,也沒有給出任何完整的底層驅(qū)動例程,有的只是兩個PDF,不算很全面的介紹,也只能湊合著看了(上傳不了附件。。。嗚嗚嗚。。。)。
接下來就是萬能的度娘,開始看看有沒有道友之前用過并把例程分享出來,一搜網(wǎng)上還真是有,但是大體看了看,能直接拿來用的基本沒有,我的基本構(gòu)架是應(yīng)用自己的模擬IIC進行使用的,自己用比較放心,結(jié)合眾多前輩們的經(jīng)驗,我只總結(jié)兩點。
1.一定要注意這個芯片的設(shè)備地址:廠家PDF給出的是0x50,如果你真按這個地址去查詢她,你會發(fā)現(xiàn)她根本不屌你,實際地址應(yīng)該是0xA0,你發(fā)這個這貨認識到是她了,原因是0x50是bit7~bit1這七位的定義,并不是八位,bit0:為讀寫位,也就是你真正組合起來 發(fā)送的地址是0xA0或者0xA1,看你的操作是讀還是寫了,這真是個神坑的槽點,幸虧有大神用過,不然我估計在這個點上要耗不知道多少青春。。。
2.這個大哥在讀寫時序圖上的ACK信號,一定要注意,首先廠家的PDF中給出的描述是:一筆數(shù)據(jù) (8bit +ACK) 完成后, 從機開始處理數(shù)據(jù) (從機忙碌 ), 無法接收下一筆數(shù)據(jù),此時從機將 SCL 拉低, 主機需等待 SCL 變?yōu)楦唠娖綍r才可以繼續(xù)進行數(shù)據(jù)傳送。首先這段文字我就看不懂了,從機設(shè)備能夠控制SCL總線的我是第一次見過,后來又詳細查了查IIC協(xié)議,發(fā)現(xiàn)只有主機能控制SCL總線,從機的ACK只能是拉低SDA數(shù)據(jù)線,不知道是廠家的PDF文字敘述有錯誤,還是真就是這樣,這個就BUG了。我查了相關(guān)道友做的例程分享,發(fā)現(xiàn)大家跟我一樣,等待這個哥們兒的ACK一直都不給,建議大家如果項目不緊急,還是查一下時序,看看這個ACK到底是個什么鬼,如果比較著急可以采取那個道友的方式,主機主動給從機發(fā)個ACK意思意思就完了,先能用,別跟時間和項目過不去,不然領(lǐng)導(dǎo)又要懷疑我的能力了。哎。
說了這么多,總共用了一天的時間算是調(diào)通了通訊,換了換CT電容也能有5個按鍵好用(總共六個按鍵,又一個死活沒輸出,就一天的時間還想怎么樣,我忍了),其實說這么多的槽點,不是說國產(chǎn)芯片有多差,其實國產(chǎn)芯片做的一點都不差,只是希望后續(xù)能有技術(shù)支持跟上,掃遍官網(wǎng)沒發(fā)現(xiàn),更別指望代理商了,再就是技術(shù)文檔不夠詳細,上面的槽點也希望以后能夠改進和解決。
最后祝道友們用片愉快~?。。。ǚ凑椖靠偸羌奔奔保豢钚酒f換就換降成本嘛,耗費精力研究也沒有任何意義,出問題再講,工程師的悲哀)