精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

對于STM32的I2C Layout走線多長合適呢?

冬至子 ? 來源:ecircuitlab ? 作者:ecircuitlab ? 2023-09-27 15:31 ? 次閱讀

今天來討論一個I2C走線問題,過程是通過用ST提供的IBIS模型,從SI的角度出發,做SI仿真來評估STM32的I2C信號和確定Layout走線到底能走多長。

這里我選擇了STM32F765XX-LQFP144封裝的IBIS模式來實驗,在Hyperlynx上把Layout模型電路畫好如下圖所示,U1使用STM32的PF0腳作為發送端,這個腳可以復用為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內置的上拉電阻比較大,實際使用中一般不用內置電阻,都是外掛上拉電阻,所以我們 先選擇最低速度SPEED0不帶上下拉的模型驗證

設置好模型后運行仿真,設置仿真條件為Oscillator模式,速率400K,IC modeling為Fast-Strong模式,模擬I2C以400K時鐘速率運行,查看接收端波形如下圖所示,可以看到波形很好,沒有什么比較嚴重的過沖啥的,沒啥問題。

圖片

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

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

圖片

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

可以看到這時對于接收端接收到的波形,過沖有點嚴重了,因為STM32的IO可以兼容5V電平,所以這里高電平的過沖還沒超過5V,我們就先不管。但是低電平時的下沖有318.7mV了。那到底要不要管呢?首先我們去翻下規格書,在規格書中找到電壓特性表如下所示。

可以看到對于輸入下沖信號,最小電壓值是VSS-0.3V,即所選STM32的IO能接受的下沖最大為-0.3V,不能超過-0.3V。現在再看上面仿真的下沖電壓,顯然已經越過這個值。

芯片如果長時間在這樣的條件下工作,可能一段時間后,IO就損壞失效,這也是我們很多產品在客戶現場使用,一段時間后芯片的某個IO損壞的原因之一,就是Layout處理不好,有過沖、下沖超過IO極限值導致。當然,也有可能是其他原因導致,比如ESD之類的。

圖片

圖4. STM32規格書中的IO輸入電壓極限值

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

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

圖片

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

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

圖片

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

實驗到這里我突然好奇,現在ST主推用CubeMX來自動生成配置代碼,用戶在使用I2C時,它的IO會默認配置為什么樣的速度等級?于是我馬上打開CubeMX做了個嘗試,很快就得到了答案,不過看完我傻眼了,默認配置為SPEED3,如下圖所示。

根據上面仿真情況,我想了想,要是哪天哪位冤種用這配置代碼放在一個主控到I2C從機設備線纜比較長的產品中,要是出問題了,估計加班排查好久都不一定查出來。

圖片

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

說到上面的大冤種情形,想起2年前做的一個產品,產品也是主板上通過線纜把I2C信號拉到子板上配置子板的芯片,線纜有50厘米長。當時I2C主機總會莫名其妙的把子板芯片搞掛,最后發數據沒ACK,需要重新給子板上電后才能恢復正常,但過一會又不行,當時搞得也是頭疼。當時使用的主控是AlteraFPGA,排查無果后我倒回去重新看FPGA的規格書,在IO特性里發現IO的上升下降沿都比較陡,當時就覺得是遇到SI的問題了,然后就馬上調了FPGA的IBIS模型搭模型電路仿真,結果跟猜測一樣。

理論、仿真分析確認問題點后,因為FPGA的IO特性就那樣,沒辦法去改變,想了想后就找了顆上升、下降沿沒那么陡的電平轉換芯片,放在FPGA IO和子板芯片IO之間做緩沖,最后問題解決。

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

圖片

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

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

原理講解

現在我們經過一波仿真實操驗證后,知道了STM32的I2C Layout最大走線長度的參考,那究竟是什么原因導致我們的Layout走線沒法再增長呢?下面我簡單解釋下。

首先對于我們看到的Layout走線,細化去看的話,可以等效為下圖所示的電路模型,由寄生電感和寄生電容構成。信號在上面傳輸時,如果電平翻轉的上升、下降沿比較陡,那么在接收端接收到的電壓不再等于輸出端的電壓,而是V=L*di/dt。

從這個公式可以看到,影響電壓V的就是寄生電感L和IO的上升、下降沿dt,所以解決V不過度變化大的方法就是要么讓L盡可能小,要么就是讓上升、下降沿增大。L變小就是走線盡可能短,IO上升、下降沿增大一般就是找電平轉換芯片來做做緩沖改善。

圖片

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

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

圖片

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

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

圖片

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

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

圖片

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2266

    文章

    10871

    瀏覽量

    354806
  • I2C總線
    +關注

    關注

    8

    文章

    388

    瀏覽量

    60828
  • 寄生電感
    +關注

    關注

    1

    文章

    155

    瀏覽量

    14586
  • FPGA芯片
    +關注

    關注

    3

    文章

    246

    瀏覽量

    39780
  • LQFP封裝
    +關注

    關注

    0

    文章

    10

    瀏覽量

    7387
