一、SWM341系列使用注意事项 1.1、注意:SWM341使用的是ARM China公司的STARMC1内核,它是ARM China公司的Cortex-M33实现,其技术规格与Cortex-M33几乎完全一致,因此在Keil和Segger Jlink中选择器件型号时可直接选择
由于Cortex-M33是新出的内核,因此对编译和下载软件有版本要求,如下: 1、MDK532及以上 2、Segger JLink 6.88及以上
MDK532中删除了早期MDK中默认的编译器“Compiler Version 5”,只保留了“Compiler Version 6”, 这两个编译器差异较大,之前正常工作的代码使用新版编译器编译后可能无法工作,需要特别注意。已经发现的重要区别如下: 在优化等级1下,“for(i=0; i<5000000; i++) i = i;”会被编译器完全优化掉,需使用 “for(i=0; i<5000000; i++) __NOP();”替代
1.2、Keil 仿真过程中jflash弹出问题,目前看这个只有5.38版本有,建议客户keil版本控制在5.33~5.37 --liuzc 2023-4-17
1.3、GCC在SWM341上的应用 现象:深圳高通反映SWM341 用GCC编译UI例程会报错显示内存步骤,经过排查发现arm-none-eabi-gcc 不识别 __attribute__(at(xxx))指令,导致编译错误。 --Liuzc 2023-5-25
1.4、现象:合力泰(SWM34SRE)使用MDK530(keil5.30)版本,客户编译我们SWM341,也可以识别芯片内核进行下载,但是LVGL 例程里面不勾选microlib时,会报错 Error: L6915E: Library reports error: __use_no_semihosting was requested, but _sys_command_string was referenced。 分析与解决:根据某ARM社区的引用(如下图所示),是keil AC6编译器在O0编译等级下出现的报错,需要把AC6编译器对应升级成6.15以上才能解决 --Liuzc 2023-5-25
1.5、Image2Lcd应用 现 象:客户久硕,使用的是SWM34SRE,客户用Image2Lcd工具把图片转换.c文件显示异常,其转换设置把高位设在前; 分析解决:把设高位在前的设置去掉,转换出来.c文件能正常显示;
1.6、KEIL 编译等级应用 现 象:客户目前使用SWM34SRE项目界面和功能设计完成,但是开机时间特别慢,所有界面预加载需要40多秒,经过远程检查,客户代码并没有什么问题。 分析与解决:编译等级从default改成O-fast,直接把时间缩短至15秒左右。客户希望继续优化,由于代码方面已经找不到其他拖慢地方,所有语句都是最简的。所以,建议客户其他界面的lv_obj_add_style语句加载显示过程中再调用,从而减少加载的时间。
1.7、__nop()与编译等级应用 现 象:客户使用SWM34SRE反映也奇怪的问题,程序用O0编译电容触摸可以正常初始化,用O1则不行,读取的电容触摸ID会一直不对。 分析与解决:经过检查电容触摸初始化前会有一个延时,客户的while循环延时没有加上__nop(),导致编译器在O1等级下把函数优化了,复位后不带延时会导致电容触摸初始化有问题。目前把__nop()加上即可。
1.8、经常碰到客户在使用34S的过程中,程序跑飞或找不到核后,需要进处ISP处理,为了加快对客户的问题响应,专门制作了一份ISP模式方案参考: SWM341(34S)ISP 模式参考-----------V1.2 在需要 ISP(BOOT)模式,比如 SWD 在加密锁住,或改程序找不到核,可参考如下烧录或擦除程序: 1)、ISP 引脚(A8)接 3.3V 重新上电 (或按一次 MCU 的复位脚按键),把 SWD 烧录口的 B12 B14 按下 图接 CH340 的串口 (串口转换芯片只能是 CH340 系列;3.3V 的电平,不能是 5V;不要接集线器转换);
2)、打开电脑端上位机 SYNWIT PRG 3.XX.exe (比如 SYNWIT-PRG_V3.3.6.exe) ,百度网盘下载路径:01 00 00 .
3)、波特率 115200(会自动适应,不用设置),选串口(不要选 Jlink);选 MCU(不要选 ZB103); 打开串口,复位 MCU 的复位引脚马上点击握手,会显示握手成功,点击全部擦除,会提示擦除成功。 4)、此时断开 A8 和 3.3V 的连接,重新上电或复位,就可以正常使用。 5)、建议调试时,在前面的大循环里加入延时, 比如: /* 在调测阶段, 预防程序跑飞后, 上电无法读取 MCU 核*/ uint32_t i = 0; for (i = 0; i < 666666 * 10; ++i) __NOP(); 6)、连接好硬件接口后,SYNWIT PRG ISP 上位机操作方案如下:
7)、此 ISP(BOOT)模式可以烧录程序:点击打开,打开需要的 bin 文件,点一键下载,就可以烧录完成, 擦除程序或重新烧录后,就可以重新使用 SWD 模式使用,见下:
1.9、SWM34Sxxx 产品设计 EMC 建议 Ver: 1.3 1)、整体布局,5V 转 3.3V 就近最小环路, 3.3V 供电各器件的地在滤波电容后地位置处(圆圈位置),星形接地, 或直接用 0 欧电阻分接不同的地,分别给 MCU、SPI FLASH、TFT LCD 相连(即地 1 、2、 3 );5V 的升压芯片地和 3.3V 地分开。 2)、3.3V 的供电和地线,经过滤波电容,再接到 MCU ,MCU 的每个 3.3V 供电脚,放一个滤波电容;如果 5V或 3.3V 的走线过长超过 6cm,需要过一段接个对地去耦电容,经验值 0.1uF+1000pF;3.3V 换层时尽量同时有 2个孔或大的过孔,以保证高频干扰时,3.3V 前后电位一样;滤波电容的地打 2 个以上的过孔同时连接(尽量); 3)、显示屏的 LCD_PCLK 从芯片引脚到显示屏距离最短位置摆放,芯片靠近显示屏排线座。 (LCD_PCLK 引脚SWM34S 是 B5,未使用 SD 卡时可以改用 N0),底层铺铜,CLK 信号线不要打过孔换层,两边包地,从 MCU 的地一直包着 LCD_CLK 到显示屏;两边的地多打孔到底层的地,U 形槽形状半包围 CLK 信号; 减弱 CLK 信号对外的辐射强度:外接 CRC 的方式,LCD_CLK 对地并 220pF 电容,再串电阻 100R ,并 47P 电容到地, 靠近 MCU;显示屏的地可参考第 1 项的引出点引出,不要连接其它高频地;(电阻加入后要测波形,并且留裕量,保证批量的产品都能正常工作) 参考下图示: 4)、晶振: 使用带屏蔽接地的晶振,尽可能靠近 MCU 摆放,晶振的地接 MCU 的地,底层包地,周围多打过孔,起到没有屏蔽罩也有屏蔽的作用;降低晶振的振荡幅度,改善尖状高频信号:高频晶振的输出引脚 XO 可以串入 100 欧左右的电阻或磁珠,同时在 XO XI 并联 2MΩ的电阻,晶振展频降低振荡幅度(此处要合理,需要示波器验证波形,电阻降额使用,不要串的电阻太大,导致不同的 MCU 晶振不振荡); 5)、SPI FLASH 走线不要打孔,尽可能地靠近 MCU 摆放,实物封装用 SOIC-8(比 SOP8 宽);MCU 与 SPI Flash的地尽可能多地连接,尽量正反面打孔多连接(比如 3.3V 的走线可以放外面或过顶层,底层后,让出地); 5V 地 1 3V 地 2 地 2 地 2 地 2 6)、TF 卡也要就近放,DATA 尽量平行等长;滤波电容要靠近 TF 卡的 3.3V,工作时不要有大于 500mV 纹波; 7)、MCU 底下的地要多连接各个方向,MCU 底下地多打过孔,3.3V 的电源可以换层,多打连接孔,使顶层底层的地尽可能多地接在一起;比如先在正面走线到 MCU 一半后再打孔,使 MCU 的地上下连接稳定。打孔多可以给 MCU 散热,也可以增强顶层底层地的完整的地平面效果。铺铜的端部要打孔,不要有尖端未连接的地线。 8)、5V 的器件接 5V 的地,和 3.3V 的地远离分开; 如果有升压电路,5V 分一路出来给升压电路,升压电路放在显示屏的 LEDA LEDK 就近摆放, 中间不要有高速 CLK 信号线或别的线穿过, 升压线路越短越好; 如果有功放电路,功放电流大会引起 5V 波动,可以从 5V 滤波处单独分一组地给功放,电源串入小电阻再加滤波电容,实际工作时最大音量测试 5V 各电源的纹波,减小对 5V 电源的影响; 9)、不使用的 IO 口,软件配置,(上拉输入,下拉输入,上拉输出 0,下拉输出 0 都可),不要悬浮; 10)、SWD 烧录口就近 MCU 摆放;如果超过 20CM,需要接上拉电阻 10K, 减上干扰和增强烧录的能力; 11)、对于 MCU 处的辐射,可以预留 IC 屏蔽罩,驱动显示屏的排阻和 SPI Flash,MCU 的晶振,靠近 MCU 摆放; 12)、周边螺丝孔:周边一圈环状连接,四个角落各放元件连接,再接内部的地,比如用 0.1 电容并 1M 电阻; 13)、其它高速的 CLK 或 UART,可以接 RC 限制尖脉冲,可选 33R 以下和 33P 以下容值配合,靠近发送源摆放; 14)、预留显示屏金属外壳和 PCB 的地相连,比如 PCB 的地开窗,或焊接贴屏蔽铜箔等,把显示屏外壳接地; 15)、如果 PCB 尺寸较大,引脚比较多的 MCU,MCU 对角和 PCB 对角都加 MARKING 点,方便贴片机对位; 16)、外边框要用 MECH1 层,不要用 KEEPOUT 层,按行业要求,各个 PCB 厂生产都不会有错误。 17)、ESD 抑制和抗浪涌方面,可以在 3.3V 输入 MCU 前和 USB、TF、UART 等信号脚对地并 TVS 管,在电源输入接共模电感;RST 引脚远离边缘,对 MCU 输入串 100R 电阻 ; 18)、通常测试 EMC 时,如果频点刚好在主频 150M(或 2 倍 300M),一般是 LCD_CLK 这里发出,可以更改主频验证,比如改到 120M,看是否跟着变化 ;如果晶振 12M,测试有 120M 的频点辐射,可以改为内部振荡 20M 再PLL 倍频等,看频点是否跟着改变;实际生产时,也可认降频减小辐射(在能达到刷图效果的前提下); 19)、真实案例:MCU 的引脚逆时针增加序号,FPC 接口 PIN 较多,确认清楚哪边是第一脚,不要设计反。 20)、元件在 PCB 边缘地尽量平行板边放置或远离板边以防 90 度放置,在分板时元件断裂;至少一对对称边 3—5mm 不要摆放元件,作为工作边拼板,便于批量生产。
1.10、 使用SWM341系列MCU环境配置 Ver: 1.1 SWM341是华芯微特的其中一款MCU,341和341+内置SDRAM的34S系列,其内核相同。 341芯片使用M33内核,基于Arm-v8指令集的架构,比M4还要新,对应的工具需要升级; 1)、使用KEIL版本: 在5.33以上,兼容性更好(最好是5.33—5.36之间,5.37编译时有时报错); 2)、调试工具: 可认用Jlink,或DAPlink, JLINK硬件、软件版本分别要V9以上,6.98以上; daplink需要支持armV8版本(注意,设置flash Dowhoad的SIZE,改成0x4000分配给下载算法flm的ram要充足) 3)、搭建调试环境,PACK包、基础库、软件例程、硬件原理图和PCB(AD16)、屏驱动应用笔记(强烈建议先查看) SYNWIT系列技术应用资料 (会不定时更新,请保存链接,及时下载最新内容) 百度网盘链接:https://pan.baidu.com/s/1atLWlk1_SUR8WjISr-Bfpw 提取码:byv2 图1:MCU PACK包下载地址(含多个MCU) 图2:341 各模块基础库下载路径 图3:64PIN 34SRE 主控板原理图PCB 图4:100PIN 34SVE 主控板原理图PCB 图5: 软件演示例程(多合一可选) 图6:SWM34Sxxxx驱动TFT-LCD应用笔记
4)、屏驱上位机Synwit UI Creator,已免费开放使用,所见即所得,基于LVGL 7.11的UI,下载路径:01 / 100;使用手册同目录;(注意:不要用中文名路径,路径不要太深,安装时关闭杀毒软件) 5)、34S系列介绍:内置SDRAM(有2MB 8MB 16MB几种),硬件方式驱动。34S最高主频140M。可以支持24bit/16bit / 8bit / spi 方式驱动TFT彩色液晶显示屏。具有SD/USB/CAN等接口,适合应用于对UI 显示相对高,播放AVI视频,JPEG硬解码,需要程序存储大的应用场合。建议显示屏分辨率在1024x600以内。建议在LVGL GUI v7.11以内引用运行。 6)、在使用过程中,MCU支持JLINK下载,如果发现找不到核,可以参看《SWM341找不到核参考方案》;MCU支持在加密或锁住后, ISP模式(BOOT 串口模式)擦除程序或烧录程序,参看《SWM341系列ISP模式操作参考》 |