数码之家

 找回密码
 立即注册
搜索
查看: 1862|回复: 44

屏幕点不亮呀,太难了

[复制链接]
发表于 2023-10-21 12:38:03 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 猪小呆 于 2023-10-21 13:27 编辑

小白也想学大神玩点屏,老五家3块钱的TFT屏,看评价里大神已经点亮了
O1CN01ti2Gcm1pJlrtaENou_!!0-rate.jpg

于是自己画了转接板,接上9块9还包邮的合宙树莓派pico板子,网上找的代码瞎改了改,只能点亮背光,想读取屏幕的ID读取不了,不知道问题在哪里,各位大神看我这代码写的对不对?根据规格书,读取ID的命令是00,我用的是硬件SPI,这是9位SPI的屏(多出一位用0表示命令,1表示数据)所以我用了16位来模拟,反正都是0,8位和16位没区别
image.png
image.png
7926c28a1bb7d816a9e21b5afdeba79.jpg





 楼主| 发表于 2023-10-21 12:53:28 | 显示全部楼层
这是我的代码:
  1. #include <Arduino.h>
  2. #include <SPI.h>
  3. #define TFT_SCL 2
  4. #define TFT_SDI 3
  5. #define TFT_SDO 4
  6. #define TFT_CS 5
  7. #define BL_EN 6
  8. #define LCD_RST 7

  9. void setup()
  10. {
  11.   Serial.begin(1200);
  12.   while (!Serial);
  13.   Serial.println("test start...");
  14.   pinMode(BL_EN,OUTPUT);
  15.   digitalWrite(BL_EN, HIGH);
  16.   pinMode(TFT_CS,OUTPUT);

  17.   SPI = MbedSPI(TFT_SDO, TFT_SDI, TFT_SCL);
  18.   SPI.begin();
  19.   //SPI.beginTransaction(SPISettings(2000000, MSBFIRST, SPI_MODE2));
  20.   digitalWrite(TFT_CS, LOW);
  21.   uint16_t ret = SPI.transfer16(0x0000);
  22.   digitalWrite(TFT_CS, HIGH);
  23.   //SPI.endTransaction();
  24.   Serial.print("read 0x00=");
  25.   Serial.println(ret,HEX);


  26. }

  27. void loop()
  28. {
  29.   //
  30. }
复制代码
回复 支持 反对

使用道具 举报

发表于 2023-10-21 13:15:42 | 显示全部楼层
大神都双休了

这屏还挺大个的
回复 支持 反对

使用道具 举报

发表于 2023-10-21 13:35:35 | 显示全部楼层
alangxl 发表于 2023-10-21 13:15
大神都双休了

这屏还挺大个的

双休?
双修?
死鬼,你讨厌!
回复 支持 反对

使用道具 举报

发表于 2023-10-21 14:15:13 来自手机浏览器 | 显示全部楼层
晚上点,白色不是亮了吗???
回复 支持 反对

使用道具 举报

发表于 2023-10-21 14:41:31 来自手机浏览器 | 显示全部楼层
程序不全吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-21 14:52:41 | 显示全部楼层

还缺什么东西吗?
回复 支持 反对

使用道具 举报

发表于 2023-10-21 15:31:42 来自手机浏览器 | 显示全部楼层
8位SPI,不是9位SPI,5位地址,1位IM,1位RS,1位读写
回复 支持 反对

使用道具 举报

发表于 2023-10-21 15:34:19 | 显示全部楼层
你这太高端了不懂啊,问老五要资料要例程,还有这个商品的评论区看看,看看别人咋点亮的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-21 18:38:59 | 显示全部楼层
595953427@qq 发表于 2023-10-21 15:31
8位SPI,不是9位SPI,5位地址,1位IM,1位RS,1位读写

这个是三线9位的SPI,没有RS线:
image.png
回复 支持 反对

使用道具 举报

发表于 2023-10-21 19:36:56 | 显示全部楼层
三线9bitSPI如果用硬件SPI的话,用16bitSPI是对的,用8位通讯的话也是要发送两次才能完成,另外,硬件SPI模式(时钟相位、数据高低位)要匹配好,建议用逻辑分析仪看下波形对照一下数据手册。
回复 支持 反对

使用道具 举报

发表于 2023-10-21 22:39:08 | 显示全部楼层
别上来就 TFT 啊,最后除了 Ctrl+C / V 代码,啥都体验不到。

先玩 1602,写通了再 12864,再通了随你去玩什么屏
回复 支持 1 反对 0

使用道具 举报

发表于 2023-10-22 08:48:51 | 显示全部楼层
楼上说的对  先玩溜了1602
回复 支持 反对

使用道具 举报

发表于 2023-10-22 12:58:56 来自手机浏览器 | 显示全部楼层
猪小呆 发表于 2023-10-21 18:38
这个是三线9位的SPI,没有RS线:

3线8位SPI,RS也是其中一位
回复 支持 反对

使用道具 举报

发表于 2023-10-22 17:57:48 | 显示全部楼层
楼主说的三线SPI应该是1位指令+8位数据的时序。类似与下图:


45.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-22 18:18:16 | 显示全部楼层
慕名而来 发表于 2023-10-22 17:57
楼主说的三线SPI应该是1位指令+8位数据的时序。类似与下图:

规格书上这个图,意思是不是SPI发数据的时候要先发一串特别的代码才行?
image.png
回复 支持 反对

使用道具 举报

发表于 2023-10-22 18:35:43 | 显示全部楼层
楼主,我提出一个疑问哈。你发送一个命令是9位,那么接收一个数据是不是也是9位呢?
好,现在重现一下你的发送过程。
你发送了一个16位数据,单片机这边产生了16个上升沿。
前9个上升沿用于向屏幕写入命令
后面7个上升沿用于读取数据
但是,7个上升沿够用么?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-22 18:42:24 | 显示全部楼层
renpeng009 发表于 2023-10-22 18:35
楼主,我提出一个疑问哈。你发送一个命令是9位,那么接收一个数据是不是也是9位呢?
好,现在重现一下你的 ...

晕,我不懂SPI的具体工作过程,只知道数据是一位一位的发,SDI负责接收单片机的数据,SDO负责向单片机发送数据,我以为屏幕收到9位的数据后就会自动向单片机发送8位的数据回来,时钟是怎么控制的我是一点不知道啊
回复 支持 反对

使用道具 举报

发表于 2023-10-22 18:49:34 | 显示全部楼层
我又仔细看了一下你发的手册,看上去不是9位SPI啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-10-22 18:56:13 | 显示全部楼层
renpeng009 发表于 2023-10-22 18:49
我又仔细看了一下你发的手册,看上去不是9位SPI啊

我也搞不懂了,淘宝评价里已经点亮的大神说是3线9bit屏,规格书上好像又不是,这下彻底晕了
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2024-4-28 07:54 , Processed in 0.187201 second(s), 14 queries , Redis On.

Powered by Discuz!

© 2006-2023 smzj.net

快速回复 返回顶部 返回列表