收藏 人收藏

    評論

    相關推薦

    i2c總線ppt(I2C總線器件應用)

    I2C總線器件應用第一節 I2C總線器件應用概述I2C總線工作原理I2C總線系統結構I2C總線系統結構如圖7-1所示。其中,SCL是時鐘
    發表于 08-13 17:34 ?0次下載

    STM32硬件I2C例程

    STM32硬件I2C例程,感興趣的小伙伴們可以看看。
    發表于 07-26 10:26 ?93次下載

    STM32F2—通信接口I2C

    STM32F2—通信接口I2C
    發表于 09-03 11:24 ?31次下載
    <b class='flag-5'>STM32F2</b>—通信接口<b class='flag-5'>I2C</b>

    I2C LCD 器件通過驅動帶有 I2C 接口的 2 式 16 字符 LCD

    I2C LCD 器件通過驅動帶有 I2C 接口的 2 式 16 字符 LCD
    發表于 10-10 08:22 ?13次下載
    <b class='flag-5'>I2C</b> LCD 器件通過驅動帶有 <b class='flag-5'>I2C</b> 接口的 <b class='flag-5'>2</b> <b class='flag-5'>線</b>式 16 字符 LCD

    詳細說明了I2C庫文件的使用,對于理解I2C有幫助

    詳細說明了I2C庫文件的使用,對于理解I2C有幫助
    發表于 10-13 10:02 ?28次下載

    STM32 I2C硬件的結構

    我們可以看見STM32的硬件I2C有兩個和數據有關的寄存器“數據寄存器(Data register)”(DR)和“數據移位寄存器(Data shift register)”(DSR),我們的軟件寫入的是DR, DSR用于I2C
    的頭像 發表于 04-30 15:00 ?7222次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>I2C</b>硬件的結構

    STM32學習之I2C協議(讀寫EEPROM)

    關于STM32學習分享第七章 I2C協議(讀寫EEPROM)文章目錄關于STM32學習分享前言二、代碼1.i2c.c2.i2c.h3.main.c總結前言開始!開始!單片機的
    發表于 11-30 15:21 ?32次下載
    <b class='flag-5'>STM32</b>學習之<b class='flag-5'>I2C</b>協議(讀寫EEPROM)

    STM32的硬件I2C有BUG嗎?

    坊間一直流傳著一個傳說~STM32的硬件I2C設計有BUG,最好不要用,用軟件I2C比較靠譜。長久以來,為了不必要的麻煩,我也一直沒有用過硬件I2C,主要是軟件
    發表于 12-04 14:51 ?13次下載
    <b class='flag-5'>STM32</b>的硬件<b class='flag-5'>I2C</b>有BUG嗎?

    I2C接口配置ES7243錄音芯片,MCU(STM32)收不到I2C ACK的問題

    I2C接口配置ES7243錄音芯片,MCU(STM32)收不到I2C ACK的問題
    發表于 12-08 16:36 ?10次下載
    <b class='flag-5'>I2C</b>接口配置ES7243錄音芯片,MCU(<b class='flag-5'>STM32</b>)收不到<b class='flag-5'>I2C</b> ACK的問題

    STM32F103硬件I2C Slave

    MCU:STM32F103IDE:STM32CubeIDEHAL庫硬件I2C當作Slave,模擬EEPROM行為測試工具:樹莓派為I2C主機,使用I
    發表于 12-20 19:38 ?52次下載
    <b class='flag-5'>STM32</b>F103硬件<b class='flag-5'>I2C</b> Slave

    STM32 I2C存取實驗資料

    STM32 I2C存取實驗資料
    發表于 12-30 10:36 ?16次下載

    硬件I2C與模擬I2C

    配置;而軟件I2C是沒有寄存器這個概念的。 軟件I2C一般是使用GPIO管腳,用軟件控制SCL,SDA輸出高低電平,模擬i2c協議的時序。例如下面這段
    發表于 12-28 19:14 ?81次下載
    硬件<b class='flag-5'>I2C</b>與模擬<b class='flag-5'>I2C</b>

    STM32F 單片機硬件I2C Busy標志導致的I2C卡死的處理辦法

    STM32F 單片機硬件I2C Busy標志導致的I2C卡死的處理辦法在調試多用戶表的時候,發現如果人為短接I2C的SDA或SLK腳后,I2C
    發表于 12-28 19:24 ?24次下載
    <b class='flag-5'>STM32</b>F 單片機硬件<b class='flag-5'>I2C</b> Busy標志導致的<b class='flag-5'>I2C</b>卡死的處理辦法

    I2C上拉電阻如何選擇合適的阻值?

    I2C總線是微電子通信控制領域中常用的一種總線標準,具備接線少,控制簡單,速率高等優點。在I2C電路中常見的上拉電阻有1k、1.5k、2.2k、4.7k、5.1k、10k等等,但是應該如何根據開發要求選擇合適的阻值
    的頭像 發表于 05-10 16:17 ?6574次閱讀
    <b class='flag-5'>I2C</b>上拉電阻如何選擇<b class='flag-5'>合適</b>的阻值?

    i2c采樣是上升沿嗎?

    i2c采樣是上升沿嗎?? I2C采樣是指在I2C總線上對數據進行采樣。在I2C總線上,數據的傳輸是通過2
    的頭像 發表于 09-19 17:16 ?2556次閱讀