450|9

43

帖子

0

TA的资源

一粒金砂(中级)

关于ILI9488-3.5寸显示屏4线SPI控制问题(读取设备ID失败) [复制链接]

邀请:@damiaa   @wsdymg   @weizhongc   @huo_hu   参与回复

本帖最后由 千本樱大白 于 2023-3-22 09:55 编辑

单片机使用的是4线SPI连接ILI9488,硬件如下图所示,SPI配置都是按常规配置,上电后背光亮,但是初始化后屏幕还是白屏(已经拉低过复位脚再重新至高了),读取设备ID一直返回00,用示波器测量管脚MOSI有正常输出,但是MISO一直低电平,请问下是什么原因导致的呢?

附上发送读取代码

 

void WriteComm(unsigned char i)

{

    RS  = 0;

    CS0 = 0;

    /* Wait for SPIz Tx buffer empty */

    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);

    /* Send SPIy data */

    SPI_I2S_SendData(SPI1, i);

    CS0 = 1;

}

void WriteData(unsigned char i)

{

    RS  = 1;

    CS0 = 0;

    /* Wait for SPIz Tx buffer empty */

    while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);

    /* Send SPIy data */

    SPI_I2S_SendData(SPI1, i);

    CS0 = 1;

}

 

unsigned int ReadData(void)

{

    uint16_t tmp;

    while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);

    SPI_I2S_SendData(SPI1, 0x00);

    while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);

    tmp = SPI_I2S_ReceiveData(SPI1);

    return ((uint8_t)(tmp & 0xff));

}

下面是原理图接线

ILI9488与单片机连接

ILI9488与单片机连接

此帖出自stm32/stm8论坛

最新回复

读取你试下,正常显示不需要读,单线控制就行,不见得非得读。   详情 回复 发表于 2023-3-23 10:53

回复

43

帖子

0

TA的资源

一粒金砂(中级)

运行模拟方式SPI输出可以改变屏幕颜色,但是用SPI就不行,附上SPI设置代码

    /* Configure SPI1 pins: SCK, MISO and MOSI ---------------------------------*/

    /* Confugure SCK and MOSI pins as Alternate Function Push Pull */

    GPIO_InitStructure.GPIO_Pin = TFT_SCK_Pin | TFT_MOSI_Pin;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

    GPIO_Init(TFT_SCK_Port, &GPIO_InitStructure);

    /* Confugure MISO pin as Input Floating  */

    GPIO_InitStructure.GPIO_Pin = TFT_MISO_Pin;

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

    GPIO_Init(TFT_MISO_Port, &GPIO_InitStructure);

 

    /* SPI1 configuration ------------------------------------------------------*/

    SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;

    SPI_InitStructure.SPI_Mode = SPI_Mode_Master;

    SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;

    SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;

    SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;

    SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;

    SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;

    SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;

    SPI_InitStructure.SPI_CRCPolynomial = 7;

    SPI_Init(SPI1, &SPI_InitStructure);

 

    /* Enable SPI1 */

    SPI_Cmd(SPI1, ENABLE);

此帖出自stm32/stm8论坛

回复

4455

帖子

3

TA的资源

版主

本帖最后由 damiaa 于 2023-3-22 14:56 编辑

1,你这个硬件的lcd和cpu之间连线是连接了1K电阻  还是是个较小的电阻?

      一般看都没有串联大电阻,不知道是否有影响。

2,看你说miso没有信号。那肯定是初始化都没有成功。肯定屏幕不会出现你想要的图像。

3,单片机要控制的lcd的腿 有复位腿,片选腿  命令/数据切换腿脚,还有spi的几个腿脚(时钟 和mosi miso),如果是gpio做模拟spi自己实现发送spi和接收spi。如果是硬件spi 就初始化好后调用相应命令。

miso没有信号有可能是上面的几种可能。复位腿,片选腿  命令/数据切换腿脚,还有spi的硬件初始化(或者软件模拟发送和接收命令没做好)

4,做了3之后还要在单片机的开始(控制IO和spi初始化之后)去用软件初始化lcd的寄存器。具体你可以看手册。

5,这个时候就可以使用控制你的lcd了。

MISO   //上拉输入 模式

此帖出自stm32/stm8论坛

点评

我用IO模拟输出是可以正常改变屏幕颜色等的,但是换到SPI方式就不行了,逻辑上就改了模拟IO变成SPI输出,所以SPI输入也不对  详情 回复 发表于 2023-3-22 14:21

回复

3985

帖子

0

TA的资源

版主

读不出来可能是

1你发的指令不对你io模拟是对的吗,能读id吗,能改颜色也不意味读正确。

2 MISO应该有上拉电阻,io口打开上拉也行

3 我记得读id得虚读一个字节,不过用过的型号和你这个不一样,你连读4个字节试试

此帖出自stm32/stm8论坛

点评

io模拟起码可以改变屏幕颜色,写入字符在屏幕显示,代表输出可以的,但是换到SPI方式输出都不可以了,更不要说读取了  详情 回复 发表于 2023-3-22 14:19

回复

43

帖子

0

TA的资源

一粒金砂(中级)

huo_hu 发表于 2023-3-22 13:07 读不出来可能是 1你发的指令不对你io模拟是对的吗,能读id吗,能改颜色也不意味读正确。 2 MISO应该 ...

io模拟起码可以改变屏幕颜色,写入字符在屏幕显示,代表输出可以的,但是换到SPI方式输出都不可以了,更不要说读取了

此帖出自stm32/stm8论坛

点评

读取你试下,正常显示不需要读,单线控制就行,不见得非得读。  详情 回复 发表于 2023-3-23 10:53

回复

43

帖子

0

TA的资源

一粒金砂(中级)

damiaa 发表于 2023-3-22 12:34 1,你这个硬件的lcd和cpu之间连线是连接了1K电阻  还是是个较小的电阻?       一 ...

我用IO模拟输出是可以正常改变屏幕颜色等的,但是换到SPI方式就不行了,逻辑上就改了模拟IO变成SPI输出,所以SPI输入也不对

此帖出自stm32/stm8论坛

回复

4455

帖子

3

TA的资源

版主

本帖最后由 damiaa 于 2023-3-22 14:57 编辑

看看MISO 是不是GPIO_Mode_IPU;         //上拉输入 模式 

如果是GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; 那就可能要外部上拉电阻?

如果用的是stm32 可以用stm32cubemx 配置spi 并且试着改变配置调试调试。

此帖出自stm32/stm8论坛

回复

2517

帖子

1

TA的资源

版主

白屏就说明你没有初始化成功,模拟可以说明SPI配置有问题,最好使一个成功的SPI的配置用,自己配置很容易就导致某一个小问题卡壳,最好用示波器抓一下,看具体是哪个引脚配置问题

此帖出自stm32/stm8论坛

回复

3932

帖子

3

TA的资源

版主

如果您需要查看本帖隐藏内容,请登录或者注册
此帖出自stm32/stm8论坛

回复

3985

帖子

0

TA的资源

版主

如果您需要查看本帖隐藏内容,请登录或者注册
此帖出自stm32/stm8论坛

回复
您需要登录后才可以回帖 登录 | 注册

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/5 下一条
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表