地址DMA_Streamx->NDTR=ndtr;//ndtr:数据传输量DMA_Streamx->CR=0;//先全部复位CR寄存器值DMA_Streamx->CR|=1<<6;//存储器到外设模式DMA_Streamx->CR|=0<<8;//非循环模式(即使用普通模式)DMA_Streamx->CR|=0<<9;//外设非增量模式DMA_Streamx->CR|=1<<10;//存储器增量模式DMA_Streamx->CR|=0<...
1.3、使用SPI DMA驱动LCD显示屏并移植LVGL V8.3 源码地址:https://gitee.com/MR_Wyf/hal-cubemx-rt-thread/tree/hal_rttNano_st7789_menu/ 或者关注公众号,后台回复“SPI DMA”,获取本章节源码 2、HAL库SPI DMA在CUBEMX中的配置 2.1、配置界面
__HAL_LINKDMA(spiHandle,hdmatx,hdma_spi1_tx); 继续来看下SPI DMA的接口: HAL_StatusTypeDefHAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size); HAL_StatusTypeDefHAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size); HAL_StatusTypeDefHAL...
配置 DMA 和 SPI 启动传输等待结束 恢复 SPI1 配置 结果1--失败 Debug 1. 对比外设寄存器 2. 经过...
在STM32F407上移植好了LVGL图形库,LCD屏幕型号是MSP3526,想换其他屏幕可以自己修改LCD的驱动程序,项目工程包含FreeRTOS版和裸机版。使用SPI+DMA驱动屏幕。 这款LCD屏分辨率为320x480,尺寸为3.5寸,LCD驱动芯片为ST7796,接口为SPI,电容触摸屏驱动芯片为FT6336U,接口为IIC。
stm32 spi速率过低; stm32 spi在无dma的情况对cpu资源开销大。 3.1 优化disp_flush 将原来每次只画一个点,改为填充一块区域,修改完后会发现fps值有所提高,大概fps为2-3,笔者spi速率92MHz。 static void disp_flush(lv_display_t * disp_drv, const lv_area_t * area, uint8_t * px_map) ...
DMA_ClearFlag(BSP_DMAy_Streamx, BSP_SPI_DMA_TX_FLAG); /* 清除通道传输完成标志 */ break;} }...
首先硬件 SPI 和 DMA 都是第一次写,有些细节问题多折腾了下。 然后是提到的 DMA 地址自增,有时候改方式了设置忘了改,或者 CubeMx 再生成一次给覆盖了。 C / C++ 本身的一些东西写错好几次,比如类示例的成员变量动态创建,传指针就出点问题之类。
为什么要学dma,给你们看看用dma 和不用dma的区别:红色为spi 刷屏 可以看得出来从上到下的变化。qq 表情用dma 是明显看不出来的 1256 0 01:54 App GT-HMI(国产LVGL)控件效果展示 463 0 02:06 App JC1060P470 LVGL v8速度展示 1106 0 03:33 App 笨叔总结的Linux DMA 4种用法之一 283 0 00:13 App...
2.添加spi的屏幕驱动 这里使用的是ili9488屏幕驱动芯片,使用SPI来通信,分辨率是320*480,能显示挺多东西,用来做点带屏幕的应用再合适不过了,要点亮这样的屏幕,首先需要在rtt中添加SPI驱动,并启用dma以加快画面的刷新速度,我这里用的是SPI2: 3.添加ili9488驱动和spi_lcd驱动框架: ...