stc12c5a60s2板子的使用學(xué)習(xí)經(jīng)歷分享
最近,做項目,用到這個芯片。由于我開始接觸硬件,所以學(xué)習(xí)緩慢。從暑假開始,到現(xiàn)在已經(jīng)將近兩個月了。
在第一段時間,主要看了7513和2810芯片它們的datasheet,很多寄存器,看的我頭大。
第二段時間,開始學(xué)習(xí)stc12c5a60s2的使用。我有個試驗箱,里面也有stc芯片,不過它是90的,而且有很多例程。我就對著歷程學(xué)習(xí)。我對語言算法的了解還是不錯的,所以大部分例程還是能很快看懂。知道了端口,寄存器的使用,SMON,PCON等各種用于串口初始化工作相關(guān)設(shè)置。寫了串口通信的上位機程序(用的是C#語言),寫了下位機,通過對上位機命令的讀取,解析和執(zhí)行。
第三階段,也就是現(xiàn)在我在做的。要通過I2C協(xié)議,實現(xiàn)對7513和2810芯片的控制。在前段時間,我也看過I2C協(xié)議。這個協(xié)議已經(jīng)有很多代碼了,拿過來用就好?;ㄙM時間較多的地方是,I2C協(xié)議有器件地址和從地址,我對從地址這概念就一直很困惑,現(xiàn)在的理解就是從器件內(nèi)部的地址。器件地址相當(dāng)于班號,從器件地址相當(dāng)于學(xué)號。
但是現(xiàn)在還沒有實現(xiàn),對7513芯片內(nèi)部一個寄存器的寫和讀(我用的從地址是0x45),讀出來的總是0,而且寫進去后,再讀還是0。用的是別人寫的有子地址器件讀寫多字節(jié)函數(shù),返回值都是1,表示函數(shù)執(zhí)行完全正確,但是不知道為什么,結(jié)果是這樣。
我猜測可能的原因如下:
(1),我的讀寫方式錯誤。
(2),選的寄存器太特殊了。
(3),寫之前要進行相關(guān)配置。
關(guān)于猜測一:
為此,我在網(wǎng)上搜了下別人關(guān)于該芯片I2C的算法,在pudn里面找到了一個人寫的例程。里面讀寫調(diào)用的函數(shù)和使用方式和我的程序是一樣的,說明我的第一條猜測是錯誤的。
PS:但是,我又發(fā)現(xiàn)了一個新的問題,它里面的I2C協(xié)議,它的scl和sda用的引腳是P2口的1管腳和0管腳。但是之前,我查文檔就發(fā)現(xiàn)應(yīng)該用的是P3口的4管腳和5管腳。我懷疑是自己錯了,還是他錯了。我把我的程序換成P2口,發(fā)現(xiàn)無應(yīng)答,只有P3口才有應(yīng)答,雖然返回值是0。我覺得應(yīng)該是他錯了。
關(guān)于猜測二:
我又試了其他寄存器,結(jié)果還是一樣的,而且查閱了相關(guān)資料證明,這個寄存器是可以讀寫的。
關(guān)于猜測三:
當(dāng)排除了以上兩種猜測之后,只能在第三條道路上前進。