www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當前位置:首頁 > 公眾號精選 > 嵌入式客棧
[導讀][導讀]大家好,我是逸珺。之前用STM32的SPI需要控制很多外部芯片,可是一個SPI的外設只有一個片選,要實現(xiàn)獨立片選一主多從,怎么實現(xiàn)呢?SPI總線拓撲一般地,SPI總線按照下圖方式進行連接,一主多從。如上圖:每個從設備都有獨立的片選引腳,主機同一時間段內(nèi),與一個從設備進行通...

[導讀] 大家好,我是逸珺。

之前用STM32的SPI需要控制很多外部芯片,可是一個SPI的外設只有一個片選,要實現(xiàn)獨立片選一主多從,怎么實現(xiàn)呢?

SPI總線拓撲

一般地,SPI總線按照下圖方式進行連接,一主多從。



如上圖:

  • 每個從設備都有獨立的片選引腳,主機同一時間段內(nèi),與一個從設備進行通信,也即選中一個從設備。
  • MOSI/MISO/SCLK并聯(lián)在一起
  • MISO須是三態(tài)門,當從設備未選中時,該腳須設置為高阻態(tài),而不能是輸出態(tài),否則會影響總線!
  • 對于MOSI/SCLK,雖然并聯(lián)在一起,但是由于僅一個輸出,多輸入。
但是你看STM32的SPI外設,一個SPI僅有一個NSS信號,以STM32F407的SPI2為例:


那么要實現(xiàn)前面說的一主多從,怎么辦呢?有朋友說,直接用GPIO去模擬不就可以了。

不錯,SPI總線要用GPIO模擬還是很容易的,但是這樣做波特率做不高,需要占用CPU時間,效率比較低!而用SPI外設控制器,底層bit流的收發(fā)由外設控制器實現(xiàn),用GPIO模擬則需要CPU參與。

怎么破呢?

菊花鏈拓撲

這種方案,省引腳。但是要移位控制,相對獨立片選效率還是低不少。

獨立片選拓撲

SPI外設的MOSI、MISO、SCK還是照用不誤,但是片選我們不用,設置成通用輸出模式,再用其他的GPIO片選從芯片即可。

上代碼看看:

void?HAL_SPI_MspInit(SPI_HandleTypeDef*?hspi)
{
??GPIO_InitTypeDef?GPIO_InitStruct?=?{0};
??if(hspi->Instance==SPI1)
??{
????__HAL_RCC_SPI1_CLK_ENABLE();
????__HAL_RCC_GPIOA_CLK_ENABLE();
????/**SPI1?GPIO?Configuration
????PA5?????------>?SPI1_SCK
????PA6?????------>?SPI1_MISO
????PA7?????------>?SPI1_MOSI
????PA15?????------>?SPI1_NSS?但是這里不用
????*/

????GPIO_InitStruct.Pin?=?GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7;
????GPIO_InitStruct.Mode?=?GPIO_MODE_AF_PP;
????GPIO_InitStruct.Pull?=?GPIO_NOPULL;
????GPIO_InitStruct.Speed?=?GPIO_SPEED_FREQ_VERY_HIGH;
????GPIO_InitStruct.Alternate?=?GPIO_AF5_SPI1;
????HAL_GPIO_Init(GPIOA,?
本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀
關閉