[综合信息] 【SWM166-SPI-Y1.28C1测评】拆解 与 熟悉SDK

[复制链接]
 楼主| dvacos 发表于 2023-12-24 22:48 | 显示全部楼层 |阅读模式
<
非常感谢华芯微特 和 21IC提供的评测机会,拿到旋钮屏Demo后的拆解和一些开发上疑问
在昨天公布名单后,下午的快递就已经寄出,非常快速,今天早上本人就已经拿到了,于是中午午休的时候就开始了拆解,所以图片都是在没有环境光的情况下拍摄的,请见谅!
fa30a4d6a1c27206d925efd50de4f618
拿到手简单的观察了一下,发现是给客户演示的Demo,不是想象中的开发板的样子,并且网盘的资料中,没有FPC的引脚定义,和底板简单的测量一下后发现是有连接SWCLK SWDIO RX TX的足够简单的调试和开发了,但是我还是想拆开看看板子。
步骤如下:
1、卸下底部的三颗螺丝,并且挑开正面的排线,小心分开!
79a81b6eb0744e9a09f2af7ffe30656d
2、一只手捏着外框,另外一只手轻轻推动屏幕,外框可以取下来。
0deee459c78a139b24e3d55c834da744
取下外框(金属的)的效果
76d8fb199f966ed6e3bd64e4b524e093
外框
3e3057d57f5cea877bb52f0d4a9bf3fe
去掉塑料底框,使用镊子将倒扣抠出来,翘松的同时对外推,重复3次就可以取下
8b87ca37e2857b0ebf9cf52936ac6f0e
取下塑料底框之后,就可以看见PCB了,最后卸掉4颗螺丝即可,看见就PCB了
注意 注意 取下的时候需要小心,不要扯断屏幕的排线!!!!
351280ed94c8012529db00e733f063b5
下图就最后的拆解效果了
屏幕+PCBA大合照
46bf90b6c17f3102115c9adf13314b87
PCBA
f9924365385729dcf405015314ae16ac
基本上是一个最小系统 +外挂16M Flash+LDO+编码器外围电路
开发环境
安装Pack包,Pack包可以在官方给的百度云上下载
双击安装就可以了,没什么问题
由于没有看见开发板相关的使用手册,也没有看见配套的原理图和layout图,找了一圈,只能老老实实的使用万用表,一根线一根线的测量通断。
ea9a73213769f5aa7bdd59877036325f
最终的接线图如上,一个SWD接口,两个串口,PB7,与5v的正负极。
PS:我们插入micro-usb供电的时候,已经提供了5V的电源了,烧录的时候共地就可以了,所以SWD接口只要接3个就好咧。
3、接好线之后,发现一直无法连接到芯片,J-link可以正常连接其他芯片,于是乎拆开来测量,排线与座子的通断,结果是连接正常,但是没有找到正确的原理图,不能测量芯片引脚到座子的通断。
于是我更换了4个可以正常使用的J-Link,更换了2个ST-LinK,CMSIS 、1个DAP-Link,都不能连接!!
所以我就怀疑引脚虚焊了,以下的两个图看起来真的非常像虚焊!所以我补焊了芯片的四边焊盘。
b8134be0dda00a6a7e59dd08a537167f 46b446ccea787b12863916479ec3ee41
在补焊之后,芯片可以正常连接了,所以怀疑是板子是虚焊+运输途中的震动导致的无法连接
4984d8b0b29adce83d014c785be6f5e4
终于连接成功了!!!!
4、打开SWM166的工程默认选择的却是SWM211的芯片 和 工程
1ba312f67b5caed595393d4d438db573
6b9ee3975eb1ef2e02cc7491e2558b5e
修改后,发现无法下载 和 连接
4bc603821ec61d70c5d706ec9fc9b369
选择了J-Link后,一直提示上图,所以只能死马当活马医,直接用SWM211X8下载,发现下载后可以正常运行!!!
但是下载几次之后又不能下载了,就算每次手动选择了J-Link还是会提示上图!!只能每次出现问题就重新解压一次原有工程,手动同步修改,很难受。
ebe22393b7c67dfdf86a7f3fe79cca7b
Keil 5 版本,希-望原厂可以解决一下下,顺便把开发相关文件补上(J-flash的下载算法之后要打包进PACK包里吧?现在找不到)。
5、熟悉代码
60224dd7a8613eb7f312cdacbd408075
我主观的觉得代码的结构有点混乱,初始化相关的函数可以放在一个初始化函数内,而且相关的外设可以用宏来控制。而且没用的代码就删掉吧!此次的Demo里没有TP。
98ed073466f8103ca44e07afcd85a13a
点RGB灯的函数在Show_**里面,屏蔽之后就没有灯光了。
f91d9032ff4f279a4aa1727c5292e379

6、控制刷图的代码就在Show_meau_First里面了。
//显示汉字
LCD_ShowImg(65, 50 ,ID + ICO_Font_BianPinJieDong);
可以看见显示文字都是贴图的,所以我们打开素材看看,进一步确认一下
a5d6684579e1fcdab43163acce3724b1
素材证实了文字就是贴图的,但是为什么还是那么多锯齿?如果贴图也是那么多锯齿,还不如用点阵字库,点阵字库会更加节省空间。
//显示图标
将LCD_ShowImg(60,90,ID + ICO_Big_BianPinJieDong);
d2cc0b0b6ebb2c52e11a874d6d525783
改成LCD_ShowImg(0,0,ID + ICO_Big_BianPinJieDong);
a3c8d135bf01c4fac3cffaf8daaa4d28
可以看见坐标轴的0,0是屏幕正对我们的左上角。
以上就熟悉了基本的刷图API了
查阅了一下按键扫描 和 菜单逻辑实现的代码,短时间内搞清楚有点困难,而且容易改出BUG,因为非常多的if esle组合而成的逻辑,所以我们需要一些Log(日志)来判断代码运行到哪里了,调试也是一种手段,但是我个人认为调试没有使用Log方便。
75c02edd9a2a4a7fe46068ebcffb84e3 adf8f5adebc76a04734c910cb0804576
可以看见main函数的第二行就初始化了波特率为921600的串口,具体的配置可以到UART_InitStructure这个结构体里看一下注释。
bbe9985480f5bfa377e2fe5159502852
呃,代码里缺少了一些头文件,手动添加#include "stdint.h" 这个标准库就没有这些警告了。
所以上面的代码是数据位8位,没有奇偶校验,1位停止位,并且使能串口RX TX的FIFO的相关配置和超时配置!

7、串口既然已经初始化完毕了,我们随便printf一些数据,但是烧录的时候又、又、又识别不到芯片了,重新解压工程也没有办法识别到芯片了,所以只能后续等我重新焊接后再来测试了。。。

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

本版积分规则

25

主题

115

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部