接着上一次,完成了ILI9341屏幕的驱动程序后,马上移植了8.1.0的LVGL代码,一路也比较顺利,很快编译完成,下载后遇到第一个问题:
花屏,显示出来的图标位置和大小都不对,仔细检查了代码,发现都没问题,几经尝试,结果发现竟然是SPI频率的问题,96M情况下ILI9341刷屏尚可,坐标设置可能就出现了异常,无奈只好降低到48M使用。
调整完频率,接着发现了第二个问题:
反色,由于Air105是小端模式,使用8位spi传输时,16位像素的低字节被先写入,而高字节被后写入,这就导致了屏幕反色的问题,解决这个问题,有两种方案,一种是将SPI写入改为16位模式,这样能够使高字节先写入,然后不幸的的HISPI接口不支持数据位宽设置,放弃;另外一种是在LVGL上层进行颜色翻转,然而悲催的是,当lv_conf.h中配置了#define LV_COLOR_16_SWAP 1后,颜色依然是错误的!当然了,就算是这里能把颜色翻转正确了,在显示图片的时候依然会存在问题,所以最终的解决办法依然在底层。
目前无奈的解决方案是,在数据写入屏幕前,人为的将高低字节进行翻转,用时间来换效果了,这不得不说是芯片的一个痛点了,希望芯片厂商能够给一个好的解决方案了……