数码之家

 找回密码
 立即注册
搜索
查看: 17083|回复: 39

另一款汉朔Stellar-XL 4.2寸墨水屏拆解 反汇编提取初始化代码和波形表

    [复制链接]
发表于 2021-9-13 23:55:24 | 显示全部楼层 |阅读模式
上一贴“两款汉朔4.2寸墨水屏价签拆解与点亮”介绍了2款4.2寸价签,今天又遇到另一款Hanshow Stellar-XL,值得再发一贴。

外观一样,玄机依然在内部。



拆开后盖,主板也是一样的,区别在墨水屏

排线的形状很特殊,通向2片主控IC



排线型号


搜索到名为HINK-E042A03的文档,与实物相符




从文档中了解到,主控IC是SSD1608,分辨率是240x320,支持双片级联扩展分辨率至480x320,从而驱动400x300的面板。


同时还发现,24pin排线的1脚(MSP430G2553的P3.7)在其他价签中是空脚,在这里是从IC的片选CS2。
看来,汉朔价签的24pin定义是一致的。

有公开资料的墨水屏都没有使用SSD1608的,所以找不到示例程序。
照例反汇编,提取初始化代码和波形表,整理如下:

  1. const uint8_t EPD_lut[30]={
  2.   0x66, 0xa6, 0x6a, 0x66, 0x55, 0x99, 0xaa, 0x66,
  3.   0x55, 0x95, 0xaa, 0xaa, 0x59, 0x55, 0xaa, 0x55,
  4.   0x88, 0x11, 0x11, 0x88,
  5.   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  6.   0x8f, 0x8f,
  7. };

  8. void init()
  9. {
  10.   EPD_RST_LOW;
  11.   delayMS(10);
  12.   EPD_RST_HIGH;
  13.   delayMS(10);
  14.   EPD_CS1_LOW;
  15.   EPD_CS2_LOW;
  16.   EPD_WriteCMD(0x12);
  17.   while(EPD_isBusy());
  18.   EPD_WriteCMD3DAT(0x01, 0x2b, 0x01, 0x00);
  19.   EPD_WriteCMD1DAT(0x3a, 0x16);
  20.   EPD_WriteCMD1DAT(0x3b, 0x08);
  21.   EPD_WriteCMD1DAT(0x21, 0x83);
  22.   EPD_WriteCMD1DAT(0x3c, 0x33);
  23.   EPD_WriteCMD1DAT(0x11, 0x01);
  24.   EPD_WriteCMD2DAT(0x44, 0x00, 0x18);
  25.   EPD_WriteCMD4DAT(0x45, 0x00, 0x00, 0x2b, 0x01);
  26.   EPD_WriteCMD1DAT(0x2c, 0xb9);
  27.   EPD_WriteCMD(0x32);
  28.   EPD_WriteMultiDAT(EPD_lut, 30);
  29.   EPD_CS1_HIGH;
  30.   EPD_CS2_HIGH;
  31. }

  32. void write_left(uint8_t *dat)
  33. {
  34.   EPD_CS1_LOW;
  35.   EPD_WriteCMD1DAT(0x4e, 0x00);
  36.   EPD_WriteCMD2DAT(0x4f, 0x00, 0x00);
  37.   EPD_WriteCMD(0x24);
  38.   EPD_WriteMultiDAT(dat, 7500);
  39.   EPD_CS1_HIGH;
  40. }

  41. void write_right(uint8_t *dat)
  42. {
  43.   EPD_CS2_LOW;
  44.   EPD_WriteCMD1DAT(0x4e, 0x00);
  45.   EPD_WriteCMD2DAT(0x4f, 0x00, 0x00);
  46.   EPD_WriteCMD(0x24);
  47.   EPD_WriteMultiDAT(dat, 7500);
  48.   EPD_CS2_HIGH;
  49. }

  50. void refresh()
  51. {
  52.   EPD_CS1_LOW;
  53.   EPD_CS2_LOW;
  54.   EPD_WriteCMD1DAT(0x22, 0xc7);
  55.   EPD_WriteCMD(0x20);
  56.   EPD_CS1_HIGH;
  57.   EPD_CS2_HIGH;
  58.   while(EPD_isBusy());
  59. }

  60. void sleep()
  61. {
  62.   EPD_CS1_LOW;
  63.   EPD_CS2_LOW;
  64.   EPD_WriteCMD1DAT(0x10, 0x01);
  65.   EPD_CS1_HIGH;
  66.   EPD_CS2_HIGH;
  67. }

  68. void main()
  69. {
  70.   init();
  71.   write_left(...);
  72.   write_right(...);
  73.   refresh();
  74.   sleep();
  75.   while(1);
  76. }
复制代码


双IC的操作方式很特别。初始化写入寄存器时,两个片选都拉低。写入RAM数据时,分左右半屏,主从IC分别拉低片选。最后刷新时,又要同时拉低片选发送指令。
成功驱动的照片就不发了,和上一贴一样还是无灰度的黑白单色显示。






汉朔Stellar-M单色电子墨水屏价签之无损改造+降低功耗+无线刷图
https://www.mydigit.cn/thread-236338-1-1.html

