- 打卡等级:偶尔看看I
- 打卡总天数:10
- 最近打卡:2025-12-15 07:56:11
已绑定手机
中级会员
- 积分
- 347
|
各位大佬早晨好,请教:
在硬件SPI+DMA驱动LCD12864(主控IC采用矽创公司ST7567),参考STC论坛的DMA核心代码:
void LCD_SendData(uint8_t *dat, uint16_t len)
{
lcd_cs1 = 0; //片选使能
memcpy(pu8SPIDMATxBuffer, dat, len); //将数据复制到DMA缓冲区
DMA_SPI_SetAmount(len - 1); //设置DMA发送字节数
DMA_SPI_MasterTrigger(); //触发SPI主机DMA
fSPIDMABusy = 1; //设置DMA传输忙标志
}
这里有疑问,假如长度len=1,那么 DMA_SPI_SetAmount(len - 1); //设置DMA发送字节数 就变成:
DMA_SPI_SetAmount(0); //设置DMA发送字节数
DMA是不是就不发送字节啦?但是我改成:DMA_SPI_SetAmount(len ); //设置DMA发送字节数
也没用,依旧是没波形!
void LCD_WR_CMD(uint8_t *cmd, uint16_t len)
{
while (fSPIDMABusy); //等待上一次传输完成
lcd_rs = 0; //写命令
LCD_SendData(cmd, len);
}
void LCD_WR_DAT(uint8_t *dat, uint16_t len)
{
while (fSPIDMABusy); //等待上一次传输完成
lcd_rs = 1; //写数据
LCD_SendData(dat, len);
}
接着在我的LCD程序中这样调用:
void transfer_command_lcd(u8 data1)
{
u8 cmd[1];
cmd[0] = data1; //给数组赋值
LCD_WR_CMD(cmd, 1);
}
void transfer_data_lcd(u8 data1)
{
u8 dat[1];
dat[0] = data1; //给数组赋值
LCD_WR_DAT(dat, 1);
}
编译,链接都OK,但屏幕没反应
软件驱动,或者硬件SPI都OK
有朋友知道是哪里的问题么?清多多指教,谢谢谢谢谢谢!
|
|