0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

3天內(nèi)不再提示

提高SPI時鐘時通信異常的案例分享

茶話MCU ? 來源:ST MCU 信息交流 ? 2020-07-13 11:41 ? 次閱讀

有人采用STM32H743ZI芯片的SPI外設(shè)跟ADC器件通信,發(fā)現(xiàn)一旦SPI的SCK時鐘超過25MHz時,比如50Mhz,就會發(fā)生讀取數(shù)據(jù)失敗,并提示Busy忙信息或ERR錯誤信息。反正只要串行時鐘不超過25Mhz,收發(fā)都很正常。

但是STM32H743芯片手冊上明白地說了SPI時鐘最高可達150MHz,這會是什么原因呢?

根據(jù)他所提到的異?,F(xiàn)象初步判斷,不論他的硬件方面還是軟件配置方面都應(yīng)該沒有很大的問題,不然根本沒法通信。像這種情況有可能是下面幾種原因之一或組合原因【當(dāng)然不僅限于這些】:

第一種情況就是通信速率明顯提高時,由于通信速率加快,而接收處理的相關(guān)代碼本身所用時間相對固定,這樣可能導(dǎo)致不能及時讀走數(shù)據(jù)而發(fā)生溢出,尤其是基于查詢方式或中斷方式接收處理時。這時我們可以考慮對接收代碼做進一步的精簡優(yōu)化,壓縮接收處理時間,或者改用DMA方式進行數(shù)據(jù)的收發(fā)。

第二種情況就是當(dāng)通信速率明顯提高時,跟外設(shè)復(fù)用的GPIO輸出速率檔位的配置沒有跟上來。以本案例來說,當(dāng)我們將SPI的時鐘上到50MHz甚至更高時,若相應(yīng)的GPIO的輸出速率配置還維持在相對低速水平,與實際輸出需求不相匹配時往往就會出現(xiàn)異常。

關(guān)于這個配置,如果使用STM32CubeMx配置的話就非常簡單,通過菜單選擇即可完成。如下圖所示:

第三種情況就是當(dāng)通信速率明顯提高時,即使相應(yīng)的GPIO輸出能力配置也匹配了,但有些情況下還是有可能出通信異常的問題。我們知道,當(dāng)GPIO輸出速率越來越高的時候,GPIO模塊帶來的噪聲也越大,作為通信口時其信號質(zhì)量也會隨著通信速率的提升而變差,當(dāng)然,此時芯片所需的功耗也隨之增大。對于很多STM32系列芯片,當(dāng)GPIO輸出速率達到一定程度時,建議開啟片內(nèi)GPIO補償單元?!鞠旅娼貓D是兩個STM32系列關(guān)于GPIO補償單元的介紹文字】

該GPIO補償單元的作用就是通過控制IO口的輸出斜率,降低GPIO的噪聲對整個電源的影響并盡力改善信號質(zhì)量,所以當(dāng)我們基于STM32芯片實現(xiàn)較高速率的通信時,比方50Mhz甚至上百兆的SPI或USB通信時,如果芯片有GPIO補償單元的話,建議將其開啟。順便提醒下,使用GPIO補償單元的話,往往對電源電壓有相應(yīng)要求,具體依手冊而定。

下面是分別基于STM32F4和STM32F7系列的HAL庫相關(guān)開啟GPIO補償單元的函數(shù)。

至于本案例異常的真正原因是什么呢?后來經(jīng)確認屬于上面提到的第二種情況,GPIO輸出速率擋位選擇與實際輸出需求不匹配,稍加調(diào)整配置就好。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10915

    瀏覽量

    356734
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1716

    瀏覽量

    91833
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1215

    瀏覽量

    52218

原文標(biāo)題:提高SPI時鐘時通信異常的案例分享

