我在X893的设计基础上重新设计了STM32F103 CMSIS-DAP调试器(名字好长,应该缩写一下:F103-DAP)。下图为X893原版设计。
与原始设计相比,我做了如下修改:
总的特性
我昨天刚刚交给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,不用也可以。
手动焊接只有靠多次焊接来积累手感和经验了。直到到达熟练工的程度。
硬件调试问题
我的硬件调试流程是:
固件设计缺陷
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控制器。