scoopydoo 发表于 2024-11-22 17:53:33

本帖最后由 scoopydoo 于 2024-11-22 17:56 编辑

昨晚已经用示波器查看了控制用的 SPI 端口,以及 LTDC 输出的 RGB 端口,没发现信号时序或极性问题。

接下来就是在 ST7701S 几百个字节的初始化序列中找找看有没有啥问题,毕竟是网上抄了来的,不可全信 ......

scoopydoo 发表于 2024-11-22 17:55:41

scu319hy 发表于 2024-11-22 17:51
我就是瞎提个想法,反正只用动动嘴
等你成功了我再来围观学习

俺也是盲人摸象,回头肯定会尝试一下这种方式,毕竟虽然这次 8bit 够用了,下次说不定要显示真彩呢 :lol

scu319hy 发表于 2024-11-22 17:59:55

MF35_ 发表于 2024-11-22 17:35
肯定不能啊,帧缓存是由LCDC直接访问的,而非由CPU传输给LCDC的,自然不能用软件处理,你说的这种方式对 ...

嗯,我的设想是控制LCD面板的局部刷新区域,然后设置对应的帧缓冲区域给LCDC让它发送
等这部分发完,重新设置LCD面板的局部刷新区域,再更新LCDC的缓冲发另一部分
技术上应该可以行得通,效果怎么样我也没试过;P

scoopydoo 发表于 2024-11-22 18:14:19

scu319hy 发表于 2024-11-22 17:59
嗯,我的设想是控制LCD面板的局部刷新区域,然后设置对应的帧缓冲区域给LCDC让它发送
等这部分发完,重 ...

俺觉得这样应该是可以的,甚至每次只刷新一个点都行,要考虑的就是内存空间和处理器时间之间的平衡,毕竟更改 LTDC 的图层设置是需要时间花销的的。

scoopydoo 发表于 2024-11-22 18:52:57

本帖最后由 scoopydoo 于 2024-11-22 18:55 编辑

网上能找的几段 ST7701S 4.58 寸屏的初始化代码都是一样的,没有宏定义、没有注释 ... :curse:

