要点亮一块驱动ic为ILI9881C的屏幕,看了soc的屏幕配置目录,发现有带该ic的屏幕配置,估计一两个小时就能完成移植。配置了相应的复位脚,上电脚后,发现在uboot阶段读不了id。当然,可以先在读id函数中直接返回0,先发屏幕配置,看能不点亮屏幕,点亮屏幕后,再来解决id问题。发现在uboot阶段没有点亮屏幕,但进内核后,能概率性的点亮屏幕(通过input keyevent 26,模拟电源键,重新初始化屏幕)。
能想到的,应该是时序不满足要求,导致发配置失败。找相应的规格书看下https://download.csdn.net/download/mike8825/12503211,这里用的是Power Mode 3,时序如下
时序要求不高,且代码已按时序进行了配置,但为什么概率性的点不亮屏幕呢。
再看下屏厂提供的规格书,写着驱动IC:天钰 9365AA(也就是JD9365AA),难道项目组那边搞错了,发来的配置不对,导致概率性无法点亮屏幕的情况。一翻联系后,屏厂那边确认ic是ili9881c,jd9365aa缺货导致更换成了ili9881c,也就是发来的规格书有误。
当然,屏厂的话也不能全信,不排除他们那边会弄错,如果能读到屏的id,那不就能消除疑虑了吗。
也就是写0xff寄存器为98h 81h 01h,先切换到page1,再来读00h 01h 02h寄存器即可。因为soc厂商有提供sys接口来写寄存器,在正常显示的情况下,读写00h-03h,返回的值分别是98h 81h 1ch,那驱动ic也就确认是ili9881c了。