STC8H8K64U 的 USB 功能测试(续)


对 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 + 100uF, 空载时测试电压是 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

测试

正常编译烧录后, 按上面的接线, 连上PC, P3.2 如果有连接, 无论是高电平还是低电平, Win10都无法正常识别, 所以将 P3.2 悬空

上电后, STC8H8K64U 会先进入 ISP 模式, 再进入正常模式(运行用户代码)

  • 如果这时候 D-/D+ 快速接入(将USB快速插进接口), HOST产生了查询, 就会停留在 ISP 模式
  • 这个状态与是否打开了 STC-ISP 没有关系, 开不开 STC-ISP, 都会进入 ISP 模式.
  • 因为转接卡有电容, 能保持几秒到十几秒的电量
    • 如果当前是ISP模式, 断开再接入, 不管快速还是慢速, 都很可能还保持在ISP模式
    • 如果当前是正常模式, 断开再接入也大概率保持正常模式

ISP模式

ISP模式和正常模式在设备管理器看到的设备是一样的, 要在属性里查看 VIP PID来判断. ISP模式下对应的是 34BF,1001

设备管理器

STC-ISP, 在这个模式下, 如果打开 STC-ISP, 就能看到对应的设备

正常模式

如果D-/D+接入与上电有一些时间间隔, 即插入USB的速度放慢一些, STC8H8K64U 在ISP模式后会进入正常模式, 继续执行用户代码,
这个测试中因为烧录了HID演示代码, 会识别到新的HID设备.

设备管理器

Bus Hound

上位机测试

Bus Hound 捕获的通信

结束

以上检测了 STC8H8K64U 上的 USB 基础功能, 后续可能会继续做一些测试. 现在存在的问题是: 如何避免接入USB时进入ISP模式? 只靠USB接入速度来控制是不行的.

更新

进一步测试, 发现问题在于 P3.2 的连线太长, 正确的做法是

  • 将 P3.2 通过一个100-200R的电阻与GND连接, 连线长度控制在10cm以内, 就能确保每次连接都正确识别并进入 ISP 模式.
  • 将 P3.2 通过一个3-5KR的电阻与3.3V连接, 同样连线不能太长, 可以确保正确识别并进入正常模式

相关