設計方案交流 首頁 / 論壇 / 自由討論 / 設計方案交流
正在爲尋找合適的設計方案急得團團轉?有好的設計方案卻苦於不被人知?設計方案交流專區致力於滿足電子設計方案交流的需求,藉由更多的溝通與方案搜尋,幫助工程師以更快速度完成產品的開發。
發表新主題  收藏 列印
問題: Micro使用 I2C 如何讀寫 EEPROM ? 發表時間: 2008/4/1 下午 3:06
 

提問者: Edmundtech

等級: 鐘點工讀生

積分: 5 分

發送消息

查看用戶的所有發言

Micro使用 I2C 如何讀寫 EEPROM ?   請教專家先進
謝謝    !
引用本留言 回覆主題 關注  推薦  鮮花 (
0
)
臭雞蛋 (
0
)
第 1 樓 回覆主題:Micro使用 I2C 如何讀寫 EEPROM ? 發表時間: 2008/4/4 上午 11:33
 

提問者: PONPON

等級: 鐘點工讀生

積分: 4 分

發送消息

查看用戶的所有發言

問題敍述有點簡略,不知該如何回答! 若是指Mircocontroller去讀寫EEPROM則只要了解兩方 DATASHEET?媢顅2C的控制時序再加以控制即可。 若使用PC透過I2C讀寫EEPROM通常還是需要一個外部Mircocontroller 當做介面,此時還需要了解PC對Mircocontroller的控制方式。 以上只是概念,若要SOURCE CODE在網路上找找可能會有。
引用本留言 回覆主題
鮮花 (
0
)
臭雞蛋 (
0
)
第 2 樓 回覆主題:Micro使用 I2C 如何讀寫 EEPROM ? 發表時間: 2008/4/4 下午 2:55
 

提問者: milochen

等級: 鐘點工讀生

積分: 110 分

發送消息

查看用戶的所有發言

請問一下你的Micro是指什麼東西?
引用本留言 回覆主題
鮮花 (
0
)
臭雞蛋 (
0
)
第 3 樓 Micro使用 I2C 如何讀寫 EEPROM ? 發表時間: 2008/4/6 上午 3:46
 

提問者: Jackeer

等級: 鐘點工讀生

積分: 18 分

發送消息

查看用戶的所有發言

你是說巨集嗎?!
如果是的話寫法一樣
我用一般 gpio 的定義和語法大概說明
使用 P^1 P^2
#define setSCL P^2 = 1;
#define clrSCL P^2 = 0;
#define setSDA P^1 = 1;
#define clrSDA P^1 = ;
然後在程式中要控制 io 拉 hi 或是拉 lo 就這樣
void start(viod)
{
 clrSDA,clrSCL;
}
或是你想把一連串動作都寫在一起
BOOL setDATA(BYTE *DATA)
{
count = sizeof(DATA);
setSCL,setSDA,_NOP_,clrSDA,clrSCL;
while( count ==0 )
 {
  P^1 = DATA[count].0,setSCL,_NOP_,clrSCL
  P^1 = DATA[count].1,setSCL,_NOP_,clrSCL
 ....(以此類推)...
 setSCL,while(!ACK){ACK = P^1}, count --;   //  這段不要照抄,我懶得打判斷 ack 的方法•
 }
}
}
Jackeer 編輯於 2008/4/6 上午 3:49
引用本留言 回覆主題
鮮花 (
0
)
臭雞蛋 (
0
)
第 4 樓 回覆主題:Micro使用 I2C 如何讀寫 EEPROM ? 發表時間: 2008/4/8 上午 0:05
 

提問者: RobertLin

等級: 鐘點工讀生

積分: 159 分

發送消息

查看用戶的所有發言

題目問的莫名其妙... 應該是先study一下怎麼寫code比較重要, 不要好高騖遠, 一下就要寫稍微複雜的程式
引用本留言 回覆主題
鮮花 (
0
)
臭雞蛋 (
0
)
第 5 樓 Micro使用 I2C 如何讀寫 EEPROM ? 發表時間: 2008/4/8 下午 10:53
 

提問者: Jackeer

等級: 鐘點工讀生

積分: 18 分

發送消息

查看用戶的所有發言

如果你是指要應用的話那就是這樣,一般的 function 都會寫成下面這種方式
EXTERN BOOL I2CEEPRON_WRITE(BYTE DEVID,BYTE ADDRESS,BYTE *DATA,BYTE LAN);
EXTERN BOOL I2CEEPRON_READ(BYTE DEVID,BYTE ADDRESS,BYTE *DATA,BYTE LAN);
DEVID 這是填入 EEPRON 的裝置號碼比如 A0 或是 C0
DEVID 的末碼決定寫或是讀,一般會放到 FUNCTION 中寫成
DEVID &= 0XFE; 或是 DEVID |= 0X01; 這就可以區別寫或是讀了•
然後是 ADDRESS 的部分指定一個要放的位置比如 0X01 或是 0X00
如果超過 256 筆就是將 ADDRESS / 256 後把餘數放到 ADDRESS 把商
加 DEVIDE 這樣 DEVIDE = DEVIDE | (ADDRESS MOD 256 );
這樣就可以寫超過 256 筆資料不用分頁•
然後就是要放的 DATA 資料要放什麼東西:LEN 就是幾筆資料•
然後在應用的部分•
EX:
1. 要在 A0 裝置的 0X16 位置放入 0XAA 資料:
WHILE(!ACK)

ACK = I2CEEPRON_WRITE(A0,0X16,0XAA,1);
}
2. 要讀會 A0 裝置的 0X16 位置資料:
WHILE(!ACK)

ACK = I2CEEPRON_READ(A0,0X16,DATA,1);
}
就是這樣,記得我畢業第一年時,當時主管也是問我會不會寫 I2C
也是用 EEPRON ,當初我也是花了兩個禮拜左右上網找,
年輕人不用擔心挫折,當一切都 OVER 後就會發現一切都豁然開朗,
這種通訊的指令都很好寫,會了就通了,以後學新的技術就越來越容易,
最主要是不用怕問,但是問題也要問清楚,
問到學到就是你的了,加油~!!
引用本留言 回覆主題
鮮花 (
0
)
臭雞蛋 (
0
)
第 6 樓 回覆主題:Micro使用 I2C 如何讀寫 EEPROM ? 發表時間: 2008/4/10 下午 5:55
 

提問者: 潛水艇

等級: 研發部副總

積分: 3418 分

發送消息

查看用戶的所有發言

I2C 的傳輸方式,上網看一下。 其他就是對輸出腳位 (GPIO)的HI/LOW 控制 其實沒有想像中的難,觀念清楚了。 也不就是這樣
引用本留言 回覆主題
鮮花 (
0
)
臭雞蛋 (
0
)
發表新主題

維護專業、整潔的論壇環境需要您的參與,請及時舉報違規留言,如果舉報屬實,我們將給予相應的積分獎勵。
謝謝您的熱心參與!
返回設計方案交流 | 返回自由討論
本論壇僅陳述專家或個人觀點,並不代表電子工程專輯網站立場。
返回論壇首頁