专注电子技术学习与研究
当前位置:单片机教程网 >> STM32 >> 浏览文章

坎坷的STM32F103 CMSIS-DAP 调试器

作者:网络大牛   来源:互联网   点击数:  更新时间:2014年05月28日   【字体:

以下转自一位电子大牛的博客: http://blog.sina.com.cn/s/blog_4680937f0101srxl.html 

我在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可以下载。到时候再试一试吧。

 

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

 

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

关闭窗口

相关文章