您尚未登录。

楼主 #1 2021-03-03 21:31:15

echo
会员
注册时间: 2020-04-16
已发帖子: 114
积分: 97.5

有用过ILI9488的RGB接口的朋友吗?

使用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模式,更是感觉莫名其妙。

离线

#2 2021-03-03 22:10:31

raspberryman
会员
注册时间: 2019-12-27
已发帖子: 503
积分: 465

Re: 有用过ILI9488的RGB接口的朋友吗?

嗯,现在的LCD驱动芯片基本都是这种模式 。 用三线SPI初始化一下才能用RGB

离线

楼主 #3 2021-03-04 16:29:55

echo
会员
注册时间: 2020-04-16
已发帖子: 114
积分: 97.5

Re: 有用过ILI9488的RGB接口的朋友吗?

这个太坑了。上一版硬件别人做的,用这个ILI9488屏,只连了RGB接口,没连SPI。
当然这是后面的坑了,前面的坑是FPC端子弄错了,导致屏根本插不进去。幸好核对了一下原理图,否则刚从一个坑里出来就要填另外一个。

raspberryman 说:

嗯,现在的LCD驱动芯片基本都是这种模式 。 用三线SPI初始化一下才能用RGB

离线

#4 2021-03-05 17:57:11

f_Endman
会员
注册时间: 2020-04-16
已发帖子: 21
积分: 121

Re: 有用过ILI9488的RGB接口的朋友吗?

https://whycan.com/t_5652.html
我之前搞过个类似的屏,我的spi直接强行复用了rgb的数据引脚。你可以设置成rgb666然后只接rgb565,把多余的几个引脚接地就行了,或者刚好复用成软件spi。

离线

#5 2021-03-05 18:07:34

奔跑的孩子
会员
注册时间: 2021-01-28
已发帖子: 51
积分: 31.5

Re: 有用过ILI9488的RGB接口的朋友吗?

f_Endman 说:

https://whycan.com/t_5652.html
我之前搞过个类似的屏,我的spi直接强行复用了rgb的数据引脚。你可以设置成rgb666然后只接rgb565,把多余的几个引脚接地就行了,或者刚好复用成软件spi。

咦,好聪明,我怎么没想到呢,浪费了三条腿,捂眼。。。

离线

楼主 #6 2021-03-06 15:14:53

echo
会员
注册时间: 2020-04-16
已发帖子: 114
积分: 97.5

Re: 有用过ILI9488的RGB接口的朋友吗?

我这个屏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]。
不知道有没有朋友遇到类似问题。

f_Endman 说:

https://whycan.com/t_5652.html
我之前搞过个类似的屏,我的spi直接强行复用了rgb的数据引脚。你可以设置成rgb666然后只接rgb565,把多余的几个引脚接地就行了,或者刚好复用成软件spi。

离线

楼主 #7 2021-03-06 15:55:11

echo
会员
注册时间: 2020-04-16
已发帖子: 114
积分: 97.5

Re: 有用过ILI9488的RGB接口的朋友吗?

看了下你的代码,解决了我的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格式。
感谢。

f_Endman 说:

https://whycan.com/t_5652.html
我之前搞过个类似的屏,我的spi直接强行复用了rgb的数据引脚。你可以设置成rgb666然后只接rgb565,把多余的几个引脚接地就行了,或者刚好复用成软件spi。

离线

#8 2021-03-07 09:32:12

regbbs
会员
注册时间: 2020-04-06
已发帖子: 26
积分: 17.5

Re: 有用过ILI9488的RGB接口的朋友吗?

产品用这个屏,确实很坑。
RGB模式下没法硬件上横屏,只能软件转换XY坐标。

一般都会引出所谓的“SPI”接口,其实是伪SPI,如果是三线模式就比较坑,很可能得用MCU的GPIO模拟,四线模式的话,就可以用硬件SPI接口连接了。
即使用RGB模式,也要用“SPI”接口初始化很多寄存器才可以正常用。初始化代码可以找厂家提供,主要是看需要初始化的寄存器值,然后转换成自己的读写函数。

最近编辑记录 regbbs (2021-03-07 09:36:00)

离线

楼主 #9 2021-03-07 11:54:13

echo
会员
注册时间: 2020-04-16
已发帖子: 114
积分: 97.5

Re: 有用过ILI9488的RGB接口的朋友吗?

分辨率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”接口初始化很多寄存器才可以正常用。初始化代码可以找厂家提供,主要是看需要初始化的寄存器值,然后转换成自己的读写函数。

离线

#10 2021-03-09 15:48:59

regbbs
会员
注册时间: 2020-04-06
已发帖子: 26
积分: 17.5

Re: 有用过ILI9488的RGB接口的朋友吗?

我的意思是“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”接口初始化很多寄存器才可以正常用。初始化代码可以找厂家提供,主要是看需要初始化的寄存器值,然后转换成自己的读写函数。

离线

楼主 #11 2021-03-11 14:17:27

echo
会员
注册时间: 2020-04-16
已发帖子: 114
积分: 97.5

Re: 有用过ILI9488的RGB接口的朋友吗?

你的意思我理解呀。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其实都没啥差别,都是写寄存器用的,对速度没要求,用软件模拟就行了。

regbbs 说:

产品用这个屏,确实很坑。
RGB模式下没法硬件上横屏,只能软件转换XY坐标。

一般都会引出所谓的“SPI”接口,其实是伪SPI,如果是三线模式就比较坑,很可能得用MCU的GPIO模拟,四线模式的话,就可以用硬件SPI接口连接了。
即使用RGB模式,也要用“SPI”接口初始化很多寄存器才可以正常用。初始化代码可以找厂家提供,主要是看需要初始化的寄存器值,然后转换成自己的读写函数。

离线

#12 2021-03-11 17:07:42

regbbs
会员
注册时间: 2020-04-06
已发帖子: 26
积分: 17.5

Re: 有用过ILI9488的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的分辨率用,只能软件实现。

echo 说:

分辨率320x480,这个分辨率用SPI刷数据搞不定,即使30帧16位色,320*480*16*30/1e6=73.7M,实际ILI9488的SCL最高频率到不了这个频率的一半。
所以3线9位,还是4线SPI其实都没啥差别,都是写寄存器用的,对速度没要求,用软件模拟就行了。

离线

楼主 #13 2021-03-11 18:22:42

echo
会员
注册时间: 2020-04-16
已发帖子: 114
积分: 97.5

Re: 有用过ILI9488的RGB接口的朋友吗?

我的意思是SPI三线还是四线其实没啥区别,都只能写写寄存器。

我也再明确下我的意思:为啥三线和四线SPI对ILI9488来说没啥差别。
原因就是SPI速度对于320x480分辨率来说速度跟不上,即使硬件SPI+DMA,最高30M,帧率也不会超过10。
而写寄存器,不写显示数据,因为数据量很小,无论IO模拟还是硬件SPI+DMA,都没多大差别,GPIO模拟三线9位SPI就足够了,硬件少拉一根线。
我现在用ILI9488是三线SPI+RGB接口。

regbbs 说:

相信你肯定对这些很了解的。
借楼再给其他朋友点信息。
三线和四线还是有很大差异的,三线的话,数据是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的分辨率用,只能软件实现。

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn