Re: i2c wait state 時間長短
|
||||
---|---|---|---|---|
中級會員
|
板主, Jason, 多謝, 了解了
發表於: 2009/6/3 17:09
|
|||
|
Re: i2c wait state 時間長短
|
||||
---|---|---|---|---|
版主
|
I2C Slave 在接收主要是以中斷方式處理,一但收完一個 Byte 進入中斷 SCL 會被硬體拉成 Low,軟體只要將此 Byte 拿走後並在離開中斷前將 SCL 放開即可。PIC16F887 在處理I2C Slave 的時間是很短的,除非是你在中斷裡花太多的時間去處理資料,這樣的中斷處理方式就不對了。所以一般 I2C 接收中斷應只花 20 個指令週期已內先接收資料並儲存,其餘的處理就交給上層的程式。
發表於: 2009/6/3 12:00
Edited by Ryang on 2009年06月04日 12:42:30
|
|||
|
Re: i2c wait state 時間長短
|
||||
---|---|---|---|---|
中級會員
|
謝謝
我接收到一個byte後, 需要161us處理(wait state)(PIC16F887) 於I2C SPEC 2.1上, 圖示敍述的wait state是在一個byte+ACK共9個clock後的等待時間, 是沒有錯, 但我的客戶又拿SMBUS 2.0 SPEC的4.3.3來說, wait state不能太久, SPEC中真的很明確定出時間不能大於多少嗎??? 解釋看起來很模糊耶
發表於: 2009/6/3 10:45
|
|||
|
Re: i2c wait state 時間長短
|
||||
---|---|---|---|---|
資深會員
|
...the master into a wait state until the slave is ready for the next byte transfer in a type of handshake procedure.
嗯!! 是我沒看仔細看spec, 剛去查一下...果然有wait state. 因為I2C 的操作頻率為 0 - 100K (high speed 400K). 所以可以"無止境"的waitting.
發表於: 2009/5/12 15:04
|
|||
|
Re: i2c wait state 時間長短
|
||||
---|---|---|---|---|
版主
|
Slave 端如果收完一個 Byte 的資料覺得需要時間處理的話是可以直接將 SCL 拉成 Low 讓 Master 等一下再傳送下一筆的資料的。當然在一般模式下 SCL & SDA 都是由Master 來掌控的,但 Slave 要與 Master 做Handshake 時是可以用拉 SCL 的方式來控制 Master 傳送資料的速度。
發表於: 2009/5/12 14:41
|
|||
|
Re: i2c wait state 時間長短
|
||||
---|---|---|---|---|
資深會員
|
如果,沒記錯!!!
SCL是只有master才有"控制"權,slave device"不應該"控制 SCL, 所有SCL都是master送出來的!!! 除非是multi-master,不然不應該有這種問題.
發表於: 2009/5/12 14:10
|
|||
|
Re: i2c wait state 時間長短
|
||||
---|---|---|---|---|
版主
|
SCL & SDA 在架構上都屬於 Open Collector, 試問一下如果 Slave 一值將 SCL 拉成 ,Master 有何辦法將 SCL 這支腳便成High 呢! 所以SCL被拉成Low 如果拉住的人不放你有耐他何? 因為是 Open Drain 嗎!
發表於: 2009/5/12 10:17
|
|||
|
i2c wait state 時間長短
|
||||
---|---|---|---|---|
中級會員
|
大家好:
請問I2C的 "wait state" SPEC有提到可以使用, 但無規範SCL接LOW的時間長短, 是否不管接LOW多久, master都要等, 直到release SCL line呢? 煩請知道的解一下, 謝謝!!
發表於: 2009/5/12 0:02
|
|||
|