【经验】灵动MindSDK应用基础——SPI模块样例详解

2023-08-19 灵动MM32MCU公众号
微控制器,MM32,MM32F5270,MindMotion 微控制器,MM32,MM32F5270,MindMotion 微控制器,MM32,MM32F5270,MindMotion 微控制器,MM32,MM32F5270,MindMotion

MindSDK为MM32主流的微控制器,实现了一系列SPI驱动的样例工程。本文通过讲解 SPI 模块的样例工程,介绍 SPI 模块的功能和用法。关于 SPI 模块对应的驱动程序,以及 SPI 外设模块硬件的实现细节,可具体查阅 MindSDK 工程的源文件,以及 MM32 微控制器(例如MM32F5270)的用户手册。


样例工程

MindSDK 中为 SPI 驱动设计的样例工程包括:

  • 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 做主机的典型数据传输方式,包括:基础数据传输、SPI 使用 DMA 发送数据、SPI 使用 DMA 收发数据。另外,还有一些 SPI 板级通信的样例,通过将一块 SPI 做主机,另一块 SPI 做从机的方式进行一系列板对板的基础数据传输,主机样例与从机样例结合使用,包括:SPI做主机进行中断数据传输,SPI做主机进行轮询数据传输,SPI做从机进行中断数据传输(SPI从机引脚与SPI主机引脚相连进行数据传输)。


spi_master_basic

spi_master_basic 描述了 SPI 模块最基本的数据传输方式,轮询方式。在样例工程中,通过  SPI_InitMaster() 函数,配置 SPI 为主模式,选定一个 SPI 数据采样时序,为空闲时时钟线为低电平、下降沿时数据有效的 SPI_PolPha_Alt0 ,并指定传输数据宽度为 SPI_DataWidth_8b 、SPI 的波特率为 BOARD_LOOP_SPI_BAUDRATE ,选定 SPI 的传输方向为 SPI_XferMode_TxRx 。然后,通过 SPI_Enable() 函数启动 SPI,使 SPI 能够进行数据传输。


每当 SPI 发送缓冲区未满时,可进行数据发送,数据由 MOSI 引脚传出;当 SPI 接收缓冲区接收有效数据时,可读取有效的接收数据。


在最终运行程序时,需要将 SPI 的 MOSI 引脚与 MISO 引脚使用杜邦线相连,通过向 PC 机上的串口通信终端输入任意按键,使 SPI 进行 APP_SPI_BUFF_LEN 次数据发送并接收到数据,主循环对接收数据和发送数据进行验证,若存在验证失败数据,则可看到串口打印出错信息 spi loopback xfer error. app_spi_xfer_err_count =  ,若验证成功,则可看到串口打印 spi loopback xfer done. ,从而验证 SPI 做主机的数据轮询传输情况。


spi_master_tx_dma

spi_master_tx_dma 相较于 spi_master_basic 样例工程,实现通过 DMA 进行 SPI 的数据发送功能。


其实现原理,是在 spi_master_basic 的基础上,增加对于 DMA 的初始化,通过 DMA_InitChannel() 函数,选定所使用的 DMA 通道为 BOARD_SPI_TX_DMA_CHANNEL ,配置 DMA 数据搬运方向为存储器到外设 DMA_XferMode_MemoryToPeriph ,数据宽度为 DMA_XferWidth_8b ,通过 SPI_GetTxDataRegAddr() 函数获取外设地址并进行配置,设定存储器地址为 (uint32_t)app_spi_tx_buf ,外设地址自增模式为不自增 DMA_AddrIncMode_StayAfterXfer ,存储器地址自增模式为 DMA_AddrIncMode_IncAfterXfer。然后,启用选定 SPI 外设的 DMA 发送通道对应的 NVIC 中断。最后,通过 DMA_EnableChannelInterrupts() 函数,在 BOARD_SPI_TX_DMA_CHANNEL 通道使能 DMA_CHN_INT_XFER_DONE 中断,每次在 DMA_EnableChannel() 启动 DMA 数据传输后,DMA 传输完成时,会触发中断。


