对于垃圾佬的生活来说,每天逛海鲜市场是必不可少的生活片段,这不,手抖一下又刷到了一个东付的电子标价签。
价格合理,2块钱一个不包邮,直接买了N个。。。算了一下一个3.5,然后拿到群去炫耀了下,结果被群友A了一些。进入正题,拆解它:
这款应该是算最好拆解的标价签了,而且可以直接无损的安装还原回去。
先看看屏幕的型号:E029A01
这款屏幕的型号无论是微雪还是干草干不干,半塘睡不醒,或是撒垃圾车大佬的固件都有适配,所以这次海鲜市场逛值了。
再来看看主板:
哇塞,是瑞萨的DA14585耶,这款芯片是很流行BLE蓝牙,小米手环也用这个来做主控,其他大厂也都用,所以资料上应该还可以,先去下载了下他的数据手册,打开手册看看:
里面有这两引脚,看来可以入侵了,由于手头没好用的JLINK,所以买了个JLINK-OB和TTL:
等它们的同时先用万用表测下板子上的几个金属触点跟芯片的关系,这个就直接上图和数据了:
DA14585芯片调试使用相关口:
TP4 → RST
TP2&TP10 → GND
TP8 → P0_5 (RX)
TP7 → P0_4 (TX)
TP1&TP9 → VBAT 3V
TP3 → VDD
TP6 → SWDIO
TP5 → SWCLK
墨水屏接口:
BUSY → P2_0
RST → P0_7
DC → P0_5
CS → P2_1
SDI → P0_6
SCK → P0_0
PED_POWER → P2_3
闪灯IO口:
D1 → P2_5
OK,这时候JLINK-OB也到了,我们把它接上:
然后上软件,基本上我就用这个3个
smartsnippets_toolbox_v5.0.10.2434_windows
Keil 5.36
UartAssist.exe
安装好 Keil和smartsnippets_toolbox后,需要把商家给的JLINK-OB的PJ工具给复制到对应的目录;商家会给你几个文件替换破解,然后我们用everything大法来找到这几个文件替换,只要替换SmartSnippets Toolbox v5.0.10和KEIL的安装目录下的就可以了,路径下面图:
TTL后面用的少,因为JLINK-OB可以承接所有工作,所以TTL只是用来看调试信息输出日志。我们先打开DA的 SmartSnippets Toolbox v5.0.10 工具,然后接上JLINK-OB+上面的黑色价签板子,需要焊接好线。
点击NEW
输入名称,随便都可以,然后点SAVE
勾选下JTAG的那个ID 123456和芯片DA14585-00,然后点击OPEN
进入后蓝色的日志说明没啥问题,然后再点击1后点击2,查看OTP表
OTP表其实之前在看数据手册和其他教程的时候对它有误解,所以我们先点2看看
此时OTP表还是没有被加载,需要点击下connect,于是点了下,见证奇鸡的时刻了。
完美,日志还是蓝色的,如果有出现红色的日志,有办法的,不慌,一种是用黄色的REST线去碰下红色的VCC线,让他REST下,因为他是高电平复位,所以碰个一两秒三秒啥的,然后再断开JLINK-OB,重新插电,基本上就可以了。
或者可以先不拔掉,先REST下3秒,然后再点connect试试,我基本上都这么试过都可以,然后确实实在不行的话,检测下线的问题,杜邦线插多次就会萎了,换下就好了,还有就是JLINK-OB,我买的这个JLINK-OB居然GND虚焊,导致我每次一动下GND那个线PC就会不断的发出USB拔插掉线上线的声音,所以你们看到的我的JLINK-OB是裸的,其实TB买回来是有热缩管套的。。。所以呢,我就把它热缩管脱掉,拆看了下,GND那边是被虚焊了,自己补一下,现在稳稳的,都不红色报警日志了。
继续之前的,点击了CONNECT之后,可以看到,OTP是被写过的(第一二行显示YES),这时候是不是有种蓝瘦香菇的感觉?感觉买亏了?
再点下Read From memory 看看有没有奇鸡发生
当。。。嘎了!OTP还是显示 YES,如果没有被OTP的话,应该是显示NO
于是乎又上了海鲜市场搞了一些没有OTP的板子(想把没有OTP的吹下来,焊接替换掉这个有OTP的DA14585芯片的板子上),订单已下,老板人好,是个墨水屏常年玩家,告诉我,其实就算OTP了也可以用的。。。纳里???
不过做人还是要厚道点,单我买了,交点学费了吧。所以等没被OTP板子到的时候,我又开始了研究,结合老哥给的资料和信息我来重新对OTP认识下;
其实OTP这部分,得看厂家的人品了,OTP的意思是一次性的写入,写后就不能更改了,所以英文翻译过来是一次编程one time program,但是这么好的芯片不至于设计成这样吧?所以DA14585这里有提供了一个小技巧(二次启动);就是如果你不想让别人再用的话,就把程序编写好后生成二进制直接写入OTP,也就是在OTP里面写你自己的APP,启动的时候(一次启动)就直接加载启动到OTP里了;但是如果你想再次使用做开发的话,就不能直接把APP写在OTP里了,那怎么办?那就在OTP里面烧个二次启动BOOT的程序呀,这个二次BOOT结合外部SPI-Flash进行启动,程序APP可以烧到外部SPI-Flash里(所以可以多次刷写APP到SPI里),但是二次启动的BOOT已经固化到OTP里了;也就是说,OTP里面如果烧录的是二次BOOT的话,那就可以多次利用了,那这个芯片你就继续可以玩,不怕被OTP的限制无法使用。所以捡漏OTP的大致流程是(右边的流程才捡漏哈):
所以我上面为啥说OTP这部分,得看厂家的人品了;
所以对OTP的理解,其实就是取决于买到的芯片里面的OTP装了啥程序,如果是二次BOOT的程序你就开心了,如果是正常的APP程序,你就买嘎了。然而二次BOOT程序厂家一般也都是直接去DA官方下SDK编或者直接有官方编好的HEX的文件拿来用了,基本上都是官方标准的代码,所以大家也可以去下载瑞萨的DA14585X的SDK看,里面有二次BOOT的代码。所以,怎么说呢,如何判断OTP里面是不是写了二次BOOT还是APP,这个本人也暂时无法识别,有知道的老哥哥们教我下,感谢!然后我们继续,既然流程图上是说OTP如果被刷入二次BOOT的话SPI-FLASH应该刷的是APP,所以我们写个APP,烧到SPI-FLASH看看不就可以了?OK,开始前,我们先看看SPI-FLASH是否可以读取,点击红色框,进入SPI-FLASH界面
Connect成功
然后读取32K看看,点击 Read 32kb按钮
看来这个地方可以被读取的,也可以被擦除的,所以我们先开始写个闪灯的代码吧。
这个板子其实还可以用来做开发板,因为板子上预留了一个LED灯的空焊接,这个测了下,是跟芯片的P2_5引脚相通,那么就可以闪灯走起来。
先看下板子对比图,一个是我没焊接灯的,一个是我焊接了灯的,那边我加了个600欧的R4, LED用了0603的以前的料子焊接到D1,上板子是我焊好的,下面图是原来的没有焊R4和D1的对比。
OK,先去官网或者其他渠道下载DA的SDK,我用的是SDK_6.0.18.1182.1,里面自带blink工程,路径参考图片下面的文件路径:
闪灯代码
这里我们要修改一下了,因为要闪灯,所以引脚要对得上,先看看代码里面的 LED_PORT和 LED_PIN是多少。
好家伙是1和0,那么就跟我们的P2_5对不上了,代码中的Port 就是P 下划线5就是PIN,所以P2_5对应的代码就是 GPIO_PORT_2 和 GPIO_PIN_5,改它!
顺便看下上面的串口P0_4,这个跟我们黑色板子对得上,所以不需要改。
选一下工程DA14585,点Rebuild
很快就构建完成了,基本上没有报错,妥妥的生成了bin文件。
然后我们进行DEBUG看看,灯闪不闪,先进行JLINK设置
点击魔法棒-切换到DEBUG标签页面USE选择JLINK,然后点击Settings
如果你有插着JLINK-OB并且替换好商家给的那几个DLL和EXE的话,这里就会显示这些信息:
都不用动,点击确定就好,外面的那个点击OK就好。然后我们开始点DEBUG按钮
到汇编这个页面不用管,直接按F5
按F5后
完美成功闪亮。
本节我们就只是熟悉开发环境,点灯,感兴趣的同学关注下等待我们下一节的更新。
关于墨水屏的学习,希望大家Enjoy,我们一步一步的会进行更多开源好玩儿项目的开源。
往期推荐
老宇哥带你玩转 ESP32:14 亲自动手做一个双向通讯的无线遥控器(一)
老宇哥带你玩转ESP32,12篇基础教程已经更新完毕,接下来是进阶教程
老宇哥带你玩转 ESP32:05 ADC用起来这也太简单了吧
老宇哥带你玩转ESP32:02使用VSCode+PlatformIO搭建开发环境