{
      ...

        //ST7701S+AUO4.58
        SPI_WriteComm (0xFF);   
        SPI_WriteData (0x77);
        SPI_WriteData (0x01);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x13);   
       
        SPI_WriteComm (0xEF);   
        SPI_WriteData (0x08);   
       
        SPI_WriteComm (0xFF);   
        SPI_WriteData (0x77);   
        SPI_WriteData (0x01);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x10);   
       
        SPI_WriteComm (0xC0);   
        SPI_WriteData (0x77);   
        SPI_WriteData (0x00);   
       
        SPI_WriteComm (0xC1);   
        SPI_WriteData (0x09);   
        SPI_WriteData (0x08);   
       
        SPI_WriteComm (0xC2);//inv   
        SPI_WriteData (0x37);   
        SPI_WriteData (0x02);
       
        SPI_WriteComm (0xC3); //????   
        SPI_WriteData (0x80);
        SPI_WriteData (0x05);
        SPI_WriteData (0x0d);       
       
        SPI_WriteComm (0xCC);   
        SPI_WriteData (0x10);   
       
        SPI_WriteComm (0xB0);   
        SPI_WriteData (0x40);   
        SPI_WriteData (0x14);   
        SPI_WriteData (0x59);   
        SPI_WriteData (0x10);   
        SPI_WriteData (0x12);   
        SPI_WriteData (0x08);   
        SPI_WriteData (0x03);   
        SPI_WriteData (0x09);   
        SPI_WriteData (0x05);   
        SPI_WriteData (0x1E);   
        SPI_WriteData (0x05);   
        SPI_WriteData (0x14);   
        SPI_WriteData (0x10);   
        SPI_WriteData (0x68);   
        SPI_WriteData (0x33);   
        SPI_WriteData (0x15);   
       
        SPI_WriteComm (0xB1);   
        SPI_WriteData (0x40);   
        SPI_WriteData (0x08);   
        SPI_WriteData (0x53);   
        SPI_WriteData (0x09);   
        SPI_WriteData (0x11);   
        SPI_WriteData (0x09);   
        SPI_WriteData (0x02);   
        SPI_WriteData (0x07);   
        SPI_WriteData (0x09);   
        SPI_WriteData (0x1A);   
        SPI_WriteData (0x04);   
        SPI_WriteData (0x12);   
        SPI_WriteData (0x12);   
        SPI_WriteData (0x64);   
        SPI_WriteData (0x29);   
        SPI_WriteData (0x29);   
       
        SPI_WriteComm (0xFF);   
        SPI_WriteData (0x77);   
        SPI_WriteData (0x01);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x11);   
       
        SPI_WriteComm (0xB0);   
        SPI_WriteData (0x6D);//6D
       
        SPI_WriteComm (0xB1);   //vcom
        SPI_WriteData (0x1D);   
       
        SPI_WriteComm (0xB2);   
        SPI_WriteData (0x87);   
       
        SPI_WriteComm (0xB3);   
        SPI_WriteData (0x80);   
       
        SPI_WriteComm (0xB5);   
        SPI_WriteData (0x49);   
       
        SPI_WriteComm (0xB7);   
        SPI_WriteData (0x85);   
       
        SPI_WriteComm (0xB8);   
        SPI_WriteData (0x20);   
       
        SPI_WriteComm (0xC1);   
        SPI_WriteData (0x78);   
       
        SPI_WriteComm (0xC2);   
        SPI_WriteData (0x78);   
       
        SPI_WriteComm (0xD0);   
        SPI_WriteData (0x88);   
       
        SPI_WriteComm (0xE0);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x02);   
       
        SPI_WriteComm (0xE1);   
        SPI_WriteData (0x02);   
        SPI_WriteData (0x8C);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x03);   
        SPI_WriteData (0x8C);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x33);   
        SPI_WriteData (0x33);   
       
        SPI_WriteComm (0xE2);   
        SPI_WriteData (0x33);   
        SPI_WriteData (0x33);   
        SPI_WriteData (0x33);   
        SPI_WriteData (0x33);   
        SPI_WriteData (0xC9);   
        SPI_WriteData (0x3C);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0xCA);   
        SPI_WriteData (0x3C);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
       
        SPI_WriteComm (0xE3);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x33);   
        SPI_WriteData (0x33);   
       
        SPI_WriteComm (0xE4);   
        SPI_WriteData (0x44);   
        SPI_WriteData (0x44);   
       
        SPI_WriteComm (0xE5);   
        SPI_WriteData (0x05);   
        SPI_WriteData (0xCD);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x01);   
        SPI_WriteData (0xC9);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x07);   
        SPI_WriteData (0xCF);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x03);   
        SPI_WriteData (0xCB);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x82);   
       
        SPI_WriteComm (0xE6);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x33);   
        SPI_WriteData (0x33);   
       
        SPI_WriteComm (0xE7);   
        SPI_WriteData (0x44);   
        SPI_WriteData (0x44);   
       
        SPI_WriteComm (0xE8);   
        SPI_WriteData (0x06);   
        SPI_WriteData (0xCE);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x02);   
        SPI_WriteData (0xCA);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x08);   
        SPI_WriteData (0xD0);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x04);   
        SPI_WriteData (0xCC);   
        SPI_WriteData (0x82);   
        SPI_WriteData (0x82);   
       
        SPI_WriteComm (0xEB);   
        SPI_WriteData (0x08);   
        SPI_WriteData (0x01);   
        SPI_WriteData (0xE4);   
        SPI_WriteData (0xE4);   
        SPI_WriteData (0x88);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x40);   
       
        SPI_WriteComm (0xEC);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
       
        SPI_WriteComm (0xED);   
        SPI_WriteData (0xFF);   
        SPI_WriteData (0xF0);   
        SPI_WriteData (0x07);   
        SPI_WriteData (0x65);   
        SPI_WriteData (0x4F);   
        SPI_WriteData (0xFC);   
        SPI_WriteData (0xC2);   
        SPI_WriteData (0x2F);   
        SPI_WriteData (0xF2);   
        SPI_WriteData (0x2C);   
        SPI_WriteData (0xCF);   
        SPI_WriteData (0xF4);   
        SPI_WriteData (0x56);   
        SPI_WriteData (0x70);   
        SPI_WriteData (0x0F);   
        SPI_WriteData (0xFF);   
       
        SPI_WriteComm (0xEF);   
        SPI_WriteData (0x10);   
        SPI_WriteData (0x0D);   
        SPI_WriteData (0x04);   
        SPI_WriteData (0x08);   
        SPI_WriteData (0x3F);   
        SPI_WriteData (0x1F);   
       
        SPI_WriteComm (0xFF);   
        SPI_WriteData (0x77);   
        SPI_WriteData (0x01);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
        SPI_WriteData (0x00);   
       
        SPI_WriteComm (0x11);   
        delay(120);               
       
        SPI_WriteComm (0x35);   
        SPI_WriteData (0x00);   
       
        SPI_WriteComm (0x3A);   
        SPI_WriteData (0x66);   
       
        SPI_WriteComm (0x29);
}

