国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

STM32的I2C Layout走線能走多長?

2023-03-02 00:00 作者:ecircuitlab  | 我要投稿

本文內(nèi)容的相關(guān)資料可在公眾號“ecircuitlab”后臺回復: ??

I2C仿真資料 獲取

仿真分析

回想7年前剛上大學那會,剛了解了些基礎電路設計,那時很多電路總不知怎么設計才是對的,生怕出錯板子會炸或電路不能工作,所以總在百度和各種討論群里請教別人,特別是關(guān)于Layout的事。對應Layout的話題,無論是7年前還是現(xiàn)在,無論是在技術(shù)討論群里還是百度、谷歌,總能看到很多的復制、黏貼的觀點,這些觀點現(xiàn)在去看感覺很多都略過于夸張或者說是不嚴謹,有的甚至拿經(jīng)驗來壓人,不是說經(jīng)驗不可取,只是有時經(jīng)驗靠不靠譜都難以確定。所以今天來討論一個I2C走線問題,過程是通過用ST提供的IBIS模型,從SI的角度出發(fā),做SI仿真來評估STM32的I2C信號和確定Layout走線到底能走多長。

這里我選擇了STM32F765XX-LQFP144封裝的IBIS模式來實驗,在Hyperlynx上把Layout模型電路畫好如下圖所示,U1使用STM32的PF0腳作為發(fā)送端,這個腳可以復用為SDA信號,U2使用STM32的PF0作為接收端,TL1、TL2分別為10in(25.4厘米)和1in(2.54厘米)的微帶線走線,R1為上拉電阻。

圖片

圖1. 使用STM32F765系列LQFP144封裝的IBIS模型搭建的電路

搭建好Layout電路后,打開Model Selector給U1和U2賦予對應的IBIS模型,可以看到,ST提供的STM32 IO有四種速度等級,和帶或不帶上下拉電阻幾種,如下。

圖片

圖2.?IO有4中速度等級模型,每種又分帶或不帶上下拉電阻

上圖中可以看到,IO內(nèi)置的上拉電阻比較大,實際使用中一般不用內(nèi)置電阻,都是外掛上拉電阻,所以我們先選擇最低速度SPEED0不帶上下拉的模型驗證。設置好模型后運行仿真,設置仿真條件為Oscillator模式,速率400K,IC modeling為Fast-Strong模式,模擬I2C以400K時鐘速率運行,查看接收端波形如下圖所示,可以看到波形很好,沒有什么比較嚴重的過沖啥的,沒啥問題。

圖片

圖3. 速度等級為SPEED0,Layout走線11in(29.29厘米),400K速率運行波形正常

現(xiàn)在對標我們平時的產(chǎn)品設計,有時I2C會繞板子不止28.29厘米這么長,那我們試試把長度拉大到50厘米,設置TL1為20in(長度50厘米多),然后再運行仿真得到如下圖結(jié)果。

圖片

圖3. 速度等級為SPEED0,Layout走線21in(53.34厘米),400K速率運行波形有過沖

可以看到這時對于接收端接收到的波形,過沖有點嚴重了,因為STM32的IO可以兼容5V電平,所以這里高電平的過沖還沒超過5V,我們就先不管。但是低電平時的下沖有318.7mV了。那到底要不要管呢?首先我們?nèi)シ乱?guī)格書,在規(guī)格書中找到電壓特性表如下所示??梢钥吹綄τ谳斎胂聸_信號,最小電壓值是VSS-0.3V,即所選STM32的IO能接受的下沖最大為-0.3V,不能超過-0.3V?,F(xiàn)在再看上面仿真的下沖電壓,顯然已經(jīng)越過這個值。芯片如果長時間在這樣的條件下工作,可能一段時間后,IO就損壞失效,這也是我們很多產(chǎn)品在客戶現(xiàn)場使用,一段時間后芯片的某個IO損壞的原因之一,就是Layout處理不好,有過沖、下沖超過IO極限值導致。當然,也有可能是其他原因?qū)е?,比如ESD之類的。

圖片

圖4.?STM32規(guī)格書中的IO輸入電壓極限值

那對于STM32的I2C Layout走線多長適合呢?這里我嘗試了不同長度仿真分析,總結(jié)為,對于STM32F7系列的芯片來說,IO速度等級為慢速,I2C Layout走線不建議超過45厘米。其他系列的可以參考這個信息輕微浮動,如果可以的話,盡可能使用IBIS模型仿真評估。

那是不是得到這樣的結(jié)論后我們就可以結(jié)束了呢?不,其實還有一大堆坑。上面我特別的去強調(diào)我使用的IO的速度等級是SPEED0,慢速等級。圖2中我們看到還有3種速度等級可以選用,實際中我們也可以代碼配置為另外的3種速度等級,那如果我們更改下速度等級會不會有影響呢?這里我馬上做了嘗試,保持Layout走線長度為上面結(jié)論的45厘米長,把輸出IO的速度等級換為SPEED1,運行仿真得到結(jié)果如下。從結(jié)果可以看到,速度等級升高后,上面的結(jié)論就不成立了,此時高電平的過沖仍然還在可接受范圍內(nèi),但下沖就不是那么友善了,都-905.4mV了,這樣搞,芯片不壞都天理難容。

圖片

圖5.?把IO速度等級換為SPEED1,Layout走線長度保存45厘米,仿真有嚴重過沖

從上面這個步驟來看,速度等級增加后,會使過沖變得嚴重,那這樣的話,我們就不嘗試SPEED2了,直接看SPEED3,看看最高速度等級到底會糟糕成什么樣。同樣保持Layout走線長度為45厘米不變,IO速度等級調(diào)整為SPEED3,運行仿真得到結(jié)果如下。嗯,看起來還好,沒有糟糕到可以炸板,相對SPEED1來說,高電平過沖也還在可接受范圍,下沖多了幾個mV。

