STM32H750VBT6 DMA驱动TFT-LCD(ST7789V)
1、查阅ST7789V手册
(1)显示属性
(2)像素格式
LCD 驱动部分:
const unsigned char ord[]={0x36,0x3A,0xB2,0xB7,0xBB,0xC0,0xC2,0xC3,0xC4,0xC6,0xD0,0xE0,0xE1,0x2A,0x2B,0x29,0x2C};
const unsigned char dat[]={0x20,
0x65,
0x0C,0x0C,0x00,0x33,0x33,
0x72,
0x3D,
0x2C,
0x01,
0x12,
0x20,
0x0F,
0xA4,0xA1, 0xD0,0x04,0x0D,0x11,0x13,0x2B,0x3F,0x54,0x4C,0x18,0x0D,0x0B,0x1F,0x23, 0xD0,0x04,0x0C,0x11,0x13,0x2C,0x3F,0x44,0x51,0x2F,0x1F,0x1F,0x20,0x23,
0x00,0x00,0x00,0x86,
0x00,0x00,0x00,0xEF
};//数据
const unsigned char ofs[]={0,1,2,7,8,9,10,11,12,13,14,16,30,44,48,0,0};//数据偏移位置
const unsigned char num[]={1,1,5,1,1,1,1,1,1,1,2,14,14,4,4,0,0};//连续发送个数
inline static void ST7789_Config(unsigned char order,unsigned char* pData,unsigned char Size)
{
unsigned short i=0;
//
SPI4->CR2 =1;
SPI4->CR1 = SPI_CR1_SPE;
SPI4->TXDR=order;
SPI4->CR1|=SPI_CR1_CSTART;
//发送命令
IO_Write(DCX,cmd);
while(!(SPI4->SR & SPI_SR_TXC));
SPI4->IFCR |= SPI_IFCR_EOTC+SPI_IFCR_TXTFC;
SPI4->CR1 &=~ SPI_CR1_SPE;
if(Size>4)
{
xplay->NDTR=Size;
xplay->M0AR=(unsigned int)pData;
SPI4->CR2 = Size;
SPI4->CR1 = SPI_CR1_SPE;
SPI4->CR1|=SPI_CR1_CSTART;
IO_Write(DCX,data);//发送数据
xplay->CR |= EN;
//此处经验证其他非阻塞方案会影响后续初始化,此处使用堵塞等待发送完毕,此处使能了dma的FIFO,不能判断DMA是否完成了发送
while(SPI4->CR1 & SPI_CR1_CSTART);
DMA1->LIFCR|=(DMA1->LISR & 0x3F0000);
}
else if(Size>0)
{
SPI4->CR2 = Size;
SPI4->CR1 = SPI_CR1_SPE;
SPI4->CR1|= SPI_CR1_CSTART;
SPI4->TXDR=*(unsigned int*)pData;
IO_Write(DCX,data);//发送数据
while(!(SPI4->SR & SPI_SR_TXC));
//while(SPI4->CR1 & SPI_CR1_CSTART);
}
SPI4->CR1 &=~ SPI_CR1_SPE;
SPI4->IFCR |= SPI_IFCR_EOTC+SPI_IFCR_TXTFC;
//IO_Write(DCX,cmd);
}
void ST7789_Init(void)
{
unsigned int sCR = 0;//config spi4 dma cr
xplay->FCR = DMA_SxFCR_DMDIS|LL_DMA_FIFOTHRESHOLD_1_4;
xplay->PAR= (unsigned int)&(SPI4->TXDR);
((SxCR*)&sCR)->PL=LoW;
((SxCR*)&sCR)->MINC=EN;
((SxCR*)&sCR)->PINC=DIS;
((SxCR*)&sCR)->CIRC=DIS;
((SxCR*)&sCR)->DIR=M2P;
((SxCR*)&sCR)->MBST=FOUR;
((SxCR*)&sCR)->PBST=SINGLE;
xplay->CR = sCR;
//发送softreset
ST7789_Config(0x01,NULL,0);//软件复位
//需要延时130ms,由系统自动调用后续任务ST7789_SlpOut
}
__USED void ST7789_MoreInit(void)
{
//在主循环中完成后续初始化
unsigned char i=0,*loc=(unsigned char*)dat;
for(i=0;i<sizeof(ord);i++)
{
ST7789_Config(ord[i],loc+ofs[i],num[i]);
}
xplay->NDTR=1000;
xplay->M0AR=(unsigned int)gram;
SPI4->CR2 = 1000;
SPI4->CR1 = SPI_CR1_SPE;
SPI4->CR1|= SPI_CR1_CSTART;
SCB_CleanInvalidateDCache_by_Addr((unsigned int*)gram,sizeof(gram));
IO_Write(DCX,data);//发送数据
xplay->CR |= EN;
}
STM32H750VBT6 DMA驱动TFT-LCD(ST7789V)相关推荐
- 简单明了操作——ESP8266 NodeMCU驱动TFT LCD液晶屏(制作透明小电视前奏)
简单明了操作--ESP8266 NodeMCU驱动TFT LCD液晶屏(制作透明小电视前奏) 前言 准备材料 esp8266 NodeMCU(串口WiFi模块) 1.44inch SPI Arduin ...
- AT32驱动TFT LCD显示示例
1.1 案例 TFT LCD显示 1.1.1 简介 TFT LCD液晶显示屏是薄膜晶体管型液晶显示屏,TFT液晶每个像素都可以单独控制,因而每个节点都相对独立,并可以连续控制,这不仅提高了显示的反应速 ...
- stm32 驱动 TFT LCD
LCD/LCM的基本概念 液晶显示器(Liquid Crystal Display: LCD)的构造是在两片平行的玻璃当中放置液态的晶体,两片玻璃中间有许多垂直和水平的细小电线,透过通电与否来控制杆状 ...
- S3C2440A驱动RGB接口TFT LCD的研究(转载)
S3C2440A驱动RGB接口TFT LCD的研究 时间: 2009-02-25 11:29:50 来源:嵌入式在线 作者:纪宁宁,孙灵燕 1 引言 随着科技的进步,TFT LCD作为显示器件 ...
- ESP8266-Arduino编程实例-2.8寸TFT LCD驱动(ILI9341控制器)
2.8寸TFT LCD驱动(ILI9341控制器) 液晶显示器 (LCD) 是一种平板显示器或其他电子调制光学设备,它利用液晶与偏振器的光调制特性.液晶不直接发光,而是使用背光或反射器来产生彩色或单色 ...
- STM32 FSMC接口驱动4.3寸TFT LCD屏
STM32 FSMC接口驱动4.3寸TFT LCD屏 STM32的FSMC接口是并行总线接口,可以用于驱动存储芯片如FLASH/SRAM等,也可以用于驱动并口LCD屏. 这里以STM32F103VET ...
- STM32 驱动4.3寸TFT LCD 触摸屏
STM32 驱动4.3寸TFT LCD 触摸屏 STM32的FSMC接口是并行总线接口,可以用于驱动存储芯片如FLASH/SRAM等,也可以用于驱动并口LCD屏.触摸屏是在显示屏上覆盖一层触摸感应的外 ...
- 基于STM32F411使用SPI+DMA驱动LCD
先看效果 F411CE 硬件SPI+DMA驱动LCD 基于HAL库 其实HAL库我用不太习惯,一直也是用的标准库 但HAL库确实是好上手一些,就迅速创建一个新的template 这次就当尝试一下吧,因 ...
- Linux驱动之LCD驱动编写
在Linux驱动之内核自带的S3C2440的LCD驱动分析这篇博客中已经分析了编写LCD驱动的步骤,接下来就按照这个步骤来字尝试字节编写LCD驱动.用的LCD屏幕为tft屏,每个像素点为16bit.对 ...
最新文章
- 全景分割 | Learning to Fuse Things and Stuff
- 获取当前元素在兄弟元素节点中的索引
- spring-boot-mybatis
- [luogu1131][bzoj1060][ZJOI2007]时态同步【树形DP】
- matlab save txt 乱码,matlab代码或中文复制到word就变成乱码怎么办?
- zabbix计算型监控项函数last_zabbix 自定义key类型之计算(Calculated items)-阿里云开发者社区...
- java 保存 设置_java – 保存设置的实现
- android新版本广告,新增朋友圈广告?微信6.1安卓新版发布
- VirtualBox 复制虚拟机 克隆系统
- 戴尔科技集团公布 2019 财年第四季度及全年财报,巨大进步和强劲发展的一年...
- 在Zabbix中添加交换机端口监控
- js获取url后面的参数值
- 与其他库一起使用jQuery
- 从零开始学数据库-MySQL
- 【炫丽跑车win7主题】
- AUTOCAD——超级填充命令3
- JAVA Swing添加表格
- 方舟生存进化服务器存档位置,方舟生存进化如何转移存档
- 诺禾:和Java一样能用汉字编程的神奇语言
- 如何将一个HTML页面嵌套在另一个页面中
热门文章
- 探索企业即时通讯软件的发展趋势
- data.frame中的NA值怎么替换成0 把na变为0 把na变为想要的数 改变na 是否为na is.na()是否为null is.null() is.null() 删除去掉NA的行
- 北京PM2.5浓度回归分析
- OpenGL--混合
- win10 tensorflow MTCNN Demo
- Oracle打补丁步骤
- 爬虫获取的数据和在自己浏览器看到的不一样
- 长链剖分 总结 【知识点】
- 程序员的跳槽人生(跳槽攻略)
- 夏普计算机怎么弹音乐,夏普歌手版电视 为你提升歌唱技巧的利器