問題描述:
I2C 控制器規(guī)范 v2.1 規(guī)定了濾除快速工作模式下 SDA 和 SCL 線路上最大間距為 50ns 的毛刺。
Zynq-7000 AP SoCs PS7 中的 I2C 控制器沒有實(shí)現(xiàn)這些毛刺的濾波電路。
SDA 或 SCL 線路上的毛刺會(huì)導(dǎo)致信號(hào)線路的瞬間錯(cuò)誤觸發(fā)。
SDA 上的毛刺會(huì)導(dǎo)致錯(cuò)誤 START 條件或錯(cuò)誤 STOP 條件的識(shí)別,從而破壞總線協(xié)議。
SCL 上的毛刺會(huì)導(dǎo)致錯(cuò)誤的數(shù)據(jù)傳輸,也會(huì)破壞總線協(xié)議。
兩種情況下,數(shù)據(jù)傳輸都會(huì)受到破壞,并且總線可以掛起。
為了避免這種情況,用戶需要實(shí)現(xiàn)一個(gè)電路從 SDA 和 SCL 線路中濾除毛刺。
解決方案
在將信號(hào)送到控制器之前,用戶需要在外部利用電路濾除 SCL 和 SDA 上的毛刺。
解決方法:
用戶可在 Zynq 的可編程邏輯部分或外部可編程器件(例如 CPLD)中采取如下解決辦法。
毛刺濾波器電路由 SDA 和 SCL 信號(hào)的亞穩(wěn)態(tài)觸發(fā)器和去除抖動(dòng)器邏輯組成。
邏輯電路在更快的時(shí)鐘域上工作,能夠采樣在 SDA 和 SCL 信號(hào)上出現(xiàn)的毛刺。
SDA 和 SCL 信號(hào)穿過一個(gè)三級(jí)同步器以消除亞穩(wěn)態(tài)。
邏輯電路需要更快速的時(shí)鐘來濾除毛刺,且時(shí)鐘頻率至少應(yīng)為 40 MHz。
不過,由于亞穩(wěn)態(tài)觸發(fā)器的存在,使用該更快頻率的時(shí)鐘源無需大量濾除毛刺。
推薦的時(shí)鐘頻率為 100 MHz。
毛刺濾除過程:
1. 檢測 SDA 或 SCL 信號(hào)上的轉(zhuǎn)變。用戶需要為 SDA 和 SCL 實(shí)現(xiàn)獨(dú)立的毛刺濾波電路。
2. 當(dāng)檢測到時(shí)鐘邊沿時(shí),加載計(jì)數(shù)器,計(jì)數(shù)值應(yīng)為需要去除抖動(dòng)的時(shí)鐘周期的數(shù)量(應(yīng)可去除SDA 和 SCL 信號(hào)的 50ns 抖動(dòng))。將計(jì)數(shù)器遞減。
3. 當(dāng)計(jì)數(shù)器遞減到 0 時(shí),在輸出線路斷言之前的總線狀態(tài)。如果信號(hào)值又發(fā)生變化,復(fù)位計(jì)數(shù)器,且不改變信號(hào)值。這樣能消除任何毛刺。
4. 在計(jì)數(shù)器遞減到 0 時(shí),如果信號(hào)沒有變化,那么在輸出信號(hào)上分配新的 SCL 和 SDA 值。
注意: SCL 和 SDA 信號(hào)都需要去除 50ns 的抖動(dòng),以便讓 SCL 和 SDA 的時(shí)序關(guān)系保持不變。
-
電路
+關(guān)注
關(guān)注
172文章
5851瀏覽量
171916 -
SDA
+關(guān)注
關(guān)注
0文章
124瀏覽量
28117 -
SCL
+關(guān)注
關(guān)注
1文章
239瀏覽量
17038
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論