圖片

圖6.?把IO速度等級換為SPEED3,Layout走線長度保存45厘米,過沖情況跟SPEED1差不多

實驗到這里我突然好奇,現(xiàn)在ST主推用CubeMX來自動生成配置代碼,用戶在使用I2C時,它的IO會默認配置為什么樣的速度等級?于是我馬上打開CubeMX做了個嘗試,很快就得到了答案,不過看完我傻眼了,默認配置為SPEED3,如下圖所示。根據(jù)上面仿真情況,我想了想,要是哪天哪位冤種用這配置代碼放在一個主控到I2C從機設備線纜比較長的產(chǎn)品中,要是出問題了,估計加班排查好久都不一定查出來。

圖片

圖7. CubeMX對于I2C的IO速度等級默認配置為SPEED3

說到上面的大冤種情形,想起2年前做的一個產(chǎn)品,產(chǎn)品也是主板上通過線纜把I2C信號拉到子板上配置子板的芯片,線纜有50厘米長。當時I2C主機總會莫名其妙的把子板芯片搞掛,最后發(fā)數(shù)據(jù)沒ACK,需要重新給子板上電后才能恢復正常,但過一會又不行,當時搞得也是頭疼。當時使用的主控是Altera的FPGA,排查無果后我倒回去重新看FPGA的規(guī)格書,在IO特性里發(fā)現(xiàn)IO的上升下降沿都比較陡,當時就覺得是遇到SI的問題了,然后就馬上調(diào)了FPGA的IBIS模型搭模型電路仿真,結(jié)果跟猜測一樣。理論、仿真分析確認問題點后,因為FPGA的IO特性就那樣,沒辦法去改變,想了想后就找了顆上升、下降沿沒那么陡的電平轉(zhuǎn)換芯片,放在FPGA IO和子板芯片IO之間做緩沖,最后問題解決。

嘮嗑完大冤種后,我們再來看看使用SPEED3時,留給Layout的走線長度裕量還有多少。經(jīng)過反復嘗試,最終定下來對于我使用的STM32F765XX-LQFP144這顆芯片,使用I2C外設,如果IO速度等級配置為SPEED3模式的話,保險Layout走線長度建議控制在0.6in(1.524厘米)內(nèi),下圖為控制長度為0.6in的仿真結(jié)果,長了就下沖厲害。

圖片

圖8.?IO速度等級為SPEED3時,控制Layout走線在0.6in時的仿真結(jié)果

驚訝吧!1.524厘米長,把這個約束給Layout工程師估計會被打死,所以對于STM32的I2C Layout要求,硬件設計時可以使用前面建議的45厘米長度約束,但必須注意要求軟件把IO速度等級配正確,不然大家都得加班查Bug。

原理講解

現(xiàn)在我們經(jīng)過一波仿真實操驗證后,知道了STM32的I2C Layout最大走線長度的參考,那究竟是什么原因?qū)е挛覀兊腖ayout走線沒法再增長呢?下面我簡單解釋下。

首先對于我們看到的Layout走線,細化去看的話,可以等效為下圖所示的電路模型,由寄生電感和寄生電容構(gòu)成。信號在上面?zhèn)鬏敃r,如果電平翻轉(zhuǎn)的上升、下降沿比較陡,那么在接收端接收到的電壓不再等于輸出端的電壓,而是V=L*di/dt。從這個公式可以看到,影響電壓V的就是寄生電感L和IO的上升、下降沿dt,所以解決V不過度變化大的方法就是要么讓L盡可能小,要么就是讓上升、下降沿增大。L變小就是走線盡可能短,IO上升、下降沿增大一般就是找電平轉(zhuǎn)換芯片來做做緩沖改善。

圖片

圖9.?Layout走線的寄生電路模型

如果對于上面的理論還是難以理解,那沒問題,我們直接來搭一個電路仿真看看也可以。參考上面電路模型我們搭一個電路和仿真如下,電路設置輸出周期15ns,50%占空比的波形,上升沿、下降沿設置為3ns,可以看到,輸出波形震蕩過沖和下沖還是比較大。

圖片

圖10. 搭建Layout走線電路模型,設置上升、下降沿為3ns仿真波形

我們再把上升、下降沿時間縮小到1ns看看,仿真結(jié)果如下,可以看到過沖、下沖更大,所以這也驗證了上面的理論解釋。

圖片

圖11. 搭建Layout走線電路模型,設置上升、下降沿為1ns仿真波形

同樣為了論證減小L帶來的改善,在上圖11的基礎上,把寄生電感縮小為0.1nH,運行仿真,從仿真結(jié)果來看,已幾乎不再有過沖、下沖,也符合我們理論解釋情況。

圖片

圖11. 搭建Layout走線電路模型,設置寄生電感為0.1nH的仿真波形

著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。

STM32的I2C Layout走線能走多長?的評論 (共 條)

分享到微博請遵守國家法律
昭平县| 凭祥市| 曲松县| 嘉鱼县| 自贡市| 河西区| 垦利县| 阿图什市| 新津县| 南平市| 浮梁县| 平和县| 武邑县| 彭水| 神木县| 松潘县| 蒙山县| 禹城市| 富锦市| 米脂县| 阿拉善左旗| 阿克苏市| 济阳县| 辽宁省| 平安县| 岑巩县| 宁津县| 建水县| 章丘市| 惠州市| 陈巴尔虎旗| 新民市| 贵溪市| 澎湖县| 红原县| 榆林市| 新竹县| 上饶市| 山丹县| 云和县| 隆昌县|