坎坷的STM32F103 CMSIS-DAP 调试器

我在X893的设计基础上重新设计了STM32F103 CMSIS-DAP调试器(名字好长,应该缩写一下:F103-DAP)。下图为X893原版设计。

与原始设计相比,我做了如下修改: 

  • 将两个USB改为单组USB Mini接口;
  • 提供单组2.54mm/100mil脚距SWD调试口,另购转换配件支持50milSWD调试口;
  • 采用四组Pin Header共30Pin支持扩展,并兼容mikroBUS接口,可以用于快速原型构建;
  • 采用6Pin接口,通过SWD/UART1连接仿真MCU用于调试和ISP下载;
  • 跳针连接BOOT1,下载更加稳定;
  • 缺省低成本STM32F103C8T6(64KB),也可以焊接STM32F103CBT6(128KB); 

总的特性

  • CMSIS-DAP调试器,支持Keil/IAR/CoIDE和其他GCC IDE;
  • USB-HID驱动,无需安装驱动;
  • USB-CDC,支持调试代码;
  • 支持Cortex-M0/M0+/M3/M4/A7调试,并支持其他厂牌产品;
  • 支持mikroBUS,可以立刻获得超过百种扩展板,构建客户应用;
  • 支持pySWD/pyOCD等开源调试工具和编程工具。 

我昨天刚刚交给PCB厂家生产,期待首批10片样品可以工作正常并透过Taobo/Tindie投放市场。不过这一批就是手焊的了。测试完了之后,需要优先寄给X893一片。

继续前文《STM32F103 CMSIS-DAP 调试器》,设计了PCB,并手动焊接了两片。现在还未能正常工作。很遗憾。需要原设计者的协助才能够继续。 

硬件设计缺陷 

本版设计中我用台厂RickTek LDO替代了TI的LDO,虽然都是SOT23-5封装。但是直接替换后忘了确认5个引脚的连接。结果导致在原理图中看上去已经连接,但实际上VIN引脚在PCB中没有任何电气连接。 

结果,不得不手动焊接了一根飞线。看来EAGLE的替换功能存在BUG,需要额外注意。 

每次元件替换后需要仔细查看连接线。 

手动焊接失败率高 

虽然现在我已经可以手动焊接0.5mm脚距的QFP80/TSSOP20等封装。重点是:

  • 助焊剂去除氧化层;
  • 预先在焊盘上少量焊锡;
  • 将元件对准焊盘(最重要);
  • 加热焊盘,焊锡会自动吸附到引脚上; 

即便如此,两次焊接QFP,其中有一次返工;另外一次不知何故断了一个引脚,好在只是ADC,不用也可以。 

手动焊接只有靠多次焊接来积累手感和经验了。直到到达熟练工的程度。 

硬件调试问题 

我的硬件调试流程是:

  • 先焊接LDO,查看电源是否工作正常;(检查出LDO电源问题)
  • 再焊接MCU, 查看MCU是否会发热;(5V VBUS/3V3电源工作正常)
  • 再通过ISP下载代码,查看复位情况;(失败,待查RX/TX,复位,BOOT0/BOOT1)
  • 或者通过SWD/JTAG下载代码,通过调试器查看MCU的晶体和GPIO的外设工作情况;(JLINK)
  • 最后连接PC,查看USB工作情况;(一个成功安装,另外一个USB设备无法识别) 


固件设计缺陷

X893的CMSIS-DAP设备是复合设备,分别为CMSIS-DAP CDC/DCI/HID。采用Keil的USB Device协议栈。但是好像有缺陷。

通过USBVIEW查出在CDC Interface里有设计四组Unknown Descriptor,结果导致HID设备根本没有安装。而CMSIS-DAP的主设备其实就是HID。所以Windows XP安装后还是无法作为调试器使用。而CDC实际上也没有测试过。

有人报告过Windows XP中HID可以安装,CDC不可以。难道XP下还有不同情况?

Interface Descriptor:

bInterfaceNumber: 0x00

bAlternateSetting: 0x00

bNumEndpoints: 0x01

bInterfaceClass: 0x02

bInterfaceSubClass: 0x02

bInterfaceProtocol: 0x01

iInterface: 0x03 0x0409: "CMSIS-DAP CDC"

 

Unknown Descriptor:

bDescriptorType: 0x24

bLength: 0x05

05 24 00 10 01

 

Unknown Descriptor:

bDescriptorType: 0x24

bLength: 0x05

05 24 01 03 02

 

Unknown Descriptor:

bDescriptorType: 0x24

bLength: 0x04

04 24 02 06

 

Unknown Descriptor:

bDescriptorType: 0x24

bLength: 0x05

05 24 06 00 01

我准备在Linux下查看对应情况。 

源码编译问题 

源码是采用MDK4.54编译的,但是在MDK4.71下编译大量报错。有人报告MDK5不行,但是MDK4.72可以,我在官网上只有4.74可以下载。到时候再试一试吧。 

使用源码也是主要想看看那四组未知描述符是如何出现的。 

以上是最近更新报告。有情况再更新。

STM32F连接CMSIS-DAP

今天又把F103-DAP作为目标板,而OpenSDA K20 CMSIS-DAP作为调试器,在Keil中可以成功连接STM32F103C8。没错,按照缺省连接方式,的确会出现Flash擦除和编程错误。但是将复位选为软件复位既可以正常复位、擦除、编程和调试。所以CMSIS-DAP调试器可以连接STM32F103 Cortex-M3控制器

永不止步步 发表于11-25 10:25 浏览65535次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:308017个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号