對(duì)于STM32芯片,其GPIO輸出可以根據(jù)不同的應(yīng)用需求而靈活選擇不同檔次的輸出速率。一般分為低、中、高或者很高幾個(gè)檔次,具體速率視不同的STM32芯片而定。
不妨以STM32F407為例,它分四個(gè)輸出檔次,具體的數(shù)值范圍參考芯片數(shù)據(jù)手冊(cè)的I/O的交流特性部分。 這個(gè)輸出速率主要體現(xiàn)I/O驅(qū)動(dòng)電路的輸出反應(yīng)能力,通過選擇不同的輸出驅(qū)動(dòng)速率,實(shí)現(xiàn)最佳的噪聲與和功耗控制。不難理解,選擇輸出驅(qū)動(dòng)速率越高,噪聲也越大,相應(yīng)的芯片功耗也會(huì)越大。所以對(duì)于這個(gè)輸出頻率的選擇,不要太隨意,合適就好。在滿足應(yīng)用的需求的前提下,就不要隨意往高端速率選擇。
這里說幾個(gè)簡(jiǎn)單的應(yīng)用案例,以加深印象和理解。
某客戶使用STM32F4芯片做產(chǎn)品開發(fā),其中用到 while( count++ > 0xffffff) 做軟件delay,然后讓LED閃爍。相關(guān)代碼甚為簡(jiǎn)單,卻發(fā)現(xiàn)產(chǎn)品的一致性不好,LED 閃爍有的快有的慢。 反復(fù)排查代碼原因,未發(fā)現(xiàn)程序邏輯錯(cuò)誤。后來嘗試將LED 驅(qū)動(dòng)腳的Output Speed設(shè)置從very high調(diào)整為 low 后一切正常。
2、Audio 噪聲 某客戶使用STM32芯片做產(chǎn)品開發(fā)。其中有I2S的音頻播放功能。客戶在調(diào)試時(shí)用到Printf串口打印,發(fā)現(xiàn)使用printf輸出時(shí)會(huì)出現(xiàn)噪音,如果關(guān)閉printf則正常。 后來,反復(fù)查看代碼,直到將UART的TX輸出端口的管腳輸出速率由very high改為L(zhǎng)ow后噪聲消失。
3、SPI通信異常 有人使用STM32芯片開發(fā)產(chǎn)品,其中用到SPI通信。STM32做主,其它外圍器件做從,有時(shí)發(fā)現(xiàn)SPI讀取數(shù)據(jù)總是出錯(cuò)。 對(duì)于這里的通信出錯(cuò),如果SPI通信端口腳的輸出速率選擇跟實(shí)際通信速率不合適的話也會(huì)出現(xiàn)。相比實(shí)際速率需求,過高或過低了都會(huì)導(dǎo)致通信出錯(cuò)。
好,拋磚引玉似地羅列上面幾個(gè)案例。這里順便聊下跟GPIO輸出速率有關(guān)的I/O補(bǔ)償單元。
目前STM32家族的9大系列里面,其中高性能的STM32F2/STM32F4/STM32F7系列的芯片,都帶有GPIO補(bǔ)償單元。 該補(bǔ)償單元的功能就是對(duì)GPIO的輸出擺率進(jìn)行合理控制以降低I/O噪聲和功耗。當(dāng)你在產(chǎn)品開發(fā)中需要配置50M或更高的輸出速率時(shí),強(qiáng)烈建議開啟該補(bǔ)償單元。
總之,對(duì)于STM32 GPIO輸出速率的選擇問題,我們?cè)陂_發(fā)應(yīng)用中應(yīng)多加注意。如果因?yàn)檫@個(gè)輸出速率選擇導(dǎo)致麻煩,原因往往比較隱晦,很難直接從代碼語句或程序邏輯上找到突破。在滿足實(shí)際應(yīng)用需求的前提下,速率就低不就高,這對(duì)降低功耗、減少噪聲、改善EMI都有好處。當(dāng)然,如果選擇過低于實(shí)際需求的輸出速率也不可取,那樣會(huì)導(dǎo)致輸出失真、通信異常等問題,自然也違背了ST設(shè)計(jì)多檔位輸出速率的初衷。
文章來源:微信公眾號(hào) 融創(chuàng)芯城(一站式電子元器件、PCB、PCBA購(gòu)買服務(wù)平臺(tái),電子項(xiàng)目眾包平臺(tái))
|