gegzj 发表于 2023-9-6 17:10:32

Hal库使用SPI配合DMA发送数据

      u16 color1,t=1;
        u32 num,num1;
        color1=color;
        num=(xend-xsta)*(yend-ysta)*4;
        LCD_Address_Set(xsta,ysta,xend-1,yend-1);//设置显示范围
        MYDMA_Config_Color();
        LCD_CS_Clr();
        SPI2->CR1|=1<<11;//设置SPI2 16位传输模式
        while(t)
        {
                if(num>65534)
                {
                        num-=65534;
                        num1=65534;
                }
                else
                {
                        t=0;
                        num1=num;
                }
                HAL_SPI_Transmit_DMA(&SPI2_Handler,(uint8_t *)color1,num1);
                while(1)
                {
                        if(__HAL_DMA_GET_FLAG(&SPI2TxDMA_Handler,DMA_FLAG_TC5))//等待通道5传输完成
                        {
                                __HAL_DMA_CLEAR_FLAG(&SPI2TxDMA_Handler,DMA_FLAG_TC5);//清除通道5传输完成标志
                                HAL_SPI_DMAStop(&SPI2_Handler);
                                break;
                        }
                }
        }
Hal库提供这个HAL_SPI_Transmit_DMA函数似乎只能发送8位的数据,但是我颜色代码是16位的,导致我LCD屏幕颜色错误,请教下各位,我应该怎么去发送16位的数据

eric2013 发表于 2023-9-6 17:13:33

HAL库的DMA方式用法姿势不对。

你应该在TxRxCplt回调里面设置标识,进入这里了才是完成了。
页: [1]
查看完整版本: Hal库使用SPI配合DMA发送数据