示例代码
DSPI刷屏测试
示例工程实现DSPI刷屏测试,定时刷新ST7789V屏幕,工程路径:SDK_Folder\projects\peripheral\dspi\app_dspi。该示例仅适用于GR5526。
示例工程流程图
DSPI传输初始化参数给屏幕,实现屏幕初始化。最后将显示数据定时传输到屏幕,实现定时刷新屏幕。
初始化参数
app_dspi_params_t dspi_params = {
.pin_cfg = {
.cs = {
.type = APP_IO_TYPE_GPIOB,
.mux = APP_IO_MUX_2,
.pin = APP_IO_PIN_4,
.pull = APP_IO_NOPULL,
.enable = APP_DSPI_PIN_ENABLE,
},
.clk = {
.type = APP_IO_TYPE_GPIOB,
.mux = APP_IO_MUX_2,
.pin = APP_IO_PIN_0,
.pull = APP_IO_NOPULL,
.enable = APP_DSPI_PIN_ENABLE,
},
.mosi = {
.type = APP_IO_TYPE_GPIOB,
.mux = APP_IO_MUX_2,
.pin = APP_IO_PIN_1,
.pull = APP_IO_NOPULL,
.enable = APP_DSPI_PIN_ENABLE,
},
.miso = {
.type = APP_IO_TYPE_GPIOB,
.mux = APP_IO_MUX_2,
.pin = APP_IO_PIN_2,
.pull = APP_IO_NOPULL,
.enable = APP_DSPI_PIN_ENABLE,
},
.dcx = {
.type = APP_IO_TYPE_GPIOB,
.mux = APP_IO_MUX_2,
.pin = APP_IO_PIN_3,
.pull = APP_IO_NOPULL,
.enable = APP_DSPI_PIN_ENABLE,
},
},
.dma_cfg.channel = DMA_Channel0,
.init = {
.data_size = DSPI_DATASIZE_08_BITS,
.baud_rate = DSPI_BAUD_RATE_2P1PCLK,
. Init. baud_rate = DSPI_PROT_MODE_3W1L,
},
};
- pin_cfg:DSPI引脚配置
包含片选引脚CS、时钟引脚CLK、主出从入引脚MOSI、主入从出引脚MISO、控制引脚DCX,配置IO类型、PIN脚、上下拉模式和复用成DSPI引脚的复用模式。
- Init:DSPI传输参数配置
- Init.data_size:数据传输位宽
- Init. baud_rate:DSPI波特率预分频器值,选择2分频DSPI_BAUD_RATE_2P1PCLK,DSPI时钟等于串行时钟fPCLK除以预分频器值
- Init. Init. baud_rate:DSPI模式选用DSPI_PROT_MODE_3W1L,即3线1 lane
重要函数
- 初始化DSPI模块
ret = app_dspi_init(¶ms_t, app_dspi_evt_handler)
- 配置DMA传输方式
ret = app_dspi_dma_init(¶ms_t)
- 传输初始化参数
app_dspi_dma_command_transmit_async(&g_cmd, (uint8_t *)s_data_8)
- 传输控制命令
app_dspi_dma_command_async(&g_cmd)
- 初始化屏幕显示区域
app_dspi_display_coordinates(DSPI_ST7789V_X_START, DSPI_ST7789V_X_END, DSPI_ST7789V_Y_START, DSPI_ST7789V_Y_END)
- 传输图像数据,刷新屏幕
app_dspi_display_write((uint8_t *)pixel, DSPI_POXEL_LEN * 2)
测试验证
- 硬件准备:LCD屏幕(型号:ST7789V)
- 测试步骤:
- 开发板连接LCD屏幕
- 下载运行程序,并打开串口调试助手查看打印日志
- 查看屏幕正常刷新显示,测试成功。