汉朔电子墨水屏价签的实用化——制作基站发送天气和时间
https://www.mydigit.cn/thread-247117-1-1.html

汉朔2.13寸电子墨水屏价签改造成桌面时钟摆件
https://www.mydigit.cn/thread-270617-1-1.html

两款汉朔4.2寸墨水屏电子价签拆解与点亮,型号都是Stellar-XL
https://www.mydigit.cn/thread-274369-1-1.html

本帖子中包含更多资源

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

x

打赏

参与人数 11家元 +220 收起 理由
jf201006 + 20 謝謝分享
moontree + 20 謝謝分享
黯然销魂 + 20 原創內容
kkdkj + 20 謝謝分享
xuyaz + 20
ch104517745 + 20
兔包公 + 20 優秀文章
aladdincp + 20 優秀文章
abigbell + 20
nokia5320 + 20

查看全部打赏

本帖被以下淘专辑推荐:

发表于 2024-10-2 12:24:17 | 显示全部楼层
佩服反汇编的大佬
回复 支持 反对

使用道具 举报

发表于 2023-9-22 00:59:32 | 显示全部楼层
好难找的材料
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-22 08:51:57 | 显示全部楼层
本帖最后由 reiyawea 于 2023-8-22 08:55 编辑
慕名而来 发表于 2023-8-21 16:17
请教楼主,两个IC驱动一个屏幕并且半个屏幕分辨率为200*300,而每个IC的RAM都是240*320,如此一来,显示400 ...

可以理解成左右两半屏,每片都是200*300,分别写入半张图片的数据到RAM就好了。
假设图像是const uint8_t image[300][50],也就是一行50字节(400点),共300行,那么可以这样
  1. for y = 0 to 299
复制代码
而这片屏是双IC驱动一片面板,如果只让其中一片IC工作,就只有半边屏的电极动作,属于异常状态,后果很难说。
原则上局刷波表都应由面板厂家提供,而且应该也是双IC同步刷新。

不知道为什么贴代码自动就只剩一行了。希望站长能改进一下

for y = 0 to 299
  for x = 0 to 50
    if x < 25 then
      写左半边(image[y][x])
    else
      写右半边(image[y][x])
    end if
  end for
end for



回复 支持 反对

使用道具 举报

发表于 2023-8-21 16:17:56 | 显示全部楼层
请教楼主,两个IC驱动一个屏幕并且半个屏幕分辨率为200*300,而每个IC的RAM都是240*320,如此一来,显示400*300的图片时,RAM地址怎样设置呢,而刷满半屏200*300时对于一片ssd1608而言应该进行全局刷新还是局部刷新呢,再有就是指令寄存器0x22的指令值是怎样生成的,这个屏我搞了好久也没弄明白,希望楼主能指点一下。
回复 支持 反对

使用道具 举报

发表于 2023-8-14 22:19:45 | 显示全部楼层
双IC驱动+反汇编
回复 支持 反对

使用道具 举报

发表于 2023-3-15 21:01:24 | 显示全部楼层
大佬就是大佬,没有资料都能反汇编
回复 支持 反对

使用道具 举报

发表于 2023-3-13 16:11:06 | 显示全部楼层
反汇编是dump了固件吗
回复 支持 反对

使用道具 举报

发表于 2023-3-4 09:29:13 | 显示全部楼层
佩服,很厉害的大佬!
回复 支持 反对

使用道具 举报

发表于 2023-2-25 18:27:08 | 显示全部楼层
原生4灰度也是换了个lut全刷
学习一下
回复 支持 反对

使用道具 举报

发表于 2023-2-25 18:26:18 | 显示全部楼层
原生4灰度也是换了个lut全刷  
回复 支持 反对

使用道具 举报

发表于 2023-2-25 18:25:43 | 显示全部楼层
厉害了   大佬
回复 支持 反对

使用道具 举报

发表于 2023-2-9 16:38:19 | 显示全部楼层
能看能写汇编的都是大材,反汇编的都是大神
回复 支持 反对

使用道具 举报

发表于 2023-2-9 11:59:02 | 显示全部楼层
哇!!膜拜大神!
回复 支持 反对

使用道具 举报

发表于 2022-8-5 19:43:47 | 显示全部楼层
snto 发表于 2021-9-14 12:12
屏哪搞呢?多钱?esp8266能驱?

新手不建议玩这个双ic得屏,驱动麻烦,要改电路,还是玩那种单IC得,比如ssd1619,等
回复 支持 反对

使用道具 举报

发表于 2022-5-25 11:27:46 | 显示全部楼层
楼主,你反汇编的软件能说下,我看您之前的帖子里的打不开了
回复 支持 反对

使用道具 举报

发表于 2021-10-9 16:20:36 | 显示全部楼层
直接读出程序,反汇编啊,真熟练
回复 支持 反对

使用道具 举报

发表于 2021-10-7 22:49:50 | 显示全部楼层
高手,反汇编写代码
回复 支持 反对

使用道具 举报

发表于 2021-10-7 16:33:34 来自手机浏览器 | 显示全部楼层
大神,膜拜一下:lol:
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-6-7 14:27 , Processed in 0.140400 second(s), 15 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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