你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f072 使用cubemx生成spidma方式控制彩屏

[复制链接]
阿莫西林 提问时间:2017-8-2 13:54 /
不采用dma,HAL_SPI_Transmit刷屏正常。使用dma方式,使用HAL_SPI_Transmit_DMA每次发一个点16位数据,颜色不对。使用HAL_SPI_Transmit_DMA单色刷整屏,没颜色。
dma设置如下:
    hdma_spi1_tx.Instance = DMA1_Channel3;
    hdma_spi1_tx.Init.Direction = DMA_MEMORY_TO_PERIPH;
    hdma_spi1_tx.Init.PeriphInc = DMA_PINC_DISABLE;
    hdma_spi1_tx.Init.MemInc = DMA_MINC_DISABLE;
    hdma_spi1_tx.Init.PeriphDataAlignment = DMA_PDATAALIGN_HALFWORD;
    hdma_spi1_tx.Init.MemDataAlignment = DMA_PDATAALIGN_HALFWORD;
    hdma_spi1_tx.Init.Mode = DMA_NORMAL;
    hdma_spi1_tx.Init.Priority = DMA_PRIORITY_LOW;
        
    if (HAL_DMA_Init(&hdma_spi1_tx) != HAL_OK)
    {
      _Error_Handler(__FILE__, __LINE__);
    }

收藏 评论3 发布时间:2017-8-2 13:54

举报

3个回答
阿莫西林 回答时间:2017-8-2 20:43:30
上面问题已解决。但是有个疑问,在使用HAL_SPI_Transmit_DMA(&hspi1, (uint8_t *)&Colour, i);后需要等状态位while(HAL_DMA_STATE_READY != HAL_DMA_GetState(&hdma_spi1_tx));这样才正常。如果不等待,即使我延时1s发下一次数据,spi仍然出错。如果一定要cpu等待发送完毕,那和使用轮询方式发送没有区别啊!!!如果是这样的话,我为什么要使用dma,求指点
Ericezhang5 回答时间:2017-9-5 13:42:56
这个片子没用过,上次帮人家做工程时用过F1和F4驱动串口屏,主芯片是ILI9341的,用DMA方式没什么问题,效果还不错,F4驱动并口屏一秒刷点可以达到1200万个左右,串口屏试了下,可以达到240万个点,是并口屏的1/5,一般用用也够了。
banner 回答时间:2022-6-13 21:29:08
hi  请问楼主能给发一份源码吗,我先用HAL_SPI_Transmit 能正常发送16位数据   ,但是HAL_SPI_Transmit_DMA 一直是失败的,gdb也定位不到

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版