Re: 24LC16B如何連續整頁寫入?
|
||||
---|---|---|---|---|
版主
|
1、是死迴圈沒錯。所以,要自己加一個計時器,時間到了,若還等不到ack,那就跳出來吧!
2、沒回ack,表示接收端正在忙,無法接受新資料。 3、看來應該是要送出stop (或 restart)再去控制其它I2C元件,否則其它I2C元件怎麼知道輪到它了?不過,這一點我沒有測過。有勞您實驗了。
發表於: 2005/7/1 11:38
|
|||
|
Re: 24LC16B如何連續整頁寫入?
|
||||
---|---|---|---|---|
版主
|
data sheet中的Twr,並沒有區分page write及byte write。所以,也許時間是差不多長。
如果用delay的方式,建議以data sheet中所記載的maximum Twr為準來寫程式,而不是測出來的值。否則那一天,某一顆的Twr特別長,那就完了。有蠻多前人犯了這個錯誤,導致產品出問題。 最保險的作法,也是寫入時間最短的作法,就是用acknowledge polling的寫法。
發表於: 2005/6/30 23:43
|
|||
|
Re: 24LC16B如何連續整頁寫入?
|
||||
---|---|---|---|---|
資深會員
|
上次試整頁寫入模式
寫入後必須隔5ms才能執行下一次整頁寫入 我想請問一下 執行位元組寫入時 是否也是需要隔5ms才能執行下一次位元組寫入?
發表於: 2005/6/30 17:16
|
|||
|
Re: 24LC16B如何連續整頁寫入?
|
||||
---|---|---|---|---|
版主
|
有兩種方法可以確保在送出寫一頁的指令 (送出STOP)後,再寫下一頁之前的等待的時間夠長:
1、等超過data sheet中所寫的Twr,通常為幾個mS。 2、利用ACKNOWLEDGE POLLING的方式,來偵測是否可以再寫下一頁的資料。等待的時間會較短,但程式較難寫。
發表於: 2005/6/16 14:02
|
|||
|
Re: 24LC16B如何連續整頁寫入?
|
||||
---|---|---|---|---|
高級會員
|
http://ww1.microchip.com/downloads/en/DeviceDoc/21703E.pdf
Page3 15項 Write Cycle : 5ms 我的做法是..等一段時間之後,送訊號給Device Address EEPROM ,要等EEPROM回ACK才送資料,如果沒回,就再送Device Address.
發表於: 2005/6/16 13:58
|
|||
|
Re: 24LC16B如何連續整頁寫入?
|
||||
---|---|---|---|---|
高級會員
|
可以參考24LC16B的DATASHEET的4.2PAGE WRITE那一章節 , 16個BYTE之後一定要有STOP BIT , 還要等到BUS FREE TIME之後才能送新的資料(TABLE1-3) ,
發表於: 2005/6/16 13:36
|
|||
|
Re: 24LC16B如何連續整頁寫入?
|
||||
---|---|---|---|---|
資深會員
|
發表於: 2005/6/16 8:49
|
|||
|
24LC16B如何連續整頁寫入?
|
||||
---|---|---|---|---|
資深會員
|
我用18F452要寫入資料到24LC16B中
然後用河洛的ALL-11把資料讀出來驗證 由於資料數多 整頁寫入一次只有16個位元組不夠 (我至少要寫入25~30個位元組) 所以我要連續多次執行整頁寫入 第一次整頁寫入成功\r 可以連續寫入16個位元組 但要接下去寫第二頁時就無法寫入 我試過直接寫入第二頁也是可以 所以不是第二頁的程式有問題 應該是第一頁寫完後要開始寫入第二頁時出問題 第一頁寫入後送出停止位元 請問要過多久之後或是什麼條件成立後 才能繼續送出啟動位元寫入下一頁? 我有放一大段NOP去延遲 但不知是否是延遲時間不夠 下一頁的寫入還是失敗 我有去右邊找範例程式了 但都沒找到連續寫入多頁的 請問有沒有人有範例可以供參考
發表於: 2005/6/15 19:32
|
|||
|