利用24CXXX系列E2PRAM存儲器實(shí)現(xiàn)機(jī)器人的路徑記憶。 首先,利用PIC16F877A單片機(jī)將機(jī)器人的路徑采集轉(zhuǎn)換成數(shù)據(jù),單片機(jī)進(jìn)行處理。但是,由于單片機(jī)RAM太小不能夠存儲大量的數(shù)據(jù)。因此,這里用24CXXX系列的存儲器存儲大量的數(shù)據(jù),單片機(jī)實(shí)現(xiàn)的是對數(shù)據(jù)的采集和處理。
本文引用地址:http://m.butianyuan.cn/article/201611/321068.htm 此過程用的是PIC16F877A單片機(jī)的I2C協(xié)議。
具體I2C使用如下:
1.寫過程
(1)上電后等待一個(gè)延時(shí)(1ms)。
(2)器件尋址,給一個(gè)起始信號(SCL為高電平時(shí)SDA給一個(gè)下降沿)。發(fā)送從器件地址,高5位為10110,然后根據(jù)A1/A0(如果和器件的地址相同則那個(gè)器件會應(yīng)答)進(jìn)行讀/寫控制(O為讀)。
(3)應(yīng)答,器件在SCL的第9個(gè)周期時(shí)SDA給出一個(gè)低電平,作為應(yīng)答信號。
(4)開始寫有兩種模式:字節(jié)寫模式和頁寫模式。
·字節(jié)模式:給出A15~A8應(yīng)答,給出A7~A0應(yīng)答;然后給出DATA和停止信號 (SCL為高電平時(shí),SDA給出一個(gè)上升沿),接著要等待一個(gè)擦寫時(shí)間。
·頁寫模式:給出地址以后連續(xù)給出64個(gè)數(shù)據(jù)。如果多于64個(gè)數(shù)據(jù),則地址計(jì)數(shù)器自動翻轉(zhuǎn)。(如果少于64昵,估計(jì)是沒有問題的,但是需要實(shí)驗(yàn)驗(yàn)證。)
(5)判斷擦寫操作是否完畢的一個(gè)方法(應(yīng)答查詢),如果器件還處于擦寫狀態(tài),則不會應(yīng)答器件尋址;如果有應(yīng)答,則說明擦寫完畢。
2.讀過程
(1)上電以后等待一個(gè)延時(shí)(lms)。
(2)器件尋址。
(3)應(yīng)答。
(4)開始讀有三種模式:立即當(dāng)前地址讀、選擇/隨機(jī)讀、連續(xù)讀。
·立即當(dāng)前地址讀:如果上次讀/寫的操作地址為N,則現(xiàn)在是N+1。不需要ACK,但是需要Stop信號。
·選擇/隨機(jī)讀:先偽寫(用于給出一個(gè)地址),然后再次啟動,讀取數(shù)據(jù)。
·連續(xù)讀:讀取一個(gè)以后給一個(gè)應(yīng)答,這樣器件會再給出下一個(gè)地址的數(shù)據(jù)內(nèi)容。
(5)開始數(shù)據(jù)傳輸Start后、停止數(shù)據(jù)傳輸Stop前,SCL高電平期間,SDA上為有效數(shù)據(jù)。
最終實(shí)現(xiàn)的效果
I2C模式7位尋址數(shù)據(jù)接收過程時(shí)序圖
評論