最近硬件測試工程師反饋一個BUG,和IIC的時序有關,這個BUG目前沒有帶來使用方面的影響,但是不符合規范,要求整改。我們使用的單片機是cortex-m3內核的芯片,美信公司生產,使用此芯片讀取電容屏的坐標數據。目前電容屏都是自帶芯片的設計,芯片檢測到觸摸后產生一個GPIO中斷,單片機接收到中斷后讀取電容屏IC的坐標數據,使用比較簡單。
由于此款單片機手冊沒有給出IIC時序圖,硬件測試工程師把IIC的通用規范作為標準進行時序測試,認為以下兩個數據指標不達標,此數據符合IIC快速模式(最高可達400kHz)標準,但是不符合標準模式(最高100kHz)標準。這兩個時間參數只限制了最小值,是為了讓速率慢的IIC設備能夠正確的接收起始和停止信號,因為速率慢的器件反應慢。
tHD_STA = 2.5us(標準是4us)
tSU_STO = 2.6us(標準是4us)
我們單片機操縱IIC接口的頻率是100kHz,測試人員認為其屬于標準模式,于是按照標準模式判定是否合格。因為此款產品是量產產品,并無市場反饋有實際問題,于是本著盡量不改動的原則和人家商討,100KHz正好是界限,也可以認為是快速模式,可以按照快速模式標準判斷,而且軟件操縱IIC并非GPIO模式方式,使用了硬件IIC接口,這兩個時間參數不可控,都是硬件行為,討論了半天,結果碰了一鼻子灰,被人家的執著打敗了。解決辦法只有一個就是提高速率,讓它滿足快速模式標準。以下是速率提高至200kHz的測量結果,滿足了要求。
tHD_STA = 1.2us
tSU_STO = 1.3us
軟件上改速率很好改,無非是100改為200,換個數字而已,但是其它工作量比較大,因為是量產產品,而且這款屏幕有替代料,速率提高了,替代料也要測量是否工作正常,而且不能驗證一臺就拉倒了。這個問題真的有必要修改嗎?個人認為完全沒有必要,如果處于研發中的產品改了就改了,量產的產品完全沒有必要,而且有未知風險,有時候是沒有辦法的事情。
解決這個問題的過程中,一直有個疑問,如果單片機的速率配置為100kHz以下,能否滿足標準速率標準呢?示波器抓了幾個速率的時間參數如下:
90kHz,不符合標準速率標準。
tHD_STA = 2.7us
tSU_STO = 2.9us
70kHz,不符合標準速率標準。
tHD_STA = 3.5us
tSU_STO = 3.7us
60kHz,符合標準速率標準。
tHD_STA = 8.3us
tSU_STO = 9.4us
從測量結果來看,這兩個時間參數是隨著速率降低不斷增大的,在70kHz-100kHz區間內,不滿足標準速率標準。所以說這款單片機的IIC接口還是有瑕疵的,如果某個標準速率的IIC器件工作在這個區間內,有可能對START和STOP信號識別錯誤,導致問題,當然出現這種情況的概率很小。就算出現了,只要降低速率就能解決。
-
單片機
+關注
關注
6032文章
44525瀏覽量
633258 -
內核
+關注
關注
3文章
1366瀏覽量
40235 -
IIC
+關注
關注
11文章
300瀏覽量
38277 -
時序
+關注
關注
5文章
386瀏覽量
37290 -
Cortex-M3
+關注
關注
9文章
269瀏覽量
59439
發布評論請先 登錄
相關推薦
評論