使用ILI9488控制器的LCD屏,比如TM035PDHG03,感觉很多坑呀。
通过IM2 IM1 IM0三个管脚,只能选择出I80和SPI接口,扒了很久ILI9488的datasheet,发现如果要使用RGB接口,要写ILI9488的寄存器,而RGB接口又不能写寄存器,那么,要再接I80或者SPI接口?
I80占用管较多,连一个三线的SPI接口来写寄存器可能更容易一些,用RGB接口还得额外再连一个SPI,为啥不直接用SPI?穿上裤子放P的感觉。
搜到一个文章:
https://www.eefocus.com/max_huayu/blog/13-03/291938_35e2e.html
提到即使用RGB565模式,主控要设置为RGB888,ILI9488要设置为RGB666模式,更是感觉莫名其妙。
离线
嗯,现在的LCD驱动芯片基本都是这种模式 。 用三线SPI初始化一下才能用RGB
离线
这个太坑了。上一版硬件别人做的,用这个ILI9488屏,只连了RGB接口,没连SPI。
当然这是后面的坑了,前面的坑是FPC端子弄错了,导致屏根本插不进去。幸好核对了一下原理图,否则刚从一个坑里出来就要填另外一个。
嗯,现在的LCD驱动芯片基本都是这种模式 。 用三线SPI初始化一下才能用RGB
离线
https://whycan.com/t_5652.html
我之前搞过个类似的屏,我的spi直接强行复用了rgb的数据引脚。你可以设置成rgb666然后只接rgb565,把多余的几个引脚接地就行了,或者刚好复用成软件spi。
离线
https://whycan.com/t_5652.html
我之前搞过个类似的屏,我的spi直接强行复用了rgb的数据引脚。你可以设置成rgb666然后只接rgb565,把多余的几个引脚接地就行了,或者刚好复用成软件spi。
咦,好聪明,我怎么没想到呢,浪费了三条腿,捂眼。。。
离线
我这个屏SPI和RGB接口是独立的管脚。目前测试无论是RGB565模式16位使用DB[15:0],还是RGB666模式18位使用DB[17:0],
用3线SPI接口初始化以后再用RGB接口都没问题了。
不过有一个很奇葩的问题:实测颜色分量R和B和文档上的描述是反着的。
无论18位还是16位模式下,手册上都是红色R在高位DB[15:11],蓝色B在低位DB[4:0],
但是实际测试刚好反过来,蓝色B在高位[15:11],红色R在低位DB[4:0]。
不知道有没有朋友遇到类似问题。
https://whycan.com/t_5652.html
我之前搞过个类似的屏,我的spi直接强行复用了rgb的数据引脚。你可以设置成rgb666然后只接rgb565,把多余的几个引脚接地就行了,或者刚好复用成软件spi。
离线
看了下你的代码,解决了我的ILI9488颜色分量R和B相反的疑问。
/* Memory Data Access Control */
LCD_SPI_WriteByte(0x36,LCD_CMD);
LCD_SPI_WriteByte(0x08,LCD_DATA); //反人类的ST7789……RGB总线居然默认是BGR格式
ILI9488和ST7789一样反人类,默认是BGR格式。
感谢。
https://whycan.com/t_5652.html
我之前搞过个类似的屏,我的spi直接强行复用了rgb的数据引脚。你可以设置成rgb666然后只接rgb565,把多余的几个引脚接地就行了,或者刚好复用成软件spi。
离线
产品用这个屏,确实很坑。
RGB模式下没法硬件上横屏,只能软件转换XY坐标。
一般都会引出所谓的“SPI”接口,其实是伪SPI,如果是三线模式就比较坑,很可能得用MCU的GPIO模拟,四线模式的话,就可以用硬件SPI接口连接了。
即使用RGB模式,也要用“SPI”接口初始化很多寄存器才可以正常用。初始化代码可以找厂家提供,主要是看需要初始化的寄存器值,然后转换成自己的读写函数。
最近编辑记录 regbbs (2021-03-07 09:36:00)
离线
分辨率320x480,这个分辨率用SPI刷数据搞不定,即使30帧16位色,320*480*16*30/1e6=73.7M,实际ILI9488的SCL最高频率到不了这个频率的一半。
所以3线9位,还是4线SPI其实都没啥差别,都是写寄存器用的,对速度没要求,用软件模拟就行了。
产品用这个屏,确实很坑。
RGB模式下没法硬件上横屏,只能软件转换XY坐标。一般都会引出所谓的“SPI”接口,其实是伪SPI,如果是三线模式就比较坑,很可能得用MCU的GPIO模拟,四线模式的话,就可以用硬件SPI接口连接了。
即使用RGB模式,也要用“SPI”接口初始化很多寄存器才可以正常用。初始化代码可以找厂家提供,主要是看需要初始化的寄存器值,然后转换成自己的读写函数。
离线
我的意思是“SPI”作为初始化,数据还是通过RBG接口,但是设置横屏模式,刷新不正常,不能全屏显示。要想当作480X320的分辨率用,只能软件实现。
分辨率320x480,这个分辨率用SPI刷数据搞不定,即使30帧16位色,320*480*16*30/1e6=73.7M,实际ILI9488的SCL最高频率到不了这个频率的一半。
所以3线9位,还是4线SPI其实都没啥差别,都是写寄存器用的,对速度没要求,用软件模拟就行了。regbbs 说:产品用这个屏,确实很坑。
RGB模式下没法硬件上横屏,只能软件转换XY坐标。一般都会引出所谓的“SPI”接口,其实是伪SPI,如果是三线模式就比较坑,很可能得用MCU的GPIO模拟,四线模式的话,就可以用硬件SPI接口连接了。
即使用RGB模式,也要用“SPI”接口初始化很多寄存器才可以正常用。初始化代码可以找厂家提供,主要是看需要初始化的寄存器值,然后转换成自己的读写函数。
离线
你的意思我理解呀。RGB屏幕就这样,320x480和480x320不一样。
我的意思是SPI三线还是四线其实没啥区别,都只能写写寄存器。
有条件还是用MCU接口,也不会浪费ILI9488内部的GRAM。
我的意思是“SPI”作为初始化,数据还是通过RBG接口,但是设置横屏模式,刷新不正常,不能全屏显示。要想当作480X320的分辨率用,只能软件实现。
echo 说:分辨率320x480,这个分辨率用SPI刷数据搞不定,即使30帧16位色,320*480*16*30/1e6=73.7M,实际ILI9488的SCL最高频率到不了这个频率的一半。
所以3线9位,还是4线SPI其实都没啥差别,都是写寄存器用的,对速度没要求,用软件模拟就行了。regbbs 说:产品用这个屏,确实很坑。
RGB模式下没法硬件上横屏,只能软件转换XY坐标。一般都会引出所谓的“SPI”接口,其实是伪SPI,如果是三线模式就比较坑,很可能得用MCU的GPIO模拟,四线模式的话,就可以用硬件SPI接口连接了。
即使用RGB模式,也要用“SPI”接口初始化很多寄存器才可以正常用。初始化代码可以找厂家提供,主要是看需要初始化的寄存器值,然后转换成自己的读写函数。
离线
相信你肯定对这些很了解的。
借楼再给其他朋友点信息。
三线和四线还是有很大差异的,三线的话,数据是9位,四线数据是8位,对于SPI不支持9位数据位的MCU等,就只能用GPIO模拟。
一般9488如果不是RGB接口,那么硬件SPI直接读写和用GPIO直接读写差异还是很大的。使用并行16位接口,效果也不如RGB效果好。
RGB驱动的话,画面切换没有撕裂,然后不管是用16位MCU总线驱动还是“SPI+DMA”,都能感受到画面的切换过程(我自己项目中是这样)。
对于使用RGB接口,这个“SPI”接口只用来初始化,用GPIO模拟和硬件SPI读写,差不了太多。有的RGB屏可以通过引脚或者寄存器切换比如320*480或者480*320,但是9488不行,只能RGB 320*480,通过寄存器设置成480*320的话,会不能显示完全,有1/3黑屏(如果有哪位知道设置,欢迎告知下)。
你的意思我理解呀。RGB屏幕就这样,320x480和480x320不一样。
我的意思是SPI三线还是四线其实没啥区别,都只能写写寄存器。
有条件还是用MCU接口,也不会浪费ILI9488内部的GRAM。regbbs 说:我的意思是“SPI”作为初始化,数据还是通过RBG接口,但是设置横屏模式,刷新不正常,不能全屏显示。要想当作480X320的分辨率用,只能软件实现。
echo 说:分辨率320x480,这个分辨率用SPI刷数据搞不定,即使30帧16位色,320*480*16*30/1e6=73.7M,实际ILI9488的SCL最高频率到不了这个频率的一半。
所以3线9位,还是4线SPI其实都没啥差别,都是写寄存器用的,对速度没要求,用软件模拟就行了。
离线
我的意思是SPI三线还是四线其实没啥区别,都只能写写寄存器。
我也再明确下我的意思:为啥三线和四线SPI对ILI9488来说没啥差别。
原因就是SPI速度对于320x480分辨率来说速度跟不上,即使硬件SPI+DMA,最高30M,帧率也不会超过10。
而写寄存器,不写显示数据,因为数据量很小,无论IO模拟还是硬件SPI+DMA,都没多大差别,GPIO模拟三线9位SPI就足够了,硬件少拉一根线。
我现在用ILI9488是三线SPI+RGB接口。
相信你肯定对这些很了解的。
借楼再给其他朋友点信息。
三线和四线还是有很大差异的,三线的话,数据是9位,四线数据是8位,对于SPI不支持9位数据位的MCU等,就只能用GPIO模拟。
一般9488如果不是RGB接口,那么硬件SPI直接读写和用GPIO直接读写差异还是很大的。使用并行16位接口,效果也不如RGB效果好。
RGB驱动的话,画面切换没有撕裂,然后不管是用16位MCU总线驱动还是“SPI+DMA”,都能感受到画面的切换过程(我自己项目中是这样)。
对于使用RGB接口,这个“SPI”接口只用来初始化,用GPIO模拟和硬件SPI读写,差不了太多。有的RGB屏可以通过引脚或者寄存器切换比如320*480或者480*320,但是9488不行,只能RGB 320*480,通过寄存器设置成480*320的话,会不能显示完全,有1/3黑屏(如果有哪位知道设置,欢迎告知下)。echo 说:你的意思我理解呀。RGB屏幕就这样,320x480和480x320不一样。
我的意思是SPI三线还是四线其实没啥区别,都只能写写寄存器。
有条件还是用MCU接口,也不会浪费ILI9488内部的GRAM。regbbs 说:我的意思是“SPI”作为初始化,数据还是通过RBG接口,但是设置横屏模式,刷新不正常,不能全屏显示。要想当作480X320的分辨率用,只能软件实现。
离线
我也到此问题,百思不得解
离线
这个网上例程不是很多的吗?
离线