欧美性猛交xxxx免费看_牛牛在线视频国产免费_天堂草原电视剧在线观看免费_国产粉嫩高清在线观看_国产欧美日本亚洲精品一5区

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

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

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

MindSDK應(yīng)用基礎(chǔ)—SPI模塊樣例簡介

靈動MM32MCU ? 來源:靈動MM32MCU ? 2023-08-10 17:14 ? 次閱讀

引言

MindSDK為MM32主流的微控制器,實現(xiàn)了一系列SPI驅(qū)動的樣例工程。本文通過講解 SPI 模塊的樣例工程,介紹 SPI 模塊的功能和用法。關(guān)于 SPI 模塊對應(yīng)的驅(qū)動程序,以及 SPI 外設(shè)模塊硬件的實現(xiàn)細節(jié),可具體查閱 MindSDK 工程的源文件,以及 MM32 微控制器(例如MM32F5270)的用戶手冊。

樣例工程

MindSDK 中為 SPI 驅(qū)動設(shè)計的樣例工程包括:

spi_master_basic

spi_master_tx_dma

spi_master_xfer_dma

spi_master_b2b_interrupt

spi_master_b2b_polling

spi_slave_b2b_interrupt

其中,spi_master_basic、spi_master_tx_dma 與 spi_master_xfer_dma 分別演示了 SPI 做主機的典型數(shù)據(jù)傳輸方式,包括:基礎(chǔ)數(shù)據(jù)傳輸、SPI 使用 DMA 發(fā)送數(shù)據(jù)、SPI 使用 DMA 收發(fā)數(shù)據(jù)。另外,還有一些 SPI 板級通信的樣例,通過將一塊 SPI 做主機,另一塊 SPI 做從機的方式進行一系列板對板的基礎(chǔ)數(shù)據(jù)傳輸,主機樣例與從機樣例結(jié)合使用,包括:SPI做主機進行中斷數(shù)據(jù)傳輸,SPI做主機進行輪詢數(shù)據(jù)傳輸,SPI做從機進行中斷數(shù)據(jù)傳輸(SPI從機引腳與SPI主機引腳相連進行數(shù)據(jù)傳輸)。

spi_master_basic

spi_master_basic 描述了 SPI 模塊最基本的數(shù)據(jù)傳輸方式,輪詢方式。在樣例工程中,通過 SPI_InitMaster() 函數(shù),配置 SPI 為主模式,選定一個 SPI 數(shù)據(jù)采樣時序,為空閑時時鐘線為低電平、下降沿時數(shù)據(jù)有效的 SPI_PolPha_Alt0 ,并指定傳輸數(shù)據(jù)寬度為 SPI_DataWidth_8b 、SPI 的波特率為 BOARD_LOOP_SPI_BAUDRATE ,選定 SPI 的傳輸方向為 SPI_XferMode_TxRx 。然后,通過 SPI_Enable() 函數(shù)啟動 SPI,使 SPI 能夠進行數(shù)據(jù)傳輸。

每當(dāng) SPI 發(fā)送緩沖區(qū)未滿時,可進行數(shù)據(jù)發(fā)送,數(shù)據(jù)由 MOSI 引腳傳出;當(dāng) SPI 接收緩沖區(qū)接收有效數(shù)據(jù)時,可讀取有效的接收數(shù)據(jù)。

在最終運行程序時,需要將 SPI 的 MOSI 引腳與 MISO 引腳使用杜邦線相連,通過向 PC 機上的串口通信終端輸入任意按鍵,使 SPI 進行 APP_SPI_BUFF_LEN 次數(shù)據(jù)發(fā)送并接收到數(shù)據(jù),主循環(huán)對接收數(shù)據(jù)和發(fā)送數(shù)據(jù)進行驗證,若存在驗證失敗數(shù)據(jù),則可看到串口打印出錯信息 spi loopback xfer error. app_spi_xfer_err_count = ,若驗證成功,則可看到串口打印 spi loopback xfer done. ,從而驗證 SPI 做主機的數(shù)據(jù)輪詢傳輸情況。

