[技术问答] 请教一下HC32F460 LVGL 绘图很慢

[复制链接]
 楼主| masaike 发表于 2023-12-11 22:14 | 显示全部楼层 |阅读模式
本帖最后由 masaike 于 2023-12-12 10:13 编辑

2.png
1.png

SPI硬件延迟,好像无法关闭,就这样结束


项目用雅特力403A是可以跑40帧, 移植好后发现只能跑8帧,
lv_task_handler耗时100多毫秒, 浮点数已经打开,

搜了很久没有找到LVGL相关demo,

期待技术大佬指点一下

大概找到问题所在了, HC32 SPI DMA的波形 ,

微信图片_20231212092706.png

这是雅特力的波形

微信图片_20231212092733.png

这是SPI DMA配置,不知道有没有配置错误

/* Enable SPI3 clock */
    FCG_Fcg1PeriphClockCmd(FCG1_PERIPH_SPI3, ENABLE);
    /************************* Configure SPI3***************************/
    SPI_StructInit(&stcSpiInit);
    stcSpiInit.u32WireMode          = SPI_3_WIRE;
    stcSpiInit.u32TransMode         = SPI_SEND_ONLY;
    stcSpiInit.u32MasterSlave       = SPI_MASTER;
    stcSpiInit.u32SpiMode           = SPI_MD_0;
    stcSpiInit.u32BaudRatePrescaler = SPI_BR_CLK_DIV2;
    stcSpiInit.u32DataBits          = SPI_DATA_SIZE_8BIT;
    stcSpiInit.u32FirstBit          = SPI_FIRST_MSB;
    stcSpiInit.u32FrameLevel        = SPI_1_FRAME;

    (void)SPI_Init(CM_SPI3, &stcSpiInit);

    SPI_DelayStructInit(&stcSpiDelay);
    stcSpiDelay.u32IntervalDelay = SPI_INTERVAL_TIME_2SCK;
    stcSpiDelay.u32ReleaseDelay  = SPI_RELEASE_TIME_2SCK;
    stcSpiDelay.u32SetupDelay    = SPI_SETUP_TIME_2SCK;
    (void)SPI_DelayTimeConfig(CM_SPI3, &stcSpiDelay);

    /* Enable SPI3 */
    SPI_Cmd(CM_SPI3, ENABLE);

    /* DMA configuration */

    FCG_Fcg0PeriphClockCmd(FCG0_PERIPH_DMA1 | FCG0_PERIPH_AOS, ENABLE);

    (void)DMA_StructInit(&stcDmaInit);
    stcDmaInit.u32BlockSize   = 1UL;
    stcDmaInit.u32TransCount  = 0UL;
    stcDmaInit.u32DataWidth   = DMA_DATAWIDTH_8BIT;
    /* Configure TX */
    stcDmaInit.u32IntEn       = DMA_INT_ENABLE;
    stcDmaInit.u32SrcAddrInc  = DMA_SRC_ADDR_INC;
    stcDmaInit.u32DestAddrInc = DMA_DEST_ADDR_FIX;
    stcDmaInit.u32SrcAddr     = (uint32_t)NULL;
    stcDmaInit.u32DestAddr    = (uint32_t)NULL;

    (void)DMA_Init(CM_DMA1, DMA_CH0, &stcDmaInit);

    AOS_SetTriggerEventSrc(AOS_DMA1_0, EVT_SRC_SPI3_SPTI);

    /* IRQ sign-in */
    stcIrq.enIntSrc    = INT_SRC_DMA1_TC0;
    stcIrq.enIRQn      = INT038_IRQn;
    stcIrq.pfnCallback = &INT_SRC_DMA1_TC0_IrqCallback;
    (void)INTC_IrqSignIn(&stcIrq);
    /* NVIC config */
    NVIC_ClearPendingIRQ(INT038_IRQn);
    NVIC_SetPriority(INT038_IRQn, DDL_IRQ_PRIO_01);
    NVIC_EnableIRQ(INT038_IRQn);

    /* Enable DMA and channel */





weifeng90 发表于 2023-12-12 07:47 来自手机 | 显示全部楼层
主频是否一样?定时时基是否一样?
 楼主| masaike 发表于 2023-12-12 09:34 | 显示全部楼层
weifeng90 发表于 2023-12-12 07:47
主频是否一样?定时时基是否一样?

一样的, 问题在SPI DMA
cccp215 发表于 2023-12-18 11:35 | 显示全部楼层
    stcSpiDelay.u32IntervalDelay = SPI_INTERVAL_TIME_2SCK;
    stcSpiDelay.u32ReleaseDelay  = SPI_RELEASE_TIME_2SCK;
    stcSpiDelay.u32SetupDelay    = SPI_SETUP_TIME_2SCK;
这三行可以改成1SCK,节省3个SCK。
另外SPI可以超频,我试过ST7789的屏调到120M也能显示。
只是个新人- 发表于 2023-12-18 16:14 | 显示全部楼层
需要技术支持可以联系  V 13554256038
 楼主| masaike 发表于 2023-12-19 15:12 | 显示全部楼层
本帖最后由 masaike 于 2023-12-19 15:21 编辑
cccp215 发表于 2023-12-18 11:35
stcSpiDelay.u32IntervalDelay = SPI_INTERVAL_TIME_2SCK;
    stcSpiDelay.u32ReleaseDelay  = SPI_RE ...

感谢回复,已经去掉了,基本满足需求,  
154344621 发表于 2024-7-18 11:24 | 显示全部楼层
楼主求一份LVGL的例程模板
154344621 发表于 2024-7-18 11:25 | 显示全部楼层
可以共享下吗?
地瓜patch 发表于 2024-7-29 22:41 | 显示全部楼层
分频的问题概率比较大
suncat0504 发表于 2024-7-30 07:32 | 显示全部楼层
大佬出手,立马解决。厉害!佩服!
suncat0504 发表于 2024-7-30 07:33 | 显示全部楼层
改用并口屏,显示速度应该可以提高更快吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝
快速回复 返回顶部 返回列表