实际运行程序时,将 SPI 的 MOSI 引脚与 MISO 引脚使用杜邦线相连后,用户在串口调试终端中每次输入任意字符,程序均会调用一次 DMA_EnableChannel() 函数,启动 DMA 传输,在 SPI 进行一次 DMA 传输并完成后,DMA 输标志位`app_dma_xfer_done`将在中断处理函数中被设置为true,主程序循环等待,当标志位为 true 时,打印 spi tx dma xfer done. 到串口终端界面。


spi_master_xfer_dma

spi_master_xfer_dma 相较于 spi_master_tx_dma 样例工程,实现通过 DMA 进行 SPI 的数据收发功能。


其实现原理,是在 spi_master_tx_dma 的基础上,增加对于 SPI 使用 DMA 接收通道的初始化,选定使用的 SPI DMA 接收通道为 BOARD_SPI_RX_DMA_CHANNEL ,在初始化 DMA 发送通道后,继续使用 DMA_InitChannel() 函数初始化 DMA 接收通道,修改传输方向为 DMA_XferMode_PeriphToMemory ,设定存储器地址为 (uint32_t)app_spi_rx_buf ,通过 SPI_GetRxDataRegAddr() 函数获取外设地址并配置。然后启用选定 SPI 外设的 DMA 接收通道对应的 NVIC 中断。最后,在 BOARD_SPI_RX_DMA_CHANNEL 通道使能 DMA_CHN_INT_XFER_DONE 中断,每次在 DMA_EnableChannel() 启动 DMA 数据传输后,当 DMA 传输完成,会触发对应通道的中断。


实际运行时,将 SPI 的 MOSI 引脚与 MISO 引脚使用杜邦线相连后,用户在串口调试终端中每次输入任意字符,程序均会调用一次 DMA_EnableChannel() 函数,启动 DMA 的发送与接收通道,在 SPI 进行一次 DMA 发送并完成后,DMA 发送完成标志位 app_dma_tx_done 将在发送通道所对应的中断处理函数中被设置为 true,再进行 SPI 的 DMA 接收操作,DMA 接收数据完成后,DMA 接收完成标志位 app_dma_rx_done 将在接收通道所对应的中断处理函数中被设置为 true,主程序循环等待,当发送完成标志位为 true 时,打印 spi tx dma done. 到串口终端界面,当接收完成标志位未 true 时,打印 spi rx dma done with data: 以及接收数据到串口终端界面。


spi_master_b2b_interrupt

spi_master_b2b_interrupt 实现的是一个使用 SPI 主模式中断传输的样例工程,在主从机的从属关系中做主机,需与从机结合使用。


其实现原理,是在 spi_master_basic 的基础上,增加 SPI 传输所使用的结构体,通过 SPI_EnableInterrupts() 函数使能发送完成中断 SPI_INT_TX_DONE 与接收完成中断 SPI_INT_RX_DONE 中断,当发送或接收数据完成时,产生对应中断,在中断处理函数中,传输次数达到所设定的 rx_idx 或 tx_idx ,将通过 SPI_EnableInterrupts() 函数关闭对应的接收完成中断或发送完成中断,接收完成后调用 spi_rx_done_callback() 回调函数,并将全局标志位 app_spi_xfer_flag 置为true。


实际运行此程序时,需令一块开发板下载此样例工程,另一块开发板下载 spi_slave_b2b_interrupt 样例工程,使用杜邦线连接两开发板的 MOSI、MISO、NSS、SCK 引脚,通过串口终端界面输入任意按键,进行 SPI 的数据收发,串口终端打印发送数据与接收数据。


spi_master_b2b_polling

spi_master_b2b_polling 实现的是一个使用 SPI 主模式轮询传输的样例工程,在主从机的从属关系中做主机,需与从机结合使用。


该实现原理与 spi_master_basic 基本相同,通过 while 循环等待当前达到发送或接收数据所需的传输条件,达到后进行数据收发,设定发送 APP_SPI_BUF_LEN 个数据并接收。


实际运行此程序时,需令一块开发板下载此样例工程,另一块开发板下载 spi_slave_b2b_interrupt 样例工程,使用杜邦线连接两开发板的 MOSI、MISO、NSS、SCK 引脚,通过串口终端界面输入任意按键,进行 SPI 的数据收发,串口终端打印发送数据与接收数据。