spi_master_tx_dma

spi_master_tx_dma 相較于 spi_master_basic 樣例工程,實現(xiàn)通過 DMA 進行 SPI 的數(shù)據(jù)發(fā)送功能。

其實現(xiàn)原理,是在 spi_master_basic 的基礎(chǔ)上,增加對于 DMA 的初始化,通過 DMA_InitChannel() 函數(shù),選定所使用的 DMA 通道為 BOARD_SPI_TX_DMA_CHANNEL ,配置 DMA 數(shù)據(jù)搬運方向為存儲器到外設(shè) DMA_XferMode_MemoryToPeriph ,數(shù)據(jù)寬度為 DMA_XferWidth_8b ,通過 SPI_GetTxDataRegAddr() 函數(shù)獲取外設(shè)地址并進行配置,設(shè)定存儲器地址為 (uint32_t)app_spi_tx_buf ,外設(shè)地址自增模式為不自增 DMA_AddrIncMode_StayAfterXfer ,存儲器地址自增模式為 DMA_AddrIncMode_IncAfterXfer。然后,啟用選定 SPI 外設(shè)的 DMA 發(fā)送通道對應(yīng)的 NVIC 中斷。最后,通過 DMA_EnableChannelInterrupts()函數(shù),在 BOARD_SPI_TX_DMA_CHANNEL 通道使能 DMA_CHN_INT_XFER_DONE 中斷,每次在 DMA_EnableChannel() 啟動 DMA 數(shù)據(jù)傳輸后,DMA 傳輸完成時,會觸發(fā)中斷。

實際運行程序時,將 SPI 的 MOSI 引腳與 MISO 引腳使用杜邦線相連后,用戶在串口調(diào)試終端中每次輸入任意字符,程序均會調(diào)用一次 DMA_EnableChannel() 函數(shù),啟動 DMA 傳輸,在 SPI 進行一次 DMA 傳輸并完成后,DMA 輸標志位`app_dma_xfer_done`將在中斷處理函數(shù)中被設(shè)置為true,主程序循環(huán)等待,當(dāng)標志位為 true 時,打印 spi tx dma xfer done. 到串口終端界面。

spi_master_xfer_dma

spi_master_xfer_dma 相較于 spi_master_tx_dma 樣例工程,實現(xiàn)通過 DMA 進行 SPI 的數(shù)據(jù)收發(fā)功能。

其實現(xiàn)原理,是在 spi_master_tx_dma 的基礎(chǔ)上,增加對于 SPI 使用 DMA 接收通道的初始化,選定使用的 SPI DMA 接收通道為 BOARD_SPI_RX_DMA_CHANNEL ,在初始化 DMA 發(fā)送通道后,繼續(xù)使用 DMA_InitChannel() 函數(shù)初始化 DMA 接收通道,修改傳輸方向為 DMA_XferMode_PeriphToMemory ,設(shè)定存儲器地址為 (uint32_t)app_spi_rx_buf ,通過 SPI_GetRxDataRegAddr() 函數(shù)獲取外設(shè)地址并配置。然后啟用選定 SPI 外設(shè)的 DMA 接收通道對應(yīng)的 NVIC 中斷。最后,在 BOARD_SPI_RX_DMA_CHANNEL 通道使能 DMA_CHN_INT_XFER_DONE 中斷,每次在 DMA_EnableChannel() 啟動 DMA 數(shù)據(jù)傳輸后,當(dāng) DMA 傳輸完成,會觸發(fā)對應(yīng)通道的中斷。

