chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

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

靈動(dòng)MM32MCU ? 來源:靈動(dòng)MM32MCU ? 2023-08-10 17:14 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

引言

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

樣例工程

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

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 做主機(jī)的典型數(shù)據(jù)傳輸方式,包括:基礎(chǔ)數(shù)據(jù)傳輸、SPI 使用 DMA 發(fā)送數(shù)據(jù)、SPI 使用 DMA 收發(fā)數(shù)據(jù)。另外,還有一些 SPI 板級(jí)通信的樣例,通過將一塊 SPI 做主機(jī),另一塊 SPI 做從機(jī)的方式進(jìn)行一系列板對(duì)板的基礎(chǔ)數(shù)據(jù)傳輸,主機(jī)樣例與從機(jī)樣例結(jié)合使用,包括:SPI做主機(jī)進(jìn)行中斷數(shù)據(jù)傳輸,SPI做主機(jī)進(jìn)行輪詢數(shù)據(jù)傳輸,SPI做從機(jī)進(jìn)行中斷數(shù)據(jù)傳輸(SPI從機(jī)引腳與SPI主機(jī)引腳相連進(jìn)行數(shù)據(jù)傳輸)。

spi_master_basic

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

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

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

spi_master_tx_dma

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

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

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

spi_master_xfer_dma

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

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

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

spi_master_b2b_interrupt

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

其實(shí)現(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ù)完成時(shí),產(chǎn)生對(duì)應(yīng)中斷,在中斷處理函數(shù)中,傳輸次數(shù)達(dá)到所設(shè)定的 rx_idx 或 tx_idx ,將通過 SPI_EnableInterrupts() 函數(shù)關(guān)閉對(duì)應(yīng)的接收完成中斷或發(fā)送完成中斷,接收完成后調(diào)用 spi_rx_done_callback() 回調(diào)函數(shù),并將全局標(biāo)志位 app_spi_xfer_flag 置為true。

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

spi_master_b2b_polling

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

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

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

spi_slave_b2b_interrupt

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

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

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






審核編輯:劉清

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

    關(guān)注

    48

    文章

    8246

    瀏覽量

    162153
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    39

    文章

    7713

    瀏覽量

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

    關(guān)注

    9

    文章

    2073

    瀏覽量

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

    關(guān)注

    17

    文章

    1865

    瀏覽量

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

    關(guān)注

    3

    文章

    577

    瀏覽量

    105294

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

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

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    對(duì)SPI、IIC、IIS、UART、SDIO、GPIO 簡介

    對(duì)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自動(dòng)發(fā)送模塊設(shè)計(jì)

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

    fireflyAIO-3288C主板SPI接口簡介

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

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

    針對(duì)OLED模塊應(yīng)用中8位數(shù)據(jù)并行接口占用單片機(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)用詳細(xì)說明

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

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

    SPI Nand Flash簡介

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

    SPI通信簡介

    目錄(?)[-]SPI簡介SPI特點(diǎn)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)是由靈動(dòng)官方的軟件團(tuán)隊(duì)開發(fā)和維護(hù)的基于靈動(dòng)微控制器的軟件開發(fā)平臺(tái)。
    的頭像 發(fā)表于 08-12 09:10 ?2415次閱讀

    31107液晶C語言編程

    31107液晶 C語言編程
    發(fā)表于 10-17 15:17 ?4次下載

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

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

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

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

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

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

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

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

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

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