spi_slave_b2b_interrupt

spi_slave_b2b_interrupt 实现的是一个使用 SPI 从模式中断的样例工程,在主从机的从属关系中做从机,需与主机结合使用。


在样例工程中,通过 SPI_InitSlave() 函数配置 SPI 为从模式,设置传输方向为 SPI_XferMode_TxRx ,SPI 从机的数据采样时序需要与主机的数据采样时序配置相同,为 SPI_PolPha_Alt0 ,设定数据宽度为 SPI_DataWidth_8b 。通过 SPI_EnableInterrupts() 函数使能 SPI_INT_RX_DONE 中断,并启用选定 SPI 外设对应的 NVIC 中断。最后,启动 SPI,SPI 作为从机,等待主机的命令。当 SPI 接收完成数据后,产生接收完成中断,并执行中断处理函数,在中断处理函数中将已接收的数据发送出去。


在最终运行程序时,需令一块开发板下载此样例工程,另一块开发板下载 spi_master_b2b_polling 样例工程或 spi_master_b2b_interrupt 样例工程,使用杜邦线连接两开发板的 MOSI、MISO、NSS、SCK 引脚,在 spi_master_b2b_xxx 工程中对应的串口终端界面下输入任何字符,在 spi_slave_b2b_interrupt 工程中对应的串口终端界面中可以看到对应的内容。

授权代理商:世强先进(深圳)科技股份有限公司
技术资料,数据手册,3D模型库,原理图,PCB封装文件,选型指南来源平台:世强硬创平台www.sekorm.com
现货商城,价格查询,交期查询,订货,现货采购,在线购买,样品申请渠道:世强硬创平台电子商城www.sekorm.com/supply/
概念,方案,设计,选型,BOM优化,FAE技术支持,样品,加工定制,测试,量产供应服务提供:世强硬创平台www.sekorm.com
集成电路,电子元件,电子材料,电气自动化,电机,仪器全品类供应:世强硬创平台www.sekorm.com
  • +1 赞 0
  • 收藏
  • 评论 0

本文由ll转载自灵动MM32MCU公众号,原文标题为:灵动微课堂 (第267讲)|MindSDK应用基础——SPI模块样例,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

评论

   |   

提交评论

