|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機 | DSP技術(shù) | MCU技術(shù) | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
被掛死的SDA線怎么復位回來?I2C總線 |
| 作者:yulye 欄目:單片機 |
一個I2C總線上掛了3個I2C器件,兩片LM75,1片LM80,但是有時由于電壓 低等原因會導致單片機(51)復位,復位后可能導致I2C總線掛死。 掛死的表現(xiàn)就是SDA被嵌位在低電平。 我知道要發(fā)9個以上時鐘可能會復位回來。 但是我將SDA置為高之后,發(fā)9個時鐘根本不行。 是不是每個時鐘都要將SDA置為高? |
| 2樓: | >>參與討論 |
| 作者: eleven11 于 2005/6/26 17:21:00 發(fā)布:
會不會是其它器件引起的 SCL的狀態(tài)是所有器件時鐘信號與的結(jié)果。當所有器件的時鐘信號都上跳為高電平時,低電平期結(jié)束,SCL線被釋放返回高電平,其后,第一個結(jié)束高電平期的器件又將SCL線拉成低電平。這樣就在SCL線上產(chǎn)生一個同步時鐘?梢,時鐘低電平時間由時鐘低電平期最長的器件確定,而時鐘高電平時間由時鐘高電平期最短的器件確定。 |
|
| 3樓: | >>參與討論 |
| 作者: yulye 于 2005/6/26 17:26:00 發(fā)布:
應該不會這樣吧 這個上面只有51作為主的器件,其他三個器件都是從器件,發(fā)SCL電平只有51可以發(fā)吧。 我的環(huán)境中是SDA線被拉為低,拉為低是因為ACK信號的原因。 所以要考慮將被拉低的SDA線重新恢復為高。 此處我雖然知道發(fā)9個時鐘會恢復,但我測試的結(jié)果都不可以。 |
|
| 4樓: | >>參與討論 |
| 作者: yulye 于 2005/6/27 22:43:00 發(fā)布:
各位老大,知道快點援手啊! 請盡快幫忙a |
|
| 5樓: | >>參與討論 |
| 作者: hotpower 于 2005/6/27 22:58:00 發(fā)布:
生氣了就給從機斷電 SDA被拉低應該(肯定)是從機的應答信號ACK所為... 按理來說主機控制SCL上跳后從機應該拆掉ACK信號,如果ACK確實一直為低, 故本人認為是從機犧牲了... |
|
| 6樓: | >>參與討論 |
| 作者: yulye 于 2005/6/27 23:16:00 發(fā)布:
謝謝hotpower 對,我確認整個系統(tǒng)上下電就會恢復。 給從機下電這一招我也想過,主要是要增加邏輯輸入輸出,由邏輯控制從機的電源。相當于做一個三態(tài)門。 但奈何改硬件動作太大,評審肯定通不過,并且目前發(fā)貨量也不小。 軟件到底有沒有法子? 我今天測試了發(fā)9個以上的1進去,甚至發(fā)各種各樣的時鐘進去,每次都讀 SDA線,但是都讀不到為1的值。 憔悴。 |
|
| 7樓: | >>參與討論 |
| 作者: hotpower 于 2005/6/27 23:28:00 發(fā)布:
不會是天熱主機憔悴忘了拉高SDA??? 是在讀還是在寫時死機??? 我遇到過I2C多MCU通訊SCL被拉死的問題... * - 本貼最后修改時間:2005-6-27 23:46:27 修改者:hotpower |
|
| 8樓: | >>參與討論 |
| 作者: husb2000 于 2005/6/28 0:29:00 發(fā)布:
將SDA上拉電阻改小一點 |
|
| 9樓: | >>參與討論 |
| 作者: hawkingzzl 于 2005/6/28 8:30:00 發(fā)布:
你確定是SDA數(shù)據(jù)線拉不高嗎,你可以給這個引腳一個高電平看看 |
|
| 10樓: | >>參與討論 |
| 作者: AIRWILL 于 2005/6/28 9:55:00 發(fā)布:
我覺得 hotpower 的提醒非常值得注意 因為如果從器件在沒有來得及響應時,會控制 SCL 線,如果主器件不注意一下 SCL 的電平情況,可能會出錯! 請留意一下 SCL 的波形,還有通信速率。 |
|
| 11樓: | >>參與討論 |
| 作者: xwj 于 2005/6/28 17:30:00 發(fā)布:
很多從器件也會鎖住SCL線的,比如PCF8566 因此要注意SCL的頻率不可太高,并要檢測SCL線的高電平 引用DataSheet: 6 8 時序 PCF8566 的時序構(gòu)成了器件內(nèi)部的數(shù)據(jù)流這包括顯示數(shù)據(jù)從顯示RAM 到顯示段的 輸出在級聯(lián)應用中同步信號/SYNC 將保證系統(tǒng)中PCF8566 間的正確時序關(guān)系根據(jù)時 序分配也產(chǎn)生了LCD 幀頻率表3 當使用內(nèi)部時鐘時幀頻率通過MODE SET 命令被 設置當使用外部時鐘時則通過CLK 腳管腳4 輸入來設置幀頻 表3 LCD 幀頻 PCF8566 方式幀頻正常幀頻Hz 正常運行方式fCLK / 2880 64 節(jié)電運行方式fCLK / 480 64 時鐘頻率與LCD 幀頻的比率根據(jù)器件正在進行的操作方式?jīng)Q定在節(jié)電運行方式下 時鐘頻率將減至1/6 這樣通過6 分頻可以減小時鐘頻率減小時鐘頻率可在很大程度上降 低功耗 在I2C 總線上傳送大數(shù)量的顯示數(shù)據(jù)時降低時鐘頻率所帶來的缺點就是加大響應時 間當器件不能在下一個數(shù)據(jù)到達之前消化顯示數(shù)據(jù)時SCL 線將保持低直到第一 個顯示數(shù)據(jù)字節(jié)被存儲這降低了I2C 總線的傳送速率但不會發(fā)生數(shù)據(jù)丟失 |
|
| 12樓: | >>參與討論 |
| 作者: yulye 于 2005/6/28 22:56:00 發(fā)布:
我肯定是SDA被拉低的問題 今天早上靈機一動,原來我測試有問題。 我是首先到一個時序,我覺得在這里復位會有問題,于是我就讓它復位或者 模擬復位后的情況,讓它先死掉,表現(xiàn)就是SDA被拉低。 然后我想辦法救它,結(jié)果救不回來。 后來我考慮了過程,原來,只有單片機外界因素復位的時候才會出現(xiàn)從機時序 沒有走完的情況,此種情況下在單片機復位后發(fā)9個1進去,就會拯救回來。 如果不發(fā)的話就是死翹翹。 試了一下果然如此。 遺留的問題,就是如果單片機檢測到從機已經(jīng)死翹翹了,有辦法拯救嗎? 我試了各種方法,沒有招。 您有嗎? |
|
| 13樓: | >>參與討論 |
| 作者: hotpower 于 2005/7/7 0:32:00 發(fā)布:
主機降速試試 從機一般會拉低SCL調(diào)節(jié)與主機的同步處理,主機如果是用軟件模擬I2C時序時 一定要嚴格按I2C時序步步進行檢測,如果從機拉低SCL時,主機還"發(fā)送"SCL時鐘 肯定不對.尤其在主機高速時要特別注意. 所以可以先降低主機速率試試... |
|
| 14樓: | >>參與討論 |
| 作者: xuhuadong 于 2005/7/7 9:35:00 發(fā)布:
應該是主機發(fā)送scl不夠個數(shù) 從機等待scl時會把數(shù)據(jù)位不變,, 辦法有:先發(fā)1個scl脈沖,查一下應答否,如果無,發(fā)2個scl脈沖,查一下應答否,如果無,發(fā)3個scl脈沖,查一下應答否,如果無,發(fā)4個scl脈沖,查一下應答否,直到9個脈沖從機復位, 還有就是從器件加電源控制,我用24C04時也遇到過這種問題,加了一個電源開關(guān)就解決了。 |
|
| 15樓: | >>參與討論 |
| 作者: lishuanghua 于 2005/7/7 11:36:00 發(fā)布:
多發(fā)幾個時鐘直到SDA恢復為止 |
|
| 16樓: | >>參與討論 |
| 作者: qjy_dali 于 2005/7/7 21:12:00 發(fā)布:
FM24CL64也是這樣的爛貨 |
|
| 17樓: | >>參與討論 |
| 作者: hotpower 于 2005/7/7 21:18:00 發(fā)布:
正在用FM24C64,請樓上網(wǎng)友說些經(jīng)驗 謝謝!!! 這樣我以后能注意些...現(xiàn)在還沒發(fā)現(xiàn)什么,怕以后... |
|
| 18樓: | >>參與討論 |
| 作者: hunter01 于 2005/7/8 9:43:00 發(fā)布:
我遇到過,停止所有器件。 * - 本貼最后修改時間:2005-7-8 9:52:23 修改者:hunter01 |
|
| 19樓: | >>參與討論 |
| 作者: Psp 于 2008/12/15 14:21:18 發(fā)布:
我也碰到這樣的情況,解決辦法是:發(fā)送 S111111111SP系列bit,然后重新初始化CPU I2C口。關(guān)于I2C的WP,我想請教一下:WP為高(禁止寫),然后發(fā)送寫字節(jié)系列,240C4等器件,會有ACK等正常應答信號嗎?(我測試了一下,有正常的應答信號,但數(shù)據(jù)是沒有寫進去的。,各位兄弟測試過嗎? |
|
| 20樓: | >>參與討論 |
| 作者: allpretty 于 2010/3/18 15:46:02 發(fā)布:
是需要九個時鐘,而且每個時鐘循環(huán)后,要檢測當時鐘為高電平時,數(shù)據(jù)端口是否升為高電平,當它為高電平時設備才能消除掛死的情況 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |