国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu)

這篇具有很好參考價(jià)值的文章主要介紹了【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。


前言

隨著嵌入式系統(tǒng)的迅猛發(fā)展,STM32系列微控制器在各種應(yīng)用中得到廣泛應(yīng)用。在嵌入式系統(tǒng)設(shè)計(jì)中,串行外設(shè)接口(SPI)是一種常見且重要的通信協(xié)議。為了更便捷地配置和使用SPI,STMicroelectronics提供了一款強(qiáng)大的工具——STM32 CubeMX。本文將著重介紹STM32 CubeMX中SPI的層次結(jié)構(gòu)、SPI協(xié)議以及SPI控制器的結(jié)構(gòu)。


一、SPI 程序?qū)哟?/h2>

1.1 硬件原理圖

以 SPI 接口的 Flash 為例,它跟主控的連接圖如下:
【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu),從0帶你學(xué)會(huì)如何像人類一樣寫STM32程序,stm32,嵌入式硬件,單片機(jī),c語言,mcu,51單片機(jī),cubeMX
其中DI為SPI設(shè)備發(fā)給主控的。SCK為時(shí)鐘(所以SPI協(xié)議是一種同步協(xié)議)
主控發(fā)出。DO為主控發(fā)送給SPI設(shè)備的,CS為片選引腳,我們可以通過CS片選引腳來選中不同的SPI設(shè)備,可以實(shí)現(xiàn)一主多從。

1.2 硬件框圖

我們會(huì)編寫程序通過SPI控制器來操作Flash,SPI來幫我們傳遞數(shù)據(jù)。
【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu),從0帶你學(xué)會(huì)如何像人類一樣寫STM32程序,stm32,嵌入式硬件,單片機(jī),c語言,mcu,51單片機(jī),cubeMX

1.3 軟件層次

要操作 Flash,涉及這幾個(gè)層次的程序:
① 應(yīng)用程序:我來決定“在哪個(gè)位置、讀寫什么數(shù)據(jù)”
② Flash 驅(qū)動(dòng):我知道發(fā)送什么格式的 SPI 數(shù)據(jù)才能讀、寫、擦除 Flash
③ SPI 控制器驅(qū)動(dòng)(HAL):我可以發(fā)送 SPI 數(shù)據(jù)

【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu),從0帶你學(xué)會(huì)如何像人類一樣寫STM32程序,stm32,嵌入式硬件,單片機(jī),c語言,mcu,51單片機(jī),cubeMX

二、SPI協(xié)議

2.1 硬件連線

SPI(Serial Peripheral Interface,串行外設(shè)接口)是由摩托羅拉(Motorola)在
1980 前后提出的一種全雙工同步串行通信接口,它用于 MCU 與各種外圍設(shè)備以串行方式進(jìn)
行通信以交換信息,通信速度最高可達(dá) 25MHz 以上。

SPI 接口主要應(yīng)用在 EEPROM、FLASH、實(shí)時(shí)時(shí)鐘、網(wǎng)絡(luò)控制器、OLED 顯示驅(qū)動(dòng)器、AD
轉(zhuǎn)換器,數(shù)字信號(hào)處理器、數(shù)字信號(hào)解碼器等設(shè)備之間。

SPI 通常由四條線組成,一條主設(shè)備輸出與從設(shè)備輸入(Master Output Slave Input,
MOSI),一條主設(shè)備輸入與從設(shè)備輸出(Master Input Slave Output,MISO),一條時(shí)鐘信
號(hào)(Serial Clock,SCLK),一條從設(shè)備使能選擇(Chip Select,CS)。
SPI 可以一個(gè)主機(jī)連接單個(gè)或多個(gè)從機(jī),每個(gè)從機(jī)都使用一個(gè)引腳進(jìn)行片選,物理連
接示意圖如圖所示:
【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu),從0帶你學(xué)會(huì)如何像人類一樣寫STM32程序,stm32,嵌入式硬件,單片機(jī),c語言,mcu,51單片機(jī),cubeMX
我們可以通過把SCLK時(shí)鐘,輸入和輸出所有從機(jī)共用一根線,通過CS引腳(片選引腳)來區(qū)分發(fā)送和接收哪個(gè)設(shè)備。
這樣就可以使用I2C的一主多從

2.2 如何訪問SPI設(shè)備

