4.0寸86盒显示屏调试(二)

编程入门 行业动态 更新时间:2024-10-07 12:18:02

4.0寸86盒<a href=https://www.elefans.com/category/jswz/34/1767780.html style=显示屏调试(二)"/>

4.0寸86盒显示屏调试(二)

硬件接口有了,连接也做好了,下一步开始编程,在找基本程序时,发现以前有一个4.0显示屏的demo,但好像是没有完成,那么接下来就在这个上面修改,按照正确思路,一步一部驱动它。

当然,既然以前就没能驱动成功,我还是准备好了如果不成功,那也没办法的心态了。当然我的目的依旧是要驱动成功。这个不行,下次一定用新方案。言归正传。

要确定接口,使用的是SPI和RGB。思考SPI应该是用来发指令的,RGB应该仅仅用于发数据,但像素点位置怎么发?估计也是SPI发的。这里从驱动IC手册上发现有3线和4线SPI。

但屏幕规格书上却并没有明确说明是3线,还是4线。从硬件接口上看到有DCX引脚,那先默认是4线试一下。

编写SPI的程序,设定引脚

 

//SPI_IO口初始化
void Lcd_Spi_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;
  
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);    
  /* DCX    ~ PD4  */
  /* SDA    ~ PD5  */
  /* SCL    ~ PD6  */
  /* CSB    ~ PD7  */
  /* RESET  ~ PD8  */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;  //复用推挽输出
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOD, &GPIO_InitStructure);

     GPIO_SetBits(GPIOD, GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8);
}   

写SPI输出和读取函数,为了确定SPI的类型,以及确保能够通信,先写指令读取ID号。

找到指令页读ID号的位置:

ID号有三个寄存器组成,使用4线读24位数据的时序图:

注意在指令后又一个空时钟,发现SPI用的SPI-16,ID在0400H后三字节。因此,发送三个指令,即可读取整个ID号。读取ID在串口输出是0xFFFFFF,指令页上没有写默认指令是什么,往下翻发现默认指令就是

本来就想着如果是全1或全0就有可能不对,这个时候查看指令发现真是全1,没法确定是否写对了时序,因此在指令表中找一个可读的指令,数据不是全1或0的。如下这个

读这个0x0A00地址的数据,应该会出现0和1交叉的数据。

读一个数据用的是4线8位数据读取时序,指令和数据间没有间隔,一定要注意时序中细微的不同。

 

更多推荐

4.0寸86盒显示屏调试(二)

本文发布于:2024-03-07 18:13:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1718542.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:显示屏

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!