3028|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));

}

下面是原理图接线

此帖出自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论坛
 
 

回复

6105

帖子

4

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
 
 

回复

4008

帖子

0

TA的资源

版主

4
 

读不出来可能是

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

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

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

此帖出自stm32/stm8论坛

点评

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

回复

43

帖子

0

TA的资源

一粒金砂(中级)

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

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

此帖出自stm32/stm8论坛

点评

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

回复

43

帖子

0

TA的资源

一粒金砂(中级)

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

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

此帖出自stm32/stm8论坛
 
 
 

回复

6105

帖子

4

TA的资源

版主

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

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

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

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

此帖出自stm32/stm8论坛
 
 
 

回复

6450

帖子

9

TA的资源

版主

8
 

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

此帖出自stm32/stm8论坛
 
个人签名

在爱好的道路上不断前进,在生活的迷雾中播撒光引

 
 

回复

6960

帖子

11

TA的资源

版主

9
 

spi屏要注意。极性的问题,你查看一下你的屏的参数,还有就是线接触好不好。最好是用示波器看一下时序,有时通讯速率太高也会有影响。你拿包出来,跟摸拟的比较一下。

此帖出自stm32/stm8论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

10
 
千本樱大白 发表于 2023-3-22 14:19 io模拟起码可以改变屏幕颜色,写入字符在屏幕显示,代表输出可以的,但是换到SPI方式输出都不可以了,更 ...

读取你试下,正常显示不需要读,单线控制就行,不见得非得读。

此帖出自stm32/stm8论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
查看计算机网络故障的命令

一、Ping命令 Ping命令在检查网络故障中使用广泛。网络管理人员经常会接到远程用户反映他的主机有故障,如不能对一个或几个远程系 ...

ZT:电子毕业生如何规划你的人生

一、 怎样规划你的毕业后的人生     我今年39岁了, 25岁研究生毕业,工作14年,回头看看,应该说走了不少的弯路,有一些 ...

本项目电路图

为了学习jtag协议,请有意思的爱好者下载制作!

读取LPC ARM芯片唯一序列号的方法

对于ARM芯片基本都有唯一序列号,这产权保护,产品加密,产品序列号设置带来了极大的方便。但是不同厂家,甚至同一厂家不同系列 ...

【暑期酷学】如何设计一个产品

眼看暑假快过完了,我领的暑期酷学的任务还没完成,真对不起大家。不过话说回来,我看管理员总结的这几个题目,看着简单,实际上 ...

iTOP-4412开发板android4.4代码下载和编译

基于iTOP4412开发板 Android 源码可以从光盘,网盘获取稳定版本,也可以从 GitHub 下载我们的开发版本。 GitHub 仅提供源码下 ...

模拟电路设计中应该注意的问题总结

模拟电路的设计是工程师们最头疼、但也是最致命的设计部分,尽管目前数字电路、大规模集 成电路的发展非常迅猛,但是模拟电路的 ...

颁奖:ADI & 世健 新基建系列第二期——储能 答题赢好礼!

ADI & 世健 新基建系列第二期——储能 答题赢好礼!活动颁奖啦! 名单详见下方列表。请获奖者务必在2020年12 ...

ubuntu下实现cw32l031的工程创建、编译、下载与调试

目前官方提供CW32L083只提供了MDK、IAR下的固件库、启动文件。我有过成功CW32L083的项目移植的经验,现在成功的把CW32L031的工程 ...

DigiKey“智造万物,快乐不停”创意大赛】完成贴-基于STM32H7B3I的傅里叶频谱仪

基于STM32H7B3I的傅里叶频谱仪 作者:wenyangzeng 作品简介基于STM32H7B3I的傅里叶频谱仪, 765277 765279 ...

关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表