首先,使能片選引腳,在片選引腳有用的期間再去訪問
那怎么發(fā)數(shù)據(jù)和讀數(shù)據(jù)呢?
假設(shè)主控要發(fā)送0x56(二進(jìn)制:0101 0110)給Flash,時(shí)序如下:
【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu),從0帶你學(xué)會(huì)如何像人類一樣寫STM32程序,stm32,嵌入式硬件,單片機(jī),c語言,mcu,51單片機(jī),cubeMX
首先發(fā)送CS片選信號(hào),選中他,在每個(gè)時(shí)鐘周期傳輸一位。第一個(gè)時(shí)鐘周期傳遞最高位。然后其他的位就接著傳輸。

在一開始的時(shí)候,這個(gè)SCK是高電平還是低電平?
這是可以設(shè)置的。(CPOL)

傳輸數(shù)據(jù)時(shí),是在第一個(gè)跳邊緣("跳邊緣"通常指的是在數(shù)字信號(hào)中的變化,特別是從低電平到高電平或從高電平到低電平的變化。)傳輸數(shù)據(jù)還是在第二個(gè)跳邊緣傳輸數(shù)據(jù)?
這也是可以設(shè)置的(CPHA)

通過上面的CPOL和CPHA的組合,可以組合成4個(gè)SPI不同的模式
【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu),從0帶你學(xué)會(huì)如何像人類一樣寫STM32程序,stm32,嵌入式硬件,單片機(jī),c語言,mcu,51單片機(jī),cubeMX
比如說我們可以組合成下面這個(gè)時(shí)鐘時(shí)序圖:
【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu),從0帶你學(xué)會(huì)如何像人類一樣寫STM32程序,stm32,嵌入式硬件,單片機(jī),c語言,mcu,51單片機(jī),cubeMX
當(dāng)CPHA為1時(shí)在第二個(gè)跳邊緣傳輸數(shù)據(jù)
【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu),從0帶你學(xué)會(huì)如何像人類一樣寫STM32程序,stm32,嵌入式硬件,單片機(jī),c語言,mcu,51單片機(jī),cubeMX
當(dāng)CPHA為1,CPOL不同時(shí),可以觀察到,他們的初始電平分別為高電平和低電平

無論哪種模式,我們都可以同時(shí)發(fā)送和同時(shí)接收8位數(shù)據(jù)

2.3 SPI 框圖

在我們實(shí)際編程中我們是不需要這樣去控制引腳的
我們編寫的程序?qū)?huì)通過內(nèi)部的SPI控制器去訪問外部的SPI設(shè)備,這個(gè)SPI控制器幫我們實(shí)現(xiàn)時(shí)序,進(jìn)行讀寫。

SPI控制器框圖:
【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu),從0帶你學(xué)會(huì)如何像人類一樣寫STM32程序,stm32,嵌入式硬件,單片機(jī),c語言,mcu,51單片機(jī),cubeMX

  1. 當(dāng)我們要操作SPI的時(shí)候,我們要去設(shè)置他的模式:時(shí)鐘平時(shí)是什么電平,在第幾個(gè)跳邊緣傳輸數(shù)據(jù)
  2. 我們需要設(shè)置時(shí)鐘的頻率
  3. 我們可以去寫數(shù)據(jù)了
    比如上面的框圖,他有SPI控制寄存器2,控制寄存器1,我們可以設(shè)置控制寄存器1的時(shí)鐘平時(shí)是什么電平,在第幾個(gè)跳邊緣傳輸數(shù)據(jù):
    【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu),從0帶你學(xué)會(huì)如何像人類一樣寫STM32程序,stm32,嵌入式硬件,單片機(jī),c語言,mcu,51單片機(jī),cubeMX

然后我們就可以通過寫/讀緩沖區(qū)來得到數(shù)據(jù)了
【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu),從0帶你學(xué)會(huì)如何像人類一樣寫STM32程序,stm32,嵌入式硬件,單片機(jī),c語言,mcu,51單片機(jī),cubeMX


總結(jié)

STM32 CubeMX作為一款強(qiáng)大的開發(fā)工具,為嵌入式系統(tǒng)設(shè)計(jì)提供了便利。在SPI層次結(jié)構(gòu)的配置中,CubeMX提供了直觀而靈活的界面,使得用戶能夠輕松定制SPI通信的各種參數(shù)。同時(shí),SPI協(xié)議和SPI控制器結(jié)構(gòu)的詳細(xì)配置也為開發(fā)者提供了更高的靈活性和控制權(quán)。通過深入了解STM32 CubeMX中SPI的層次結(jié)構(gòu)、協(xié)議和控制器結(jié)構(gòu),開發(fā)者能夠更加高效地設(shè)計(jì)和實(shí)現(xiàn)復(fù)雜的嵌入式系統(tǒng)。文章來源地址http://www.zghlxwxcb.cn/news/detail-829080.html

