以下轉(zhuǎn)自一位電子大牛的博客: http://blog.sina.com.cn/s/blog_4680937f0101srxl.html
我在X893的設(shè)計基礎(chǔ)上重新設(shè)計了STM32F103 CMSIS-DAP調(diào)試器(名字好長,應(yīng)該縮寫一下:F103-DAP)。下圖為X893原版設(shè)計。
與原始設(shè)計相比,我做了如下修改:
- 將兩個USB改為單組USB Mini接口;
- 提供單組2.54mm/100mil腳距SWD調(diào)試口,另購轉(zhuǎn)換配件支持50milSWD調(diào)試口;
- 采用四組Pin Header共30Pin支持?jǐn)U展,并兼容mikroBUS接口,可以用于快速原型構(gòu)建;
- 采用6Pin接口,通過SWD/UART1連接仿真MCU用于調(diào)試和ISP下載;
- 跳針連接BOOT1,下載更加穩(wěn)定;
- 缺省低成本STM32F103C8T6(64KB),也可以焊接STM32F103CBT6(128KB);
總的特性
- CMSIS-DAP調(diào)試器,支持Keil/IAR/CoIDE和其他GCC IDE;
- USB-HID驅(qū)動,無需安裝驅(qū)動;
- USB-CDC,支持調(diào)試代碼;
- 支持Cortex-M0/M0+/M3/M4/A7調(diào)試,并支持其他廠牌產(chǎn)品;
- 支持mikroBUS,可以立刻獲得超過百種擴(kuò)展板,構(gòu)建客戶應(yīng)用;
- 支持pySWD/pyOCD等開源調(diào)試工具和編程工具。
我昨天剛剛交給PCB廠家生產(chǎn),期待首批10片樣品可以工作正常并透過Taobo/Tindie投放市場。不過這一批就是手焊的了。測試完了之后,需要優(yōu)先寄給X893一片。
繼續(xù)前文《STM32F103 CMSIS-DAP 調(diào)試器》,設(shè)計了PCB,并手動焊接了兩片,F(xiàn)在還未能正常工作。很遺憾。需要原設(shè)計者的協(xié)助才能夠繼續(xù)。
硬件設(shè)計缺陷
本版設(shè)計中我用臺廠RickTek LDO替代了TI的LDO,雖然都是SOT23-5封裝。但是直接替換后忘了確認(rèn)5個引腳的連接。結(jié)果導(dǎo)致在原理圖中看上去已經(jīng)連接,但實(shí)際上VIN引腳在PCB中沒有任何電氣連接。
結(jié)果,不得不手動焊接了一根飛線?磥鞥AGLE的替換功能存在BUG,需要額外注意。
每次元件替換后需要仔細(xì)查看連接線。
手動焊接失敗率高
雖然現(xiàn)在我已經(jīng)可以手動焊接0.5mm腳距的QFP80/TSSOP20等封裝。重點(diǎn)是:
- 助焊劑去除氧化層;
- 預(yù)先在焊盤上少量焊錫;
- 將元件對準(zhǔn)焊盤(最重要);
- 加熱焊盤,焊錫會自動吸附到引腳上;
即便如此,兩次焊接QFP,其中有一次返工;另外一次不知何故斷了一個引腳,好在只是ADC,不用也可以。
手動焊接只有靠多次焊接來積累手感和經(jīng)驗(yàn)了。直到到達(dá)熟練工的程度。
硬件調(diào)試問題
我的硬件調(diào)試流程是:
- 先焊接LDO,查看電源是否工作正常;(檢查出LDO電源問題)
- 再焊接MCU,
查看MCU是否會發(fā)熱;(5V VBUS/3V3電源工作正常) - 再通過ISP下載代碼,查看復(fù)位情況;(失敗,待查RX/TX,復(fù)位,BOOT0/BOOT1)
- 或者通過SWD/JTAG下載代碼,通過調(diào)試器查看MCU的晶體和GPIO的外設(shè)工作情況;(JLINK)
- 最后連接PC,查看USB工作情況;(一個成功安裝,另外一個USB設(shè)備無法識別)
固件設(shè)計缺陷
X893的CMSIS-DAP設(shè)備是復(fù)合設(shè)備,分別為CMSIS-DAP CDC/DCI/HID。采用Keil的USB Device協(xié)議棧。但是好像有缺陷。
通過USBVIEW查出在CDC Interface里有設(shè)計四組Unknown Descriptor,結(jié)果導(dǎo)致HID設(shè)備根本沒有安裝。而CMSIS-DAP的主設(shè)備其實(shí)就是HID。所以Windows XP安裝后還是無法作為調(diào)試器使用。而CDC實(shí)際上也沒有測試過。
有人報告過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
我準(zhǔn)備在Linux下查看對應(yīng)情況。
源碼編譯問題
源碼是采用MDK4.54編譯的,但是在MDK4.71下編譯大量報錯。有人報告MDK5不行,但是MDK4.72可以,我在官網(wǎng)上只有4.74可以下載。到時候再試一試吧。
使用源碼也是主要想看看那四組未知描述符是如何出現(xiàn)的。
以上是最近更新報告。有情況再更新。