如果你不是工程师,你应该享受不到加班调试的乐趣吧,我记得在大学的时候,我第一次调试I2C时序,当时用的芯片是24C02的存储芯片,用51单片机模拟I2C时序,怎么整也整不出来,时序这个东西,一通百通,一不通那就是几个通宵熬夜都有可能。
先量电压,量电压了看波形,波形反反复复的看了之后,就是没有从设备的应答信号,再去看看硬件设计,该上拉电阻的地方有没有接上上拉电阻。
关于上拉电阻和下拉电阻这个自行百度,可以理解为一个默认的能力把,就像弹簧默认是有一个力的,你需要一个>弹簧的默认力才能驾驭弹簧,上拉和下拉就是保持它的默认能力。
作为一个电子工程师,调试通信时序应该是基本操作,就好比,如果你是一个厨师,那么你会做蛋炒饭应该也是默认的能力。
我在TCL的时候,我就跟欢哥用一个单片机调试TVP5150的时序,那叫一个头疼,我们整整调试了一周。
如果你是一个app端的开发码农,哪里有问题,就在哪里加日志,但是如果你是一个驱动工程师,如果你是一个单片机工程师,很多时候,你是没有办法加日志调试的,可以了就满声欢喜,不行就埋头苦干,即使是工作很多年的工程师,也只能给你一些建议,但是解决问题,还是需要你自己上阵杀敌。
如果你调试过很多低速的通信时序,经过多年的积累,慢慢有了经验,就觉得调试没什么意思了,那么你可以试试去调试下mipi时序看看。
好了,这里应该很多读者都是干这个的,你可能心里会想,调试mipi也是一把过,没有遇到什么非常棘手的问题,那么恭喜你,你此生路途平坦,没有遇到什么难事,可以说在工作上,没有遇到太难的事情,可能这也是一种缺憾,你享受不到加班孤独的快感,你也享受不到末班地铁的速度,你应该找点有挑战性的项目给自己的人生添砖加瓦。
……………………………………
这几天在调试一个mipi屏,刚开始一点头绪都没有,折腾了很久,一点图像也没有显示,我们量了电压,mipi供电的每一路电压,没有发现有什么不对的,而且,mipi通路,我们得出来的手机靓号出售结果也是正确的,因为我们买的是开发板来验证开发,用我们的mipi时序init code驱动开发板的LCD,虽然显示不正确,但是是有图像出来的,从这个现象可以知道,mipi是工作了,主控应该通过mipi把一些鬼东西传送到了开发板的mipi屏幕上。所以也可以验证mpi这个通路是正常的。
经过一个晚上的折腾和排不了忧愁也解不了困难,我们一致把问题定位在发送指令的组包格式上。
mipi的长包和短包前面的包头都是不一样的。
mipi有两种组包模式
一种是DCS,一种是Generic模式,分别如上图所示。
不同的组包方式,发送的格式都不同,比如DCS模式,长包的包头是0x39,但是是Generic模式的话,长包的包头是0x29。
给大家看看mipi的波形,以及对应的解析
这个波形我相信很多人都没有见过
……………………………………
注意
第一个波形是无效的,所以不要记录第一个波形。
解析出来的下面111000……后,每个字节,低位在前,高位在后
第一个字节一定是0x87,所以每个包的mipi波形都是一样的。
我们一直想让屏厂IC的FAE给我们说明清楚他们用的是哪种格式,或者我们需要适配哪种格式的时序给屏IC,屏才能正常工作起来。但是屏厂的FAE不是很配合,他一直纠结是平台这边没有发送正确的时序给屏,但是是哪里没有正确,或者说需要发送什么正确的格式过去,他也不能给出一个肯定的回复。
我们后面,想到的两个思路就是
1、用一个已经点亮这个屏的平台过来,跟这个屏对接,用示波器抓取波形,再修改我们发送的指令时序。
2、跟屏厂借一个主板,可以跟屏模组调试时序的,用那个主板可以给屏发送指令,然后我们再用示波器抓波形,按照这个波形发送指令给屏。
3、屏IC的FAE过来支持我们,如果直接有工程师过来支持,我们就可以当面沟通,有问题也可以很快的解决了。
我们后来冷静下来开会梳理了下
1、复位脚,这个是很多屏都需要的,我们刚开始也花费了很长时间在复位脚上,最后终于搞定了复位脚,可以正常开机复位了,所以这部分不是问题了。
2、使能脚,我们的屏没有这个,默认用硬件供电使能了,所以也排除了,但是rockchip的同学说有遇到其他屏使能脚上电时序不对亮不了的。
3、初始化参数,我们初始化参数是屏厂提供的,刚开始因为mipi模式不对,和屏厂不同,后面调整后和屏厂对应的,而且我们发现屏厂的IC是可以同时兼容两种模式的,我猜想他们也是想匹配所有的mipi模式。
4、11 29 指令,这个指令是用来开启屏幕的,就是所有初始化结束后,延迟几毫秒后就写入 1129 ,这个是mipi屏通用的指令,我们测量了波形,是正常的,但是屏幕还是没有任何东西。
5、mipi 时钟,这个因为我们用的是开发板,开发板驱动的也是mipi屏,这个应该没有问题,通过测量也没有问题。
6、屏对应的各路电压,这个前面pin to pin确认了好多次,也没有发现异常。
……………………………………
最后的最后,软件这边实在没有办法了,硬件在一次常规排查后发现屏有一路供电没有,硬件修改后,我拿到手上,说出了那句说了无数次的话,这是见证奇迹的时刻了,然后,看到android界面缓缓升起的时候,心中那个嗨啊~
所以,根本的问题是接线口的一个位置,焊接员没有焊接好导致电压没有传到屏上。
ps:感谢rockchip林工对我们的大力支持。