Re: MCU使用eeprom@SLAVE問題
|
||||
---|---|---|---|---|
版主
|
發表於: 2008/6/3 16:51
|
|||
|
Re: MCU使用eeprom@SLAVE問題
|
||||
---|---|---|---|---|
中級會員
|
感謝版主Ryang 提供資訊!!
小弟想了解這方面的話,可能要多下功夫了!!
發表於: 2008/6/3 11:27
|
|||
|
Re: MCU使用eeprom@SLAVE問題
|
||||
---|---|---|---|---|
版主
|
看一下這裡的 Slave 範例:
I2C Master/Slave 範例程式 - 使用 PIC18F4520 http://www.microchip.com.tw/modules/wfdownloads/viewcat.php?cid=12 I2C 有自己的 Protocal 不可以自行創造,建議你去找一下 I2C 的規格,讀完後你就會知道 I2C 的格式是有規定的,command 不能亂送。 PIC18F8722 是沒有問題的。
發表於: 2008/6/3 11:01
|
|||
|
Re: MCU使用eeprom@SLAVE問題
|
||||
---|---|---|---|---|
版主
|
參照:
MASTER傳送格式如下 我很懷疑 24LC04 可以接受這樣的格式,以一般 write 基本格式為 : Start + command(Write) + address + data + stop Read的基本格式為 : start + command(write) + address + R-start + command(read) + read slave data + nak + stop 一般而言,24LCxx 的格式做的比較寬鬆且提共多種格式。但實際用具有硬體 I2C 的 MCU 去做 Slave 時會有一些限制,尤其是讀取 Slave 的資料時就必須遵照 Random Read 的格式。
發表於: 2008/6/3 8:24
|
|||
|
Re: MCU使用eeprom@SLAVE問題
|
||||
---|---|---|---|---|
中級會員
|
補充一下:
slave端只收到 " COMMAND + ADDRESS" 0xA0 , 0x13 的部份, 後續的 "COMMAND + DATA" Read , Slave Data(0x5A) 就沒收到 看起來matser像是在等slave的ack 因master的clk一直處在low的準位
發表於: 2008/6/3 7:45
|
|||
|
MCU使用eeprom@SLAVE問題
|
||||
---|---|---|---|---|
中級會員
|
各位高手小弟在使用EEPROM時遇到一個問題
MCU 擔任SLAVE時,MASTER傳送格式如下 COMMAND + ADDRESS + COMMAND + DATA Write , 0x13 , Read , Slave Data(0x5A) 若SLAVE以實體EEPROM 24LC04B測驗則都是OK的 這表示MASTER端的程式應該沒問題,但若是把 SLAVE實體EEPROM改以MCU模擬,則以上面的通訊 就會卡在SLAVE收到ADDRESS後便無反應,也就是 說MASTER端把ADDRESS送出後CLK一直會卡在LOW 的狀態,好像是在等SLAVE端的ACK,但問題是 SLAVE端已將SSP1CON1bits.CKP 設為 1,硬體應 該會自動回應才對,但結果都無動作... 或者是說Master端都一直等不到SSPCON2bits.ACKSTAT 的信號..... 小弟也有使用站上的範例程式以及post在其它網 路上的demo code,但一樣是遇到相同的問題... (當然那些範例程式都不是使用18f8722) 這包括以POLLING或是INTERRUPT的方式都一樣, 是否18F8722不能拿來做IIC的slave ? 以下為小弟的測試平台: 硬體: MCU: 18F8722(master),18F8722(slave) EEPROM:24LC04B 工具: MPLAB IDE : Ver 7.41 Complier : Ver 2.4
發表於: 2008/6/3 7:37
|
|||
|