實際運行時,將 SPI 的 MOSI 引腳與 MISO 引腳使用杜邦線相連后,用戶在串口調(diào)試終端中每次輸入任意字符,程序均會調(diào)用一次 DMA_EnableChannel() 函數(shù),啟動 DMA 的發(fā)送與接收通道,在 SPI 進行一次 DMA 發(fā)送并完成后,DMA 發(fā)送完成標志位 app_dma_tx_done 將在發(fā)送通道所對應(yīng)的中斷處理函數(shù)中被設(shè)置為 true,再進行 SPI 的 DMA 接收操作,DMA 接收數(shù)據(jù)完成后,DMA 接收完成標志位 app_dma_rx_done 將在接收通道所對應(yīng)的中斷處理函數(shù)中被設(shè)置為 true,主程序循環(huán)等待,當(dāng)發(fā)送完成標志位為 true 時,打印 spi tx dma done. 到串口終端界面,當(dāng)接收完成標志位未 true 時,打印 spi rx dma done with data: 以及接收數(shù)據(jù)到串口終端界面。

spi_master_b2b_interrupt

spi_master_b2b_interrupt 實現(xiàn)的是一個使用 SPI 主模式中斷傳輸?shù)臉永こ蹋谥鲝臋C的從屬關(guān)系中做主機,需與從機結(jié)合使用。

其實現(xiàn)原理,是在 spi_master_basic 的基礎(chǔ)上,增加 SPI 傳輸所使用的結(jié)構(gòu)體,通過 SPI_EnableInterrupts() 函數(shù)使能發(fā)送完成中斷 SPI_INT_TX_DONE 與接收完成中斷 SPI_INT_RX_DONE 中斷,當(dāng)發(fā)送或接收數(shù)據(jù)完成時,產(chǎn)生對應(yīng)中斷,在中斷處理函數(shù)中,傳輸次數(shù)達到所設(shè)定的 rx_idx 或 tx_idx ,將通過 SPI_EnableInterrupts() 函數(shù)關(guān)閉對應(yīng)的接收完成中斷或發(fā)送完成中斷,接收完成后調(diào)用 spi_rx_done_callback() 回調(diào)函數(shù),并將全局標志位 app_spi_xfer_flag 置為true。

實際運行此程序時,需令一塊開發(fā)板下載此樣例工程,另一塊開發(fā)板下載 spi_slave_b2b_interrupt 樣例工程,使用杜邦線連接兩開發(fā)板的 MOSI、MISO、NSS、SCK 引腳,通過串口終端界面輸入任意按鍵,進行 SPI 的數(shù)據(jù)收發(fā),串口終端打印發(fā)送數(shù)據(jù)與接收數(shù)據(jù)。

spi_master_b2b_polling

spi_master_b2b_polling 實現(xiàn)的是一個使用 SPI 主模式輪詢傳輸?shù)臉永こ?,在主從機的從屬關(guān)系中做主機,需與從機結(jié)合使用。

該實現(xiàn)原理與 spi_master_basic 基本相同,通過 while 循環(huán)等待當(dāng)前達到發(fā)送或接收數(shù)據(jù)所需的傳輸條件,達到后進行數(shù)據(jù)收發(fā),設(shè)定發(fā)送 APP_SPI_BUF_LEN 個數(shù)據(jù)并接收。

實際運行此程序時,需令一塊開發(fā)板下載此樣例工程,另一塊開發(fā)板下載 spi_slave_b2b_interrupt 樣例工程,使用杜邦線連接兩開發(fā)板的 MOSI、MISO、NSS、SCK 引腳,通過串口終端界面輸入任意按鍵,進行 SPI 的數(shù)據(jù)收發(fā),串口終端打印發(fā)送數(shù)據(jù)與接收數(shù)據(jù)。

spi_slave_b2b_interrupt

spi_slave_b2b_interrupt 實現(xiàn)的是一個使用 SPI 從模式中斷的樣例工程,在主從機的從屬關(guān)系中做從機,需與主機結(jié)合使用。