MF35_ 发表于 2024-11-22 20:48:08

本帖最后由 MF35_ 于 2024-11-22 20:52 编辑

scoopydoo 发表于 2024-11-22 17:40
俺觉得如果搞两三个图层互不重叠来覆盖整个屏幕,然后每个图层指定一个显存区域,应该是可以实现的,就是 ...

我看了一下,STM32H750的LCDC只有两个层加一个背景色,所以顶多做两个独立显示区域,但是每个显示区域可以小于屏幕区域,显示区域意外的空白会用背景色填充,所以,你是可以用两块分离的内存来把整个屏幕填满的:lol

MF35_ 发表于 2024-11-22 20:50:02

scoopydoo 发表于 2024-11-22 18:52
网上能找的几段 ST7701S 4.58 寸屏的初始化代码都是一样的,没有宏定义、没有注释 ...

你这个屏还需要初始化啊,好麻烦,你买屏的时候没有参考手册吗,参考手册应该有怎么初始化

scoopydoo 发表于 2024-11-22 21:09:20

MF35_ 发表于 2024-11-22 20:50
你这个屏还需要初始化啊,好麻烦,你买屏的时候没有参考手册吗,参考手册应该有怎么初始化

某宝的货啥资料也没有,就只知道芯片型号和引脚排列!其实以前买的各种屏也都是这种情况,但是基本上都能找到好用的初始化代码,而且代码质量也不错。

就算偶尔需要自己琢磨的,那些芯片的手册上也会有初始化流程图和示例代码,而这次的 ST7701S 手册上啥也没有,现在俺能做的就是仔细看这个长达 300 页的手册 ...... :Q

MF35_ 发表于 2024-11-22 21:20:30

scu319hy 发表于 2024-11-22 17:59
嗯,我的设想是控制LCD面板的局部刷新区域,然后设置对应的帧缓冲区域给LCDC让它发送
等这部分发完,重 ...


可以是可以,LCDC得支持多层,并且支持屏幕局部显示,STM32H750是支持的,只有两层,不过也够了

MF35_ 发表于 2024-11-22 21:21:42

scoopydoo 发表于 2024-11-22 21:09
某宝的货啥资料也没有,就只知道芯片型号和引脚排列!其实以前买的各种屏也都是这种情况,但是基本上都能 ...


好吧,我用过的TFT屏本身都不需要初始化,时序是定死的,只需要将LCDC根据屏的参数初始化就行,你这种屏需要另外初始化的真没用过

scoopydoo 发表于 2024-11-22 21:22:48

报告一个好消息,俺在某创买的 STM32H750VBT6 的 Flash 容量真的有 2MB,为了确定真的能用,俺定义了一个 1.95MB 的大数组并填满了内容,反复烧写校验了几次都没出问题! ;P

MF35_ 发表于 2024-11-22 21:25:10

scoopydoo 发表于 2024-11-22 21:22
报告一个好消息,俺在某创买的 STM32H750VBT6 的 Flash 容量真的有 2MB,为了确定真的能用,俺定义了一个 1 ...

真的假的,这玩意儿不是只有128k Flash吗?我还说128k够干啥,只能做点儿小东西,如果真有2M,那得赶紧屯几片:lol

scoopydoo 发表于 2024-11-22 21:27:45

MF35_ 发表于 2024-11-22 21:21
好吧,我用过的TFT屏本身都不需要初始化,时序是定死的,只需要将LCDC根据屏的参数初始化就行,你这种 ...

市面上用这个 ST7701S 芯片的屏有好几种,分辨率都不一样的,肯定要有个初始化过程的。

这个非常类似于市面上绝大多数单色 OLED 屏,屏幕的规格有好多好多种,但是芯片一共就那么几种,都需要根据屏幕来做初始化。

MF35_ 发表于 2024-11-22 21:27:55

scoopydoo 发表于 2024-11-22 21:22
报告一个好消息,俺在某创买的 STM32H750VBT6 的 Flash 容量真的有 2MB,为了确定真的能用,俺定义了一个 1 ...


我特意看了下RM,真的是2M;P

scoopydoo 发表于 2024-11-22 21:28:28

MF35_ 发表于 2024-11-22 21:25
真的假的,这玩意儿不是只有128k Flash吗?我还说128k够干啥,只能做点儿小东西,如果真有2M,那得赶紧屯 ...

这个是公开的咪咪啊,只不过没有厂家的质量保证而已。
页: 1 2 [3] 4 5 6
查看完整版本: [折腾] 基于 STM32H750 的 TFT 显示模块