到了這里,關(guān)于【STM32 CubeMX】SPI層次結(jié)構(gòu)SPI協(xié)議與SPI控制器結(jié)構(gòu)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32F4X SDIO(四) SDIO控制器

    STM32F4X SDIO(四) SDIO控制器

    STM32F4X內(nèi)部有一個(gè)SDIO控制器,開發(fā)者可以使用這個(gè)控制器跟SD卡進(jìn)行通信,下面就來簡單了解一下STM32F4X的SDIO控制器的使用。 下圖為STM32F4X的SDIO控制器框圖,框圖可以分為以下5部分, 適配器寄存器 、 FIFO 、 控制單元 、 命令路徑 、 數(shù)據(jù)路徑 。 SDIO控制器時(shí)鐘 STM32F4X的所有

    2024年02月07日
    瀏覽(39)
  • CAN總線基礎(chǔ)詳解以及stm32的CAN控制器

    CAN總線基礎(chǔ)詳解以及stm32的CAN控制器

    目錄 CAN簡介 CAN總線拓?fù)鋱D CAN總線特定 CAN應(yīng)用場景 CAN的物理層 CAN的協(xié)議層 CAN數(shù)據(jù)幀介紹 CAN位時(shí)序介紹 數(shù)據(jù)同步過程 硬件同步 再同步 CAN總線仲裁 stm32的CAN控制器 CAN控制器介紹 CAN控制器模式 CAN控制器框圖 接收過濾器 CAN控制器波特率計(jì)算 CAN相關(guān)寄存器 CAN主控制寄存器(

    2024年01月25日
    瀏覽(51)
  • 基于 STM32+FPGA 的通用工業(yè)控制器設(shè)計(jì)(一)系統(tǒng)方案設(shè)計(jì)

    基于 STM32+FPGA 的通用工業(yè)控制器設(shè)計(jì)(一)系統(tǒng)方案設(shè)計(jì)

    本章首先介紹了現(xiàn)有 PLC 系統(tǒng)的概況,然后提出了本文設(shè)計(jì)的通用工業(yè)控制器的 整體方案架構(gòu),分析了硬件和軟件上需要實(shí)現(xiàn)的功能,最后對(duì)各部分功能進(jìn)行分析并提 出具體的實(shí)現(xiàn)方案。 2.1 PLC 系統(tǒng)簡介 可編程邏輯控制器( Programmable Logic Controller , PLC )是以微處理器為基

    2024年02月15日
    瀏覽(96)
  • STM32 FSMC (Flexible static memory controller) 靈活靜態(tài)內(nèi)存控制器介紹

    STM32 FSMC (Flexible static memory controller) 靈活靜態(tài)內(nèi)存控制器介紹

    說到STM32的FSMC(Flexible Static Memory Controller),這個(gè)玩意兒可真是STM32家族的“多面手”。想象一下,如果STM32是個(gè)熱衷于DIY的工程師,那FSMC就是他的瑞士軍刀,無論是連接SRAM、PSRAM、NOR/NAND Flash還是LCD模塊,F(xiàn)SMC都能應(yīng)對(duì)自如,簡直就是連接外部存儲(chǔ)和記憶界的“橋梁”。 FSM

    2024年02月21日
    瀏覽(23)
  • 運(yùn)動(dòng)控制器設(shè)計(jì)——基于FreeModbus在STM32F4平臺(tái)實(shí)現(xiàn)ModbusTCP和ModbusRTU

    運(yùn)動(dòng)控制器設(shè)計(jì)——基于FreeModbus在STM32F4平臺(tái)實(shí)現(xiàn)ModbusTCP和ModbusRTU

    本文筆者最近的項(xiàng)目是設(shè)計(jì)一款運(yùn)動(dòng)控制器,MCU使用的是STM32F429,要求是通過Modbus TCP協(xié)議實(shí)現(xiàn)與示教器通訊,并通過ModbusRTU實(shí)現(xiàn)與觸摸屏通訊。 本文將介紹在STM32F4上實(shí)現(xiàn) ModbusTCP和ModbusRTU通訊 的過程。筆者才疏學(xué)淺,如有錯(cuò)誤還請(qǐng)指正。 Modbus協(xié)議是典型的主-從通訊結(jié)構(gòu),鏈

    2024年02月05日
    瀏覽(14)
  • 基于STM32 ARM+ FPGA 的軟體機(jī)器人的 CAN總線運(yùn)動(dòng)控制器的設(shè)計(jì)

    基于STM32 ARM+ FPGA 的軟體機(jī)器人的 CAN總線運(yùn)動(dòng)控制器的設(shè)計(jì)

    針對(duì)在軟體機(jī)器人控制時(shí) , 多電機(jī)協(xié)同控制過程中難度大 、 通用性差 、 協(xié)同性差等缺點(diǎn) , 設(shè)計(jì)了基于 ARM 和 FPGA 的軟體機(jī)器人的控制器局域網(wǎng)絡(luò) ( controller area network , CAN ) 總線運(yùn)動(dòng)控制器 , 采用 ARMCortex-M4 為內(nèi)核的 STM32F407 開發(fā)板和 AX7102 FPGA 開發(fā)板設(shè)計(jì)一種基于 C

    2024年02月13日
    瀏覽(32)
  • 開放式高實(shí)時(shí)高性能PLC控制器解決方案-基于米爾電子STM32MP135

    開放式高實(shí)時(shí)高性能PLC控制器解決方案-基于米爾電子STM32MP135

    隨著工業(yè)數(shù)字化進(jìn)程加速與IT/OT深入融合,不斷增加的OT核心數(shù)據(jù)已經(jīng)逐步成為工業(yè)自動(dòng)化行業(yè)的核心資產(chǎn),而OT層數(shù)據(jù)具備高實(shí)時(shí)、高精度、冗余度高、數(shù)據(jù)量大等等特點(diǎn),如何獲取更加精準(zhǔn)的OT數(shù)據(jù)對(duì)數(shù)字化進(jìn)程起到至關(guān)重要的作用,同時(shí)隨著國內(nèi)工業(yè)控制系統(tǒng)逐步進(jìn)入中

    2024年03月24日
    瀏覽(14)
  • 了解SPI總線CAN控制器 MCP2515配置 一文即可

    了解SPI總線CAN控制器 MCP2515配置 一文即可

    最近工作中遇到需要6路CAN通信的情況,單片機(jī)自帶的4路已不滿足實(shí)際需求,故采用了SPI總線的CAN控制器芯片MCP2515,通過SPI通信的CAN擴(kuò)展芯片最高可實(shí)現(xiàn) 1Mbps 的遵循 CAN 2.0B 的協(xié)議通信,配置起來也比較繁瑣,故寫誕生了這篇文章。本篇中僅對(duì)基礎(chǔ)功能進(jìn)行測試,如有疑問可

    2024年02月06日
    瀏覽(29)
  • 12.5在Linux中編寫隊(duì)列模式的SPI控制器驅(qū)動(dòng)

    12.5在Linux中編寫隊(duì)列模式的SPI控制器驅(qū)動(dòng)

    在Linux內(nèi)核中更加推薦使用隊(duì)列模式的SPI控制器驅(qū)動(dòng),而且隊(duì)列模式的SPI控制器驅(qū)動(dòng)也更加簡單,只需要在驅(qū)動(dòng)中實(shí)現(xiàn)單個(gè)spi_transfer的傳輸即可,將spi_message拆解為spi_transfer、片選GPIO控制、統(tǒng)計(jì)信息更新等均由SPI核心去完成。 實(shí)現(xiàn)設(shè)置SPI總線的函數(shù)setup,用于設(shè)置SPI總線,若

    2024年01月20日
    瀏覽(16)
  • 9-基于STM32無刷直流電機(jī)控制器的設(shè)計(jì)仿真與實(shí)現(xiàn)(原理圖+源碼+仿真工程+論文+PPT+參考英文文獻(xiàn))

    9-基于STM32無刷直流電機(jī)控制器的設(shè)計(jì)仿真與實(shí)現(xiàn)(原理圖+源碼+仿真工程+論文+PPT+參考英文文獻(xiàn))

    包含此題目畢業(yè)設(shè)計(jì)全套資料: 原理圖工程文件 原理圖截圖 仿真模型工程文件 仿真截圖 低重復(fù)率文檔(22642字) 英文文獻(xiàn)及翻譯 資料鏈接 1.基于單片機(jī)實(shí)現(xiàn)無刷直流電機(jī)控制器的設(shè)計(jì),完成系統(tǒng)芯片選型; 2.確定無刷直流電機(jī)控制器的總體設(shè)計(jì)方案; 3.給出系統(tǒng)的硬件設(shè)計(jì)

    2024年02月07日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包