在樣例工程中,通過 SPI_InitSlave() 函數(shù)配置 SPI 為從模式,設(shè)置傳輸方向為 SPI_XferMode_TxRx ,SPI 從機的數(shù)據(jù)采樣時序需要與主機的數(shù)據(jù)采樣時序配置相同,為 SPI_PolPha_Alt0 ,設(shè)定數(shù)據(jù)寬度為 SPI_DataWidth_8b 。通過 SPI_EnableInterrupts() 函數(shù)使能 SPI_INT_RX_DONE 中斷,并啟用選定 SPI 外設(shè)對應(yīng)的 NVIC 中斷。最后,啟動 SPI,SPI 作為從機,等待主機的命令。當(dāng) SPI 接收完成數(shù)據(jù)后,產(chǎn)生接收完成中斷,并執(zhí)行中斷處理函數(shù),在中斷處理函數(shù)中將已接收的數(shù)據(jù)發(fā)送出去。

在最終運行程序時,需令一塊開發(fā)板下載此樣例工程,另一塊開發(fā)板下載 spi_master_b2b_polling 樣例工程或 spi_master_b2b_interrupt 樣例工程,使用杜邦線連接兩開發(fā)板的 MOSI、MISO、NSS、SCK 引腳,在 spi_master_b2b_xxx 工程中對應(yīng)的串口終端界面下輸入任何字符,在 spi_slave_b2b_interrupt 工程中對應(yīng)的串口終端界面中可以看到對應(yīng)的內(nèi)容。






審核編輯:劉清

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

    關(guān)注

    48

    文章

    7660

    瀏覽量

    152186
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7530

    瀏覽量

    164412
  • 數(shù)據(jù)傳輸
    +關(guān)注

    關(guān)注

    9

    文章

    1961

    瀏覽量

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

    關(guān)注

    17

    文章

    1724

    瀏覽量

    92191
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    566

    瀏覽量

    101026

原文標題:靈動微課堂 (第267講)|MindSDK應(yīng)用基礎(chǔ)——SPI模塊樣例

