草庐IT

CubeMX-DMA

全部标签

GD32 SPI DMA收发

由于需求用到GD32SPI,故做相关实验记录分享,本实验为SPIDMA发送与接收 16bit数据,GD32相关配置如下GD32F30x系列DMA配置如下 SPIDMA发:使用SPI0,对应的DMA为0Channel2。 注意打开对应DMA与SPI相关时钟,DMAwrite使用时需要先拉低NSS,发送结束,拉高NSSvoidSPI0_config(void){ rcu_periph_clock_enable(RCU_GPIOA);rcu_periph_clock_enable(RCU_SPI0); rcu_periph_clock_enable(RCU_DMA0);/*SPI0GPIOconfi

完美解决HAL库HAL_UART_Transmit_DMA()不延时就发不了下一条的问题

问题原因在连续用HAL_UART_Transmit_DMA()函数的时候,会遇到只能发出第一条的问题,原因是DMA传输数据到串口这个外设太快了,传输完后程序并不会在该处停留,但是串口发送需要时间,运行到下一条HAL_UART_Transmit_DMA()函数的时候,上一条数据还没来得及发完,导致串处于BUZY(即HAL_UART_STATE_BUSY)状态如果串口处于BUZY状态,则HAL_UART_Transmit_DMA()不会进入发送程序,直接returnHAL_BUSY;这就导致了HAL_UART_Transmit_DMA()不能连续运行,目前网上主流的解决办法是延时一定时间或whil

FPGA基于AXI 1G/2.5G Ethernet Subsystem实现UDP通信DMA传输 提供工程源码和技术支持

目录1、前言2、我这里已有的UDP方案3、详细设计方案传统UDP网络通信方案本方案详细设计说明DMA和BRAMAXIS-FIFOUDP模块设计UDP模块FIFOAXI1G/2.5GEthernetSubsystem:输出4、vivado工程详解5、上板调试验证并演示注意事项6、福利:工程代码的获取1、前言目前网上的fpga实现udp基本生态如下:1:verilog编写的udp收发器,但不带ping功能,这样的代码功能正常也能用,但不带ping功能基本就是废物,在实际项目中不会用这样的代码,试想,多机互联,出现了问题,你的网卡都不带ping功能,连基本的问题排查机制都不具备,这样的代码谁敢用?2

STM32的HAL库开发系列 - 串口DMA接收

STM32的HAL库开发系列-串口DMA接收串口DMA接收函数:HAL_StatusTypeDefHAL_UART_Receive_DMA(UART_HandleTypeDef*huart,uint8_t*pData,uint16_tSize)串口空闲中断(IDLE):当DMA串口接收开始后,DMA通道会不断的将发送来的数据转移到主存,那么问题来了,该如何判断串口接收是否完成从而及时关闭DMA通道?如何知道接收到数据的长度?答案便是使用串口空闲中断。串口空闲中断,对应事件标志为IDLE。检测到串口空闲线路时,该位由硬件置1。如果USART_CR1寄存器中IDLEIE=1,则会生成中断。该位由软

AXI DMA IP核使用说明

文章目录1AXIDMAIP核结构图2AXIDMAIP接口1寄存器说明1MM2S寄存器2S2MM寄存器2S/G描述符3DMA多通道模式3AXIDMAIP核使用说明1时钟2复位3使用说明1直接DMA使用顺序2S/G模式3循环DMA模式4AXIDMAIP核使用配置AXIDMA提供内存和AXI4-Stream目标外设之间的高带宽直接内存访问。DMA除了配置为直接DMA模式外,还可以配置为scatter/gather(S/G)模式,S/G模式减轻CPU负担。为了掌握对DMA的使用方法,需要对DMAIP核有足够的了解。这篇文章主要对AXIDMAIP核的使用进行简单的说明,接下来详细论述,首先是AXIDMA

CubeMX使用FreeRTOS编程指南

文章目录CubeMX使用FreeRTOS编程指南一、开发前言1.1软件准备1.2开启FreeRTOS二、配置界面三、系统设置2.1调度内核设置2.2内存管理设置2.3钩子函数配置2.5任务运行追踪配置2.6协程配置2.7软件定时器配置2.8中断优先级配置三、内核裁剪四、创建任务与队列4.1CubeMX下任务创建与配置4.2CubeMX下队列的创建与配置五、创建定时器和信号量5.1CubeMX下定时器的创建和配置5.2CubeMX下信号量的创建和配置六、创建互斥量6.1CubeMX下互斥量的创建和配置七、创建事件标志组7.1CubeMX下事件的创建和配置八、用户常量九、任务通知十、系统内核配置C

CubeMX使用FreeRTOS编程指南

文章目录CubeMX使用FreeRTOS编程指南一、开发前言1.1软件准备1.2开启FreeRTOS二、配置界面三、系统设置2.1调度内核设置2.2内存管理设置2.3钩子函数配置2.5任务运行追踪配置2.6协程配置2.7软件定时器配置2.8中断优先级配置三、内核裁剪四、创建任务与队列4.1CubeMX下任务创建与配置4.2CubeMX下队列的创建与配置五、创建定时器和信号量5.1CubeMX下定时器的创建和配置5.2CubeMX下信号量的创建和配置六、创建互斥量6.1CubeMX下互斥量的创建和配置七、创建事件标志组7.1CubeMX下事件的创建和配置八、用户常量九、任务通知十、系统内核配置C

U8g2库的STM32硬件SPI(DMA)移植教程(HAL、OLED显示、四线SPI、DMA)

U8g2库的STM32硬件SPI(DMA)移植教程U8g2库的STM32硬件SPI移植教程(HAL、OLED显示、四线SPI)前言U8g2简介U8g2是什么U8g2支持的显示控制器U8g2的优势CubexMX的配置RCC配置外部高速晶振(精度更高)——HSE:SYS配置:Debug设置成SerialWire(否则可能导致芯片自锁):时钟树配置:SPI1配置半双工(全双工):作为OLED的通讯方式:(注意这里的配置)DMA配置:工程配置:U8g2移植准备U8g2库文件精简U8g2库文件去掉csrc文件夹中无用的驱动文件精简u8g2_d_setup.c(注意不是u8x8_setup.c)精简u8g

通过stm32cubemx配置DCMI驱动ov5640摄像头

打开stm32cubemx选择芯片选择外部时钟源选择debug方式配置dcmi 打开dma打开dcmi中断选择合适的io设置reset、pwdn、scl、sda引脚,注意scl和sda设置为开漏输出,之前参考别人的设置为推挽输出,导致一直没有成功,不知道什么原因 配置时钟配置项目最后生成代码系统初始化完成后调用以下代码开启dma传输    __HAL_DCMI_ENABLE_IT(&hdcmi,DCMI_IT_FRAME);     HAL_DCMI_Start_DMA(&hdcmi,DCMI_MODE_CONTINUOUS,(uint32_t)jpeg_buf,jpeg_buf_size/4

STM32-HAL库串口DMA空闲中断的正确使用方式+解析SBUS信号

STM32-HAL库串口DMA空闲中断的正确使用方式+解析SBUS信号一.问题描述二.方法一——使用HAL_UART_Receive_DMA三.方法二——使用HAL_UARTEx_ReceiveToIdle_DMA四.方法三——使用HAL_UARTEx_ReceiveToIdle_IT(不使用DMA)五.总结一.问题描述能够点进这篇文章的小伙伴肯定是对STM32串口DMA空闲中断接收数据感兴趣的啦,今天用这一功能实现串口解析航模遥控器sbus信号时,查阅了很多网友发布的文章(勤劳的搬运工~),包括自己之前写过一篇博客STM32_HAL库_CubeMx串口DMA通信(DMA发送+DMA空闲接收不