全部评论(0

暂无评论

相关推荐

【经验】灵动微电子MM32F0160微控制器开源项目:如何实现一套低成本带RGB灯效的机械键盘

灵动的软件与系统工程SE团队,基于带有 USB 外设模块的 MM32F0160 微控制器,实现了一套低成本带RGB灯效的机械键盘。这里将设计机械键盘的全过程开源出来,感兴趣的开发者,可以向灵动申请 MM32F0160 微控制器的样片,复刻一把自己专属的机械键盘,也可以继续进行二次开发,实现更加有趣的作品。

设计经验    发布时间 : 2023-07-01

【经验】单独下载可执行文件到灵动MM32F5系列微控制器的几种简易方法

本文将以下载MicroPython固件文件到灵动MM32F5微控制器为例,总结了几种简单易用的方法,专门针对使用DAP-Link调试器的情况,通过常用图形界面工具,实现单独下载可执行文件的功能。

设计经验    发布时间 : 2023-06-21

【经验】如何验证不同Flash对灵动微微控制器执行程序性能的影响

本文通过在QSPI Flash,片内Flash 与片内SRAM中分别运行测试工程Arm CMSIS-DSP FFT、Mbed-TLS RSA1024与Helix MP3 Decoder,获取微控制器性能数据,从而对比在不同Flash位置的执行速度的差异。

设计经验    发布时间 : 2023-07-01

MM32F0010 32-bit Microcontroller Based on Arm®Cortex®-M0 Data Sheet

型号- MM32F0010A1TV,MM32F0010A6TV,MM32F0010,MM32 MODEL,MM32F0010A1NV,MM32F0010A1T,MM32,MM32F0010A6T,MM32F0010A1N

数据手册  -  MINDMOTION  - Rev 1.12  - 2023/04/18 PDF 英文 下载

基于灵动MM32F0130微控制器的智能插排方案,实现远程开关控制、定时开关、随时了解家电设备的使用状况

智能插座又可以称为WIFI插座,在普通插座的功能基础上延伸了许多功能,如防雷击,防短路,防过载,防漏电,配合智能手机的APP应用,可以实现远程开关控制、定时开关、随时了解家电设备的使用状况。基于灵动MM32F0130微控制器的插排,具有以下特点:-内置Timer进行解码红外输入-通过串口与云端连接,进行远程控制,以及电量监控等-通过I2C与计量芯片通讯,进行异常检测,过流,过/欠压等保护

应用方案    发布时间 : 2024-03-13

MM32F0140 基于 Arm® Cortex®-M0 内核的 32 位微控制器数据手册

型号- MM32F0141B1T,MM32F0141C1T,MM32F0144C4PV,MM32F0144C4QV,MM32F0144C1TV,MM32F0144C4P,MM32F0141B6P,MM32F0144C3N,MM32F0144C4N,MM32F0144C6P,MM32F0140,MM32F0144C6PV,MM32F0144C3NV,MM32F0144C1T,MM32F0141B4Q,MM32F0141C4P,MM32F0141C4Q,MM32F0141C4N,MM32F0141C6P,MM32F0141B3N,MM32F0144C4Q,MM32F0141B4P,MM32F0141C3N

数据手册  -  MINDMOTION  - Revision: 1.08  - 2023/09/18 PDF 中文 下载 查看更多版本

MM32G0001 基于 Arm® Cortex®-M0 内核的 32 位微控制器数据手册

型号- MM32G0001A1T,MM32G0001A6T1V,MM32G0001,MM32G0001A1NV,MM32G0001A6TV,MM32G0001A6T,MM32G0001A6T1,MM32G0001A1TV,MM32G0001A1N

数据手册  -  MINDMOTION  - Revision: 1.1  - 2023/7/30 PDF 中文 下载

MM32F0160 基于 Arm® Cortex®-M0 内核的 32 位微控制器数据手册

型号- MM32F0163D4QV,MM32F0162DAP,MM32F0163DAP,MM32F0163D7PV,MM32F0163D6PV,MM32F0160,MM32F0162D6P,MM32F0163D6P,MM32F0162D7P,MM32F0163D7P,MM32F0164D3N,MM32F0161D3N,MM32F0162D4Q,MM32F0163D4Q

数据手册  -  MINDMOTION  - Revision: 1.1  - 2023/7/4 PDF 中文 下载 查看更多版本

MM32SPIN0280微控制器精准驱动电动自行车的智能核心

MM32SPIN0280微控制器作为电动自行车的主控单元,提供精确的动力控制、电助动与电驱动功能,同时确保骑行安全,满足现代城市出行的需求

产品    发布时间 : 2024-05-28

基于微控制器MM32F3270的智能监护仪,实现精准监测与高效护理

MM32F3270微控制器为监护仪提供了从信号采集到数字处理的全方位解决方案,确保了医疗监测的高精度和高效率,助力提高护理工作的智能化水平。

应用方案    发布时间 : 2024-06-08

MM32SPIN0x 32-bit Micro controller based on ARM Cortex M0 Data sheet

型号- MM32SPIN07PF,MM32SPIN0X,MM32SPIN06NT,MM32SPIN05PT,MM32SPIN05TW,MM32SPIN05NTX,MM32,MM32SPIN06,MM32SPIN05

数据手册  -  MINDMOTION  - Ver: 1.04  - 2019/3/11 PDF 英文 下载

MM32F5270 32-bit Microcontrollers based on Arm China STAR-MC1 Data Sheet

型号- MM32F5277E8PV,MM32F5277E7PV,MM32F5277E9PV,MM32F5277,MM32F5270

数据手册  -  MINDMOTION  - Revision: 0.9  - 2022/09/19 PDF 英文 下载

MM32系列微控制器优化血氧仪性能与用户体验

MM32微控制器的集成LCD控制器和低功耗特性,为便携式血氧仪带来了更优化的性能和更持久的电池寿命,改善了用户的测量体验。

产品    发布时间 : 2024-06-05

MM32F103xx 32 位基于 ARM® Cortex® M3 核心的微控制器数据手册

型号- MM32F103XX,MM32F103KET,MM32F103KEU,MM32F103KCT,MM32F103VET,MM32F103VCT,MM32F103RET,MM32F103RCT,MM32F103CCT,MM32F103KCU,MM32F103CET,MM32F103RCT6XXX

数据手册  -  MINDMOTION  - 版本:1.19_o;Ver1.19;Rev1.19  - 2020/11/27 PDF 中文 下载 查看更多版本

【产品】芯录微半导体烧录器AP8000支持灵动微电子32位微控制器MM32F3273G9P

芯录微半导体发布的烧录软件更新及新增支持的芯片型号列表,其中灵动微电子MindMotion的32位微控制器MM32F3273G9P已经被芯录微的通用烧录平台AP8000所支持。

产品    发布时间 : 2023-08-26

展开更多

电子商城

查看更多

品牌:MindMotion

品类:电机专用SOC

价格:¥8.2805

现货: 295

品牌:MindMotion

品类:高性能MCU

价格:

现货: 0

品牌:MindMotion

品类:32位MCU

价格:¥7.7125

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥4.2617

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥3.7500

现货: 250

品牌:MindMotion

品类:电机专用MCU

价格:¥4.9500

现货: 250

品牌:MindMotion

品类:32位MCU

价格:¥1.6125

现货: 72

品牌:MindMotion

品类:电机专用MCU

价格:¥2.5706

现货: 25

品牌:MindMotion

品类:32位MCU

价格:

现货: 20

品牌:MindMotion

品类:32位MCU

价格:¥0.7000

现货: 12

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

现货市场

查看更多

品牌:MindMotion

品类:32位MCU

价格:¥5.9400

现货:19,996

品牌:MindMotion

品类:32位MCU

价格:¥2.3800

现货:6,427

品牌:RENESAS

品类:microcontroller

价格:¥2.8532

现货:188,410

品牌:Advanced Digital Chips

品类:MCU

价格:¥6.6000

现货:100,000

品牌:RENESAS

品类:microcontroller

价格:¥32.9564

现货:40,179

品牌:兆易创新

品类:IC

价格:¥4.8932

现货:27,000

品牌:国民技术

品类:微控制器

价格:¥18.7261

现货:25,138

品牌:兆易创新

品类:IC

价格:¥20.2717

现货:12,420

品牌:中科芯

品类:32位微控制器

价格:¥8.5000

现货:10,000

品牌:中科芯

品类:32位微控制器

价格:¥5.0000

现货:10,000

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

品牌:

品类:

价格:

现货:

服务

查看更多

压力传感器定制

可定制板装式压力传感器支持产品量程从5inch水柱到100 psi气压;数字输出压力传感器压力范围0.5~60inH2O,温度补偿范围-20~85ºС;模拟和数字低压传感器可以直接与微控制器通信,具备多种小型SIP和DIP封装可选择。

提交需求>

液冷板/液冷机箱定制

定制水冷板尺寸30*30mm~1000*1000 mm,厚度1mm~50mm,散热能力最高50KW,承压可达3MPA;液冷机箱散热能力达500W~100KW。项目单次采购额需满足1万元以上,或年需求5万元以上。

提交需求>

查看更多

授权代理品牌:接插件及结构件

查看更多

授权代理品牌:部件、组件及配件

查看更多

授权代理品牌:电源及模块

查看更多

授权代理品牌:电子材料

查看更多

授权代理品牌:仪器仪表及测试配组件

查看更多

授权代理品牌:电工工具及材料

查看更多

授权代理品牌:机械电子元件

查看更多

授权代理品牌:加工与定制

世强和原厂的技术专家将在一个工作日内解答,帮助您快速完成研发及采购。
我要提问

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

研发客服
商务客服
服务热线

联系我们

954668/400-830-1766(工作日 9:00-18:00)

service@sekorm.com

投诉与建议

E-mail:claim@sekorm.com

商务合作

E-mail:contact@sekorm.com

收藏
收藏当前页面