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