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


I2C模式7位尋址數據接收過(guò)程時(shí)序圖
評論