對 STC8H8K64U 的USB測試昨天沒搞定, 判斷可能是供電的問題, 直接用5V不行, 從USB2TTL上采電3.3V時存在一個問題, 就是 D-/D+ 在上電前就已經連接了, 不符合 USB 的正常上電流程, 在 MCU 開始工作前接入 D-/D+, 可能會造成host的請求無法響應.
今天用AMS1117做了一個轉接板, 把USB的5V轉為3.3V給MCU供電. 現在連上USB接口就能正常識別了.
轉接板
一邊是 MicroUSB 口, 加 AMS1117 3.3V, 在 VCC In 上是 2.5uF + 10nF, VCC Out 上是 2.5uF + 100nF, 空載時測試電壓是 5.1V 和 3.27V
接線
轉接板 STC8H8K64U
3.3V -> VCC
D- -> P3.0
D+ -> P3.1
GND -> GND
代碼
測試代碼下載地址 http://www.stcmcudata.com/STC8F-DATASHEET/STC8H8K64U-DEMO-CODE.ZIP , 使用其中的"39-通過USB發送命令讀取ADC測試程序", 這個目錄下還有一個上位機測試軟件 STC USB-HID Demo.exe
測試
2022-02-07 更新: 為避免之前的錯誤誤導, 直接替換為正確的操作
正常編譯燒錄后, 按上面的接線, 連上PC. 連線時VCC和GND與轉接板直接連線, 長度要一致, 且不能太長, 控制在20cm以內. 之前出現的問題, 是因為轉接板3.3V輸出先通過20cm線接了一個排針, 再分別通過20cm線接MCU的VCC和P3.2
上電后, 如果P3.2懸空, STC8H8K64U 的USB狀態是不確定的, 有可能進入 ISP 模式, 也可能進入正常模式(運行用戶代碼)
- 是否進入ISP模式與是否打開了 STC-ISP 沒有關系, 開不開 STC-ISP, 都可能進入 ISP 模式.
- 因為轉接卡有電容, 能保持幾秒到十幾秒的電量
- 如果當前是ISP模式, 斷開再接入, 不管快速還是慢速, 都很可能還保持在ISP模式
- 如果當前是正常模式, 斷開再接入也大概率保持正常模式
- 如果P3.2通過200R電阻接地, 會進入 ISP 模式
- 如果P3.2通過3KR電阻接VCC, 會進入正常模式
ISP模式
ISP模式和正常模式在設備管理器看到的設備是一樣的, 要在屬性里查看 VIP PID來判斷. ISP模式下對應的是 34BF,1001
設備管理器
STC-ISP, 在這個模式下, 如果打開 STC-ISP, 就能看到對應的設備
正常模式
MCU正常模式下執行的是燒錄的用戶代碼, 這個測試中因為燒錄了HID演示代碼, 會識別到新的HID設備.
設備管理器
Bus Hound
上位機測試
Bus Hound 捕獲的通信
結束
以上檢測了 STC8H8K64U 上的 USB 基礎功能, 后續可能會繼續做一些測試. 連線上存在的問題都已經解決並更新.