• RGB转MIPI转换板制作(2)


    2022-11-05

    距离上次已经过去半年了,坚持才能看到曙光。

      

     之前使用SPI四线八位模式已经可以读取到SSD2828的ID号,可是在用于配置显示屏时,由于对MIPI的不了解,始终没能找到为何屏不亮。一开始由于是驱动一个研究用的长条屏7.84寸,像素是1280*480,由于某些原因,无法确定其好坏,也不确定是不是自己做的SSD2828电路板问题,所以,改变了思路。

    从新购买了一个1.6寸IPS,MIPI接口单通道的屏,由于是直营店购买,所以资料肯定准确而且完善,就不存在屏幕问题了。但使用网上的SSD2828驱动例程也是无法点亮。苦于没有示波器。也是在程序上耗了许久。

    最终在今天,借用了公司的示波器,发现之前的程序,在MIPI的DATA0通道上有按照时序波动的数据,但时钟线却没有波动。然后又安分的移植了一份SSD2828初始化代码,发现移植的代码,连DATA0上的波动都没了,直接惊呆了,好奇移植的代码不应该出现这种问题。然后就用之前有时序波动的代码对比,对每个可能的寄存器进行了修改,发现是时钟配置寄存器参数。修改后,立即出现了上面的BIST画面。

    终于可以安心的写这个MIPI的续集了

    总结之前遇到的问题:

    1、第一件事可以肯定的是无论使用3线8位SPI还是4线8位SPI,当读取到SSD2828的ID号后,就可以放心SPI时序部分和对SSD2828寄存器操作部分了。

    2、第二件事就是要显示BIST画面,只有显示了BIST画面,才能表示SSD2828已经成功初始化了LCD,且LCD驱动参数没有多大问题。

    3、第三件事其实是应该在第二件事前面,要找到SSD2828自身寄存器配置的参数,这个参数包含了MIPI的时钟,LCD的像素参数等。

    4、第四件事就是找到SSD2828写LCD初始化数据的过程,就是要明白SSD2828要通过DATA0把数据写入到屏幕中,要经过那些寄存器操作。

    以上几件事弄明白,就能完成SSD2828简单的使用。

    注意:如果写完程序,不亮屏,最好要用示波器进行数据线观察,这个是最快确定程序是否正确的途径之一。

    2022-11-07

    今天核对了一下代码,找到移植后修改的寄存器为PLCR,这个主要是控制MIPI时钟的。移植后该寄存器为0xC25A,按照计算PLL=24M * 90/2=1080MHz。修改后为0x4101,计算出来为24M *1/1=24MHz。

    然后查了一下ST7797手册,发现需要的时钟只有个时间范围,计算出来大概是13M~20MHz。是否是说修改后的时钟接近需要的时钟,才能成功初始化的。

    然后后面还有一个HIGH SPEED,好像是用于MIPI的video mode进行刷新用。 这里经过计算需要40M~250MHz。估计就是在初始化完后,开启高速mipi时钟,就是将PLL设置到这个范围。

    正确的程序已经放到我的资源中,资源名:1.6'IPS-LCD-MIPI.zip

  • 相关阅读:
    有什么自定义表单工具功能较好?
    sourceTree中的git rebase变基操作
    C++ Reference: Standard C++ Library reference: Others: iterator: begin
    【数据结构】数组和字符串(四):特殊矩阵的压缩存储:稀疏矩阵——三元组表
    Linux内存寻址
    网络原理 --- 传输层Ⅲ TCP协议中的滑动窗口,流量控制和拥塞控制
    [SWPU2019]Web6
    JPA自动建表字段名称采用驼峰形式
    Verilog 函数
    063:mapboxGL常见错误:Style is not done loading(原因及解决办法)
  • 原文地址:https://blog.csdn.net/weixin_37214729/article/details/127710648