<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 關(guān)于STM32的SPI端口設(shè)置問題

          關(guān)于STM32的SPI端口設(shè)置問題

          作者: 時(shí)間:2016-11-10 來源:網(wǎng)絡(luò) 收藏
          在復(fù)用SPI總線時(shí),必須先設(shè)置總線端口。讀取其他ARM芯片(如NXP)一般很容易看出芯片的設(shè)置是否正確。不過對于STM32就容易讓人迷惑了。例如,我們在使用SPI總線進(jìn)行通信時(shí),可以這樣設(shè)置:

          GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
          GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
          GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // 復(fù)用的推挽輸出

          本文引用地址:http://www.ex-cimer.com/article/201611/317391.htm

          恐怕大家對MISO端口的設(shè)置就會產(chǎn)生疑惑了,MISO不是應(yīng)該設(shè)置成為輸入端口(GPIO_Mode_IN_FLOATING)才行的嗎?

          答題是肯定的,對于STM32的這一類管腳來說(如USART_RX)即可以設(shè)置成為輸入模式,也可以設(shè)置成為復(fù)用的推挽輸出。其工作都是正常的,不過建議大家還是設(shè)置成為輸入端口的好,容易理解。

          具體產(chǎn)生這一問題的原因是:從功能上來說,MISO應(yīng)該配置為輸入模式才對,但為什么也可以配置為GPIO_Mode_AF_PP?請看下面的GPIO復(fù)用功能配置框圖。當(dāng)一個(gè)GPIO端口配置為GPIO_Mode_AF_PP是,這個(gè)端口的內(nèi)部結(jié)構(gòu)框圖如下:圖中可以看到,片上外設(shè)的復(fù)用功能輸出信號會連接到輸出控制電路,然后在端口上產(chǎn)生輸出信號。但是在芯片內(nèi)部,MISO是SPI模塊的輸入引腳,而不是輸出引腳,也就是說圖中的"復(fù)用功能輸出信號"根本不存在,因此"輸出控制電路"不能對外產(chǎn)生輸出信號。而另一方面看,即使在GPIO_Mode_AF_PP模式下,復(fù)用功能輸入信號卻與外部引腳之間相互連接,既MISO得到了外部信號的電平,實(shí)現(xiàn)了輸入的功能。



          關(guān)鍵詞: STM32SPI端口設(shè)置問

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();