一、硬件环境:
1、NUCLEO-1476RG开发板
2、nordic PCA10028开发板
二、软件环境
1、在STM32CubeMX中配置SPI基本参数和DMA参数;
2、生成代码后,定义spi操作函数,如下:
/* spi dma完成标记*/
static uint8_t s_uSpi1DmaComplete = 1;
void drv_spi_dma_write_read(uint8_t *v_puSpiData,uint8_t *v_puSpiRecvData,uint16_t v_uSpiDataLen)
{
HAL_SPI_TransmitReceive_DMA(&hspi1,v_puSpiData,v_puSpiRecvData,v_uSpiDataLen);
/* 等待DMA完成 */
while(s_uSpi1DmaComplete == 0)
{
}
}
并复写HAL_SPI_TxRxCpltCallback函数
/* dma完成后的回调函数 */
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
{
/* DMA完成后 更新该标记 */
s_uSpi1DmaComplete = 1;
}
关键字:STM32L476RG SPI DMA
引用地址:
基于STM32L476RG的SPI DMA的调试
推荐阅读最新更新时间:2024-03-16 16:11
基于STM32H563 USART演示DMA链表功能
这里选用STM32H563Nucleo开发板,使用USART3外设演示DMA链表模式的实现过程。大致过程是这样的: STM32H563芯片上的USART3与板载STLINK的VCP相连,通过PC端串口助手软件先后发送3串字符给MCU,MCU的USART3通过DMA以链表模式依次接收并存到相应内存,同时在相应的调试界面的观察窗口加以显示。接收过程对应3个DMA接收节点,他们构成1个DMA接收队列。当MCU接收到3串字符后,也以DMA 链表模式依次发送3串字符到PC端的串口助手并显示出来。同样,USART3的DMA 发送也用到3个节点以组成1个DMA发送队列。 GPDMA1的2个通道CH0,CH1,配置在链表模式。其中CH0用于U
[单片机]
STM32 DMA串口发送模式配置及使用简单分享
赠人玫瑰,手有余香;很感谢网上其他楼主的分享;我这个贴子是关于STM32 DMA USART 发送模式的调试分享,我为什么要建这个帖子呢,因为我不想看到还有其他人跟我一样,为了调通DMA串口,而花上大半天的时间,这很不利于大家高效率的开发,网上的经验都是从头教到尾的,内容极多,对于有点小经验的人,或者是想很快达到目的的人,这个很不适合他们;我的这个很简单(本帖不适合不熟悉配置STM32串口的玩家),他只是说串口的DMA怎么配置,还有我用的是DMA1_通道4,因为我的是串口1的TX长话短说:直接po代码: DMA_InitTypeDef DMA_InitStruct; //DMA类型声明 RCC_AHBPeriphC
[单片机]
单片机学习笔记之--SPI通信基础
SPI协议是由摩托罗拉公司提出的通讯协议,中文名即为串行外设接口。这是一种全双工的高速通讯总线,可支持同时输入输出。 通讯引脚 SPI使用3条通讯总线和1条片选线。 MOSI:Master Output Slave Input,顾名思义,即主设备输出/从设备输入。数据从主机输出到从机,主机发送数据。 MISO:Master Iutput Slave Onput,主设备输入/从设备输出,数据由从机输出到主机,主机接收数据。 SCK:即时钟信号线,用于通讯同步。该信号由主机产生,其支持的最高通讯速率为fpclk/2,即所挂载总线速率的一半。如SPI2挂载在APB1总线上,则其最高速率为36MHz / 2 =
[单片机]
STM32F103 SPI接口9MHz时钟和18Mhz时钟的波形对比
最近工作上的原因使用了STM32F103V8T6这款CPU,用到了SPI接口来读取AD器件AD7685的数据。按该CPU的手册说明,该SPI接口最大的时钟频率为18MHz,即主时钟72MHz的4分频。抓取了两种时钟频率下SPI接口的波形,保留,待以后有时机细研究。 关于时钟的说明: 1.9MHz采32个AD值 2.9MHz采32个AD值中的1个进行放大观察 3.18MHz采32个AD值 4.18MHz采32个AD值
[单片机]
CAN、I2S、I2C、SPI、SSP总线简介
一、SPI总线说明 串行外围设备接口SPI(serial peripheral interface)总线技术是Motorola公司推出的一种同步串行接口,Motorola公司生产的绝大多数MCU(微控制器)都配有SPI硬件接口,如68系列MCU。SPI 用于CPU与各种外围器件进行全双工、同步串行通讯。SPI可以同时发出和接收串行数据。它只需四条线就可以完成MCU与各种外围器件的通讯,这四条线是:串行时钟线(CSK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、低电平有效从机选择线CS。这些外围器件可以是简单的TTL移位寄存器,复杂的LCD显示驱动器,A/D、D/A转换子系统或其他的MCU。当SP
[嵌入式]
基于LPC2103的SPI总线技术的应用
摘 要:介绍了一种基于SPI总线技术的LPC2103对LED数码管显示实现控制的方法。采用8位74HC595串并转换芯片驱动LED数码管。结合74HC595芯片的特点给出了SPI控制的驱动电路,描述了基于SPI总线主模式的74HC595芯片的数据传输过程,给出了相关应用程序流程图及软件实现。 关键词: SPI总线;主模式;LPC2103;74HC595 SPI( Serial Peripheral Interface) 总线是Motorola公司提出的一个同步串行外设接口, 允许MCU与各种外围器件以串行方式进行通信、数据交换。SPI可以同时发出和接收串行数据, 它只需4条线就可以完成MCU与各种外围器件的通信。一
[工业控制]
51单片机SPI总线的实现
//-----------------------函数声明,变量定义------------------------------------------------------ #include reg51.h #include intrins.h sbit SCK=P1^0; // 将p1.0口模拟时钟输出 sbit MOSI=P1^1; // 将p1.1口模拟主机输出 sbit MISO=P1^2; // 将p1.1口模拟主机输入 sbit SS1=P1^3; // 将p1.1口模拟片选 #define delayNOP(); {_nop_();_nop_();_nop_();_nop_();}; //----
[单片机]
SPI4.2总线应用和调试
SPI4.2总线(System Packet Interface,系统间数据包接口)是一种速度高达10 Gb/s的芯片间互连总线,主要应用于ATM信元传输、POS(Packet Over SONET/SDH,基于SONET/SDH的包传输)和10 Gb/s以太网等高端场合。特别在通信领域,很多高端处理器和网络处理器,如Intel公司的IXP2800、Cavium公司的多内核处理器CN58xx系列、NetLogic公司的XLR732、Broadcom的BCM1480,几乎都集成了SPI4.2接口,以提高芯片的吞吐能力,适应通信产业朝着LTE(长期演进)发展的需求。还有众多的物理层芯片,例如Cortina公司的CS1331,可以将SP
[模拟电子]