文章出處:【微信號:MindMotion-MMCU,微信公眾號:靈動MM32MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于FPGA的SPI自動發(fā)送模塊的設(shè)計

    基于FPGA的SPI自動發(fā)送模塊的設(shè)計:一、摘要:SPI 接口應(yīng)用十分廣泛,在很多情況下,人們會用軟件模擬的方法來產(chǎn)生SPI 時序或是采用帶SPI
    發(fā)表于 10-04 08:44 ?25次下載

    SPI、IIC、IIS、UART、SDIO、GPIO 簡介

    SPI、IIC、IIS、UART、SDIO、GPIO 簡介
    發(fā)表于 10-29 17:00 ?0次下載

    常見總線簡介CAN、USART、SPI、SCI等

    常見總線簡介,包括CAN、USART、SPI、SCI等
    發(fā)表于 11-30 14:08 ?0次下載

    SPI接口的應(yīng)用與基于FPGA的SPI自動發(fā)送模塊設(shè)計

    SPI 接口應(yīng)用十分廣泛,在很多情況下,人們會用軟件模擬的方法來產(chǎn)生SPI 時序或是采用帶SPI 功能模塊的MCU。但隨著可編程邏輯技術(shù)的發(fā)展,人們往往需要自己設(shè)計簡單的
    發(fā)表于 10-19 10:33 ?19次下載
    <b class='flag-5'>SPI</b>接口的應(yīng)用與基于FPGA的<b class='flag-5'>SPI</b>自動發(fā)送<b class='flag-5'>模塊</b>設(shè)計

    fireflyAIO-3288C主板SPI接口簡介

    SPI是一種高速的,全雙工,同步串行通信接口,用于連接微控制器、傳感器、存儲設(shè)備等,本文以指紋識別模塊簡單介紹SPI使用。
    的頭像 發(fā)表于 12-16 14:11 ?1306次閱讀
    fireflyAIO-3288C主板<b class='flag-5'>SPI</b>接口<b class='flag-5'>簡介</b>

    SPI總線接口在OLED模塊中的應(yīng)用詳細說明

    針對OLED模塊應(yīng)用中8位數(shù)據(jù)并行接口占用單片機I/O管腳較多的問題,本文介紹了SPI總線接口在OLED模塊中的應(yīng)用,并以VGG12864L-S002顯示模塊
    發(fā)表于 11-21 16:39 ?7次下載
    <b class='flag-5'>SPI</b>總線接口在OLED<b class='flag-5'>模塊</b>中的應(yīng)用詳細說明

    SPI基礎(chǔ),SPI是怎么的?

    SPI是一種簡單的接口,允許一個芯片與一個或多個其他芯片進行通信。 1,SPI是怎么的? 讓我們從一個簡單的示例開始,其中只有兩個芯片必須一起通信。 SPI要求在兩個芯片之間使用4條
    的頭像 發(fā)表于 11-19 18:06 ?5049次閱讀

    SPI Nand Flash簡介

    1.SPI Nand Flash簡介SPI Nand Flash顧名思義就是串行接口的Nand Flash,它和普通并行的Nand Flash相似,比如:SLC Nand Flash。2.SP
    發(fā)表于 12-02 10:51 ?34次下載
    <b class='flag-5'>SPI</b> Nand Flash<b class='flag-5'>簡介</b>

    SPI通信簡介

    目錄(?)[-]SPI簡介SPI特點1采用主-從模式Master-Slave 的控制方式2采用同步方式Synchronous傳輸數(shù)據(jù)3數(shù)據(jù)交換Data Exchanges4 SPI有四
    發(fā)表于 12-22 19:14 ?9次下載
    <b class='flag-5'>SPI</b>通信<b class='flag-5'>簡介</b>

    MindSDK概述、使用方法及應(yīng)用案例

    MindSDK(mm32-mcu-sdk)是由靈動官方的軟件團隊開發(fā)和維護的基于靈動微控制器的軟件開發(fā)平臺。
    的頭像 發(fā)表于 08-12 09:10 ?1525次閱讀

    MindSDK中FlexCAN驅(qū)動程序及工程

    和MM32F0140微控制器,其中就有FlexCAN外設(shè)模塊的驅(qū)動程序以及工程,以及對CAN總線通信協(xié)議CANopen的適配工程。本文將介紹MindSDK中FlexCAN驅(qū)動程序及
    的頭像 發(fā)表于 06-23 15:41 ?1359次閱讀
    <b class='flag-5'>MindSDK</b>中FlexCAN驅(qū)動程序及<b class='flag-5'>樣</b><b class='flag-5'>例</b>工程

    MindSDK應(yīng)用基礎(chǔ)—TIM模塊

    MindSDK為MM32使用星辰處理器內(nèi)核的系列微控制器,實現(xiàn)了一組TIM工程,MindSDK中的TIM模塊對應(yīng)硬件定時器TIM外設(shè)。
    的頭像 發(fā)表于 06-29 17:16 ?927次閱讀

    MindSDK為MM32實現(xiàn)了一組TIM工程

    MindSDK為MM32使用星辰處理器內(nèi)核的系列微控制器,實現(xiàn)了一組TIM工程,MindSDK中的TIM模塊對應(yīng)硬件定時器TIM外設(shè)。
    的頭像 發(fā)表于 06-30 17:32 ?939次閱讀

    MindSDK應(yīng)用基礎(chǔ)—ADC模塊

    MindSDK為MM32主流的微控制器,實現(xiàn)了一組ADC工程。本文通過講解ADC模塊
    的頭像 發(fā)表于 08-17 17:16 ?985次閱讀

    MindSDK應(yīng)用基礎(chǔ)——TIM模塊

    MindSDK應(yīng)用基礎(chǔ)——TIM模塊
    的頭像 發(fā)表于 10-25 16:25 ?665次閱讀