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
|
|||
|
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問題
|
||||
---|---|---|---|---|
中級會員
|
感謝高手的回應
小弟的表達有點缺陷,主要是start及stop信號由硬體做 故省略了,master在送command及data時在示波器上 頭、尾確實都有這信號,只是小弟以程式撰寫者的角度認為 MASTER傳送格式 COMMAND + ADDRESS + COMMAND + DATA Write , 0x13 , Read , Slave Data(0x5A) 是指程式撰寫者要把write/Read及Address/Data 填值,故主觀意思認為.... BTW: 小弟搞了半天,認為8722的iic擔任slave應該有問題 因為如果我把Slave接收在matser送Read的格式為 : start + command(write) + address + "Q" R-start + command(read) + read slave data + nak + stop 在"Q"點的時序強制使用IO去回應給MATSER,這樣卻可以 讓MATSRT把後面的COMMAND:R-start + command(read) + read slave data + nak + stop完整的送出 但後面的COMMAND "command(read)"在SLAVE上接到的卻 是"command(write)" ps:而且SLAVE 的 (SSP1BUF = 0xA5;) 無法送到matser
發表於: 2008/6/3 9:11
|
|||
|
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問題
|
||||
---|---|---|---|---|
中級會員
|
感謝版主Ryang 提供資訊!!
小弟想了解這方面的話,可能要多下功夫了!!
發表於: 2008/6/3 11:27
|
|||
|
Re: MCU使用eeprom@SLAVE問題
|
||||
---|---|---|---|---|
版主
|
發表於: 2008/6/3 16:51
|
|||
|