主題:CE中用GPIO模擬總線問題 共有40487人關注過本帖 |
---|
關山曉月 |
1樓 |
CE中用GPIO模擬總線問題 Post By:2012-3-2 8:43:00 [只看該作者]
CE中用GPIO模擬總線問題
CE是多任務系統,模擬總線時的時序應會因系統調度而造成時序錯誤 導致通訊數據,應該怎么解決呢? |
|
單帖管理 | 引用 | 回復 |
lqk |
2樓 信息 | 搜索 | 郵箱 |
加好友 發短信 |
Post By:2012-3-2 9:17:00 [只看該作者]
我的理解是,系統調度只會造成總線當前狀態的延時(或叫保持),而不會導致通訊錯誤。
比如通過GPIO模擬I2C總線,當數據線剛變高輸出一個高電平,此時系統發生調度而執行其它線程,當回到I2C的線程后,程序接著輸出一個I2C時鐘信號,當I2C從設備偵測到I2C時鐘信號后,再采樣I2C數據線上的數據仍然是高電平。整個過程雖然被其它線程打斷,但仍是一次正確有效的數據傳輸。 |
單帖管理 | 引用 | 回復 |
關山曉月 |
3樓 |
Post By:2012-3-8 17:18:00 [只看該作者]
SMBus與I2C總線之間在時序特性上存在一些差別。首先,SMBus需要一定數據保持時間,而 I2C總線則是從內部延長數據保持時間。SMBus具有超時功能,因此當SCL太低而超過35 ms時,從器件將復位正在進行的通信。相反,I2C采用硬件復位。SMBus具有一種警報響應地址(ARA),因此當從器件產生一個中斷時,它不會馬上清除中斷,而是一直保持到其收到一個由主器件發送的含有其地址的ARA為止。SMBus只工作在從10kHz到最高100KHZ。最低工作頻率10kHz是由SMBus超時功能決定的。
現在用GPIO模擬SMBus總線通訊一直不能成功,是不是和超時復位有關呢? 應該怎么解決呢? |
|
單帖管理 | 引用 | 回復 |
x10 |
4樓 |
Post By:2012-3-8 18:54:00 [只看該作者]
我認為用GPIO模擬是最簡單的方法,這么慢的速度沒有理由“一直不成功”。有沒有單獨的芯片,支持SMBus的?這樣我們也可去買來做測試,謝謝。
|
|
單帖管理 | 引用 | 回復 |
關山曉月 |
5樓 |
Post By:2012-3-8 23:24:00 [只看該作者]
10-100K速度是比較慢,問題是時鐘線有超時的限制
時鐘信號高電平時間Min 4.0us  Max 50us 時序中斷后恢復可能不能繼續 http://wenku.baidu.com/view/752b363d5727a5e9856a616c.html SMBus資料 芯片我查一下,看有沒有相關的呵。 支持SMBus的接口的電池到是很多呵。 |
|
單帖管理 | 引用 | 回復 |