文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    KeyStone架構(gòu)串行外設(shè)接口(SPI)手冊

    SPI(Serial Peripheral Interface)是一種高速、全雙工、同步的串行通信協(xié)議,它允許微控制器與一個或多個外圍設(shè)備進行通信。SPI
    發(fā)表于 12-16 10:33 ?0次下載

    ADS8688IDBT SPI讀取數(shù)據(jù)波形異常,為什么?

    我司AGV項目中使用了TI的ADS8688IDBT,目前調(diào)試中遇到SPI讀取數(shù)據(jù)波形異常情況(數(shù)據(jù)在時鐘下降沿跳變), 讀取數(shù)據(jù)值不對的情況, 麻煩確認下問題。
    發(fā)表于 12-06 06:43

    通信協(xié)議之SPI總線硬件篇

    SPI:Serial Peripheral Interface,串行外圍設(shè)備接口。 是由摩托羅拉在20世紀80年代中期開發(fā)的同步串行總線接口規(guī)范(帶有時鐘信號,通過時鐘極性和時鐘相位
    的頭像 發(fā)表于 11-25 17:56 ?927次閱讀
    <b class='flag-5'>通信</b>協(xié)議之<b class='flag-5'>SPI</b>總線硬件篇

    spi master接口的fpga實現(xiàn)

    前言 當(dāng)你器件的引腳賊少的時候,需要主機和從機通信,spi就派上了用場,它可以一對多,但只是片選到的從機能和主機通信,其他的掛機。 spi:serial peripheral inte
    的頭像 發(fā)表于 11-16 10:35 ?487次閱讀
    <b class='flag-5'>spi</b> master接口的fpga實現(xiàn)

    DS1302芯片與FPGA之間SPI通信原理

    本文通過以DS1302芯片為基礎(chǔ),介紹該芯片與FPGA之間SPI通信原理,詳細描述硬件設(shè)計原理及FPGA SPI接口驅(qū)動設(shè)計。
    的頭像 發(fā)表于 10-24 14:16 ?542次閱讀
    DS1302芯片與FPGA之間<b class='flag-5'>SPI</b><b class='flag-5'>通信</b>原理

    SPI通信協(xié)議的基本概念和工作模式

    SPI(Serial Peripheral Interface)通信協(xié)議,即串行外圍設(shè)備接口,是一種高速、全雙工、同步通信總線,由摩托羅拉公司提出并廣泛應(yīng)用。SPI以其高效的數(shù)據(jù)傳輸能
    的頭像 發(fā)表于 09-09 17:04 ?1840次閱讀

    單片機SPI通信實現(xiàn)

    在深入探討單片機(如基于STM32、AVR、PIC等)如何通過SPI(Serial Peripheral Interface)進行通信之前,我們先概述SPI通信的基本原理,隨后以STM
    的頭像 發(fā)表于 09-09 17:00 ?653次閱讀

    探索SPI單線傳輸模式中時鐘線與數(shù)據(jù)傳輸?shù)暮喕?/a>

    探索SPI單線傳輸模式:時鐘線與數(shù)據(jù)傳輸?shù)暮喕?在當(dāng)今的嵌入式系統(tǒng)和微控制器通信中,串行外設(shè)接口(SPI)因其高速、全雙工和同步的特點而廣受歡迎。然而,隨著設(shè)備尺寸和復(fù)雜性的不斷減
    的頭像 發(fā)表于 05-28 18:26 ?1221次閱讀

    CYW20829調(diào)試SPI通信時,遇到的兩個問題求解

    使用函數(shù)cyhal_spi_slave_write向master發(fā)送數(shù)據(jù)時,沒有等待master拉低片選取并生成時鐘信號,導(dǎo)致接收數(shù)據(jù)異常。 嘗試:使用Cy_GPIO_讀取CS引腳,直到該引腳被拉低
    發(fā)表于 05-28 07:14

    STM8L001J3單片機SPI叢機通信數(shù)據(jù)異常怎么解決?

    最近在做一個項目,選擇STM8L001J3外掛做數(shù)據(jù)處理,由于通信速度和準(zhǔn)確性考慮,沒有用STM8L001J3的I2C和USART接口,采用SPI做叢機和主機進行通信,意法的單片機以前沒用過S
    發(fā)表于 04-24 07:55

    關(guān)于SMT32F103 Usart3同步模式與SPI1的通信問題求解

    本人使用一顆STM32F103的usart3同步模式與其SPI1進行通信,當(dāng)CPOL+CPHA的配置為00、01、10、11時,出現(xiàn)一些異常現(xiàn)象: 00、01、10配置:TX上發(fā)數(shù)據(jù)時,CK無
    發(fā)表于 04-19 06:48

    請問STM32F405RGT6的SPI通信最高時鐘頻率是多少?

    STM32F405RGT6的SPI通信最高時鐘頻率是多少?
    發(fā)表于 03-15 08:23

    SPI雙機通信中,時鐘信號由主機提供,那么從機向主機發(fā)送數(shù)據(jù)時需要時鐘信號嗎?

    SPI雙機通信中,時鐘信號由主機提供,那么從機向主機發(fā)送數(shù)據(jù)時需要時鐘信號嗎?從機是怎樣通知主機產(chǎn)生時鐘信號的?
    發(fā)表于 03-14 06:49

    超詳細的SPI原理和通信模式

    SPI分為主、從兩種模式,一個SPI通訊系統(tǒng)需要包含一個(且只能是一個)主設(shè)備,一個或多個從設(shè)備。提供時鐘的為主設(shè)備(Master),接收時鐘的設(shè)備為從設(shè)備(Slave),
    發(fā)表于 02-29 12:33 ?4794次閱讀
    超詳細的<b class='flag-5'>SPI</b>原理和<b class='flag-5'>通信</b>模式

    SPI全雙工模式下數(shù)據(jù)接收異常的一個原因

    前面給小伙伴講過串口發(fā)送和接收異常的可能原因,今天我們講下SPI全雙工模式下數(shù)據(jù)接收異常的一個原因。
    的頭像 發(fā)表于 01-23 09:31 ?1398次閱讀
    <b class='flag-5'>SPI</b>全雙工模式下數(shù)據(jù)接收<b class='flag-5'>異常</b>的一個原因