打印
[STM32F1]

STM32F103 ILI9341 SPI DMA项目文件

[复制链接]
532|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
原来我发表过一个SPI DMA的帖子,透露了一下实现SPI DMA用在emWin下的技术细节

我想:需要此功能的人,大有人在,所以今天有时间,另外发一个项目帖子,这样一来,他们就可以直接

借用了,愿给他们节省一些宝贵的时间。

特别提醒的是:
  我原来的项目是用的GUI是:emWin,项目文件很大,不利于理解。

下面我发的 littleVgl 简单测试项目文件,对于你们想采用SPI DMA的功能来说,足够用的了!

1、请看LCD 接口说明:

/*----------------------------------------------------------------------------
*       Simple STM32F103 using littleVgl:                           *

*       ILI9341 display over SPI with DMA,                  *
*       XPT2046 resistive touch panel                                 *
*                                                                                  *
*       ILI9341 SPI1 CONNECTIONS:                                 *
*       -------------------------------                                       *
*       TFT_RESET                   PC1                                  *
*       TFT_DC                        PC2                                  *
*       TFT_CS                        PC0                                   *
*       TFT_SCK                      PA5                                   *
*       TFT_MISO                    PA6                                   *
*       TFT_MOSI                    PA7                                   *
*                                                                                  *
*       XPT2046 SPI2 CONNECTIONS:                          *
*       --------------------------------                                      *
*       TOUCH_CLK                   PB13                               *
*       TOUCH_DIN (MOSI)        PB15                               *
*       TOUCH_DO (MISO)         PB14                                *
*       TOUCH_CS                     PB12                                *            
*       TOUCH_IRQ                   PA0                                 *
*                                                                                  *
*                                                                                  *
*                                                                                  *
*-------------------------------------------------------------------------*/

2、项目文件: GUI: littleVgl


   lvgl_STM32F103_ILI9341_SPIDMA.rar (6.07 MB)


//****************项目内容说明如下**************//

3、请你们自己看 ILI9341\core.c文件的内容,使用的就是:SPI_DMA
//重要函数:
void Send_DMA_Data16(uint16_t* buff, uint16_t dataSize)
{
    LL_SPI_SetDataWidth(SPI1, LL_SPI_DATAWIDTH_16BIT);

    LL_SPI_Disable(SPI1);
    LL_DMA_DisableChannel(DMA1, LL_DMA_CHANNEL_3);
    LL_DMA_ClearFlag_TC3(DMA1);
    LL_DMA_ClearFlag_TE3(DMA1);
    LL_SPI_EnableDMAReq_TX(SPI1);
    LL_DMA_EnableIT_TC(DMA1, LL_DMA_CHANNEL_3);
    LL_DMA_EnableIT_TE(DMA1, LL_DMA_CHANNEL_3);
    LL_DMA_DisableChannel(DMA1, LL_DMA_CHANNEL_3);
    LL_DMA_SetDataLength(DMA1, LL_DMA_CHANNEL_3, dataSize);
    LL_DMA_ConfigAddresses(DMA1, LL_DMA_CHANNEL_3, (uint32_t)buff, LL_SPI_DMA_GetRegAddr(SPI1),
    LL_DMA_GetDataTransferDirection(DMA1, LL_DMA_CHANNEL_3));
    LL_DMA_EnableChannel(DMA1, LL_DMA_CHANNEL_3);
    LL_SPI_Enable(SPI1);
    while (!flag_DMA_CH3_bsy) {
    }
    flag_DMA_CH3_bsy = 0;

    LL_DMA_DisableChannel(DMA1, LL_DMA_CHANNEL_3);
    LL_SPI_Disable(SPI1);
    LL_DMA_ClearFlag_TC3(DMA1);
    LL_DMA_ClearFlag_TE3(DMA1);
    LL_SPI_DisableDMAReq_TX(SPI1);
    LL_DMA_DisableIT_TC(DMA1, LL_DMA_CHANNEL_3);
    LL_DMA_DisableIT_TE(DMA1, LL_DMA_CHANNEL_3);
    LL_SPI_Enable(SPI1);  
    LL_SPI_SetDataWidth(SPI1, LL_SPI_DATAWIDTH_8BIT);
}




void ILI9341_fillRect(uint16_t x1, uint16_t y1, uint16_t w, uint16_t h, uint16_t color)
{   
    uint16_t tbuf[w];

    TFT_CS_RESET;
    ILI9341_setAddressWindow(x1, y1, (uint16_t) (x1 + w - 1), (uint16_t) (y1 + h - 1));
    TFT_DC_D
    for (int x = w ; x >= 0; x--)
            tbuf[x] = color;
    for (y1 = h; y1 > 0; y1--)
        Send_DMA_Data16(tbuf,w);

    TFT_CS_SET;
}

4、DMA传输,在传输大量数据的情况下,就显示出它的巨大优势了!
    === 填充矩形功能,就是使用大量数据的情况,
    === 其它的一般功能,就采用传统的操作就可以了。


5、在项目中,还有SPI传输,采用可变的8bit, 16bit,更能体现执行效率


6、项目运行测试界面如下:





使用特权

评论回复
沙发
heimaojingzhang| | 2021-2-3 23:08 | 只看该作者
这是触摸屏吗

使用特权

评论回复
板凳
keaibukelian| | 2021-2-3 23:10 | 只看该作者
大量数据会不会产生丢包的现象呢

使用特权

评论回复
地板
labasi| | 2021-2-3 23:13 | 只看该作者
非常感谢楼主的附件

使用特权

评论回复
5
paotangsan| | 2021-2-3 23:16 | 只看该作者
同普通模式的传输效率上能差多少啊

使用特权

评论回复
6
renzheshengui| | 2021-2-3 23:20 | 只看该作者
可以拿来借用一下 感谢楼主

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

26

主题

449

帖子

42

粉丝