- 打卡等级:常住居民III
- 打卡总天数:126
- 最近打卡:2025-05-06 16:45:31
已绑定手机
高级会员
- 积分
- 522
|
STC 网站下载了STC_USB_LIBRARY_DEMO-20240531.zip, 解压后使用一下其中的例程,增加一些感性认识;
1. 其中 \STC_CDC_QUERY_LIBRARY\stc32g_cdc_query_demo\ 【使用 stc_usb_cdc_32.LIB, stc32_stc8_usb.h】
使用我手头的 STC32G12K128核心板, C251编译, Source+Xmall+Large 64K 模式, HEX-80, REMOVEUNUSED 控制;
CDC虚拟串口,查询工作模式,成功,设置时钟 24MHz, 板子接 typeC 电缆到PC机USB口后,设备管理器->端口(COM 和 LPT)分支下出现了 “STC USB-CDC(COM7)”,
使用串口调试器连接COM7,可以发送并立即接收到核心板的同样数据返回! 【串口设置可以任意,这个有CDC虚拟串口特性决定的】
2. 其中 \STC_CDC_QUERY_LIBRARY\stc8h_cdc_xdata_query_demo\ 【使用 stc_usb_cdc_8h_xdata.LIB, stc32_stc8_usb.h】
使用我手头的STC8H8K64U核心板, C51编译,使用LX51, Large Xdata + Large 64K 模式; HEX-80, REMOVEUNUSED 控制;
CDC虚拟串口,查询工作模式,成功,设置时钟 24MHz, 板子接 typeC 电缆到PC机USB口后,设备管理器->端口(COM 和 LPT)分支下出现了 “STC USB-CDC(COM7)”,
使用串口调试器连接COM7,可以发送并立即接收到核心板的同样数据返回!
3. 其中 \STC_CDC_INTERRUPT_LIBRARY\stc8h_cdc_xdata_interrupt_demo\ 【使用 stc_usb_cdc_8h_xdata_interrupt.LIB, stc32_stc8_usb.h】
使用STC8H8K64U核心板, C51编译,使用LX51, Large Xdata + Large 64K 模式; HEX-80, REMOVEUNUSED 控制;
CDC虚拟串口,中断工作模式,成功,设置时钟 24MHz, 板子接 typeC 电缆到PC机USB口后,设备管理器->端口(COM 和 LPT)分支下出现了 “STC USB-CDC(COM7)”,
使用串口调试器连接COM7,可以发送并立即接收到核心板的同样数据返回! 【这个是中断模式,前面的是查询模式,中断模式 的数据响应能力更好!】
4. 将上一个工程目录复制,更改为当前的文件夹名称 stc8h_cdc_xdata_interrupt_demo-8051U\, 准备在我自己焊接的简易小板上测试,CPU 是 STC8051U-34K64-LQFP48
\STC_CDC_INTERRUPT_LIBRARY\stc8h_cdc_xdata_interrupt_demo-8051U\ 【使用 stc_usb_cdc_8h_xdata_interrupt.LIB, stc32_stc8_usb.h】
为了在我 STC8051U 小板上进行 USB CDC 虚拟串口的测试(使用 xdata 中断模式的库), 到Keil C51目录下将 C51 编译器使用的 STC8051U.h 替代 原来的 STC8H.h;
并且更改 main.c 中相应的头文件包含语句; 并在工程属性中,选择芯片为 STC8051U-8bit,其他属性设置和上一个工程的属性设置的保持一致, 然后进行编译,测试;
使用我的 STC8051U-34K64 小板, C51编译,使用LX51, Large Xdata + Large 64K 模式; HEX-80, REMOVEUNUSED 控制;
CDC虚拟串口,中断工作模式,设置时钟 24MHz, 板子直接接XH-4芯简易电缆到PC机USB口后,设备管理器->端口(COM 和 LPT)分支下出现了 “STC USB-CDC(COM8)”,
使用串口调试器连接COM8, 测试发现 不能够 发送并立即接收到我的小板的同样数据返回;
为啥这里失败了?
搜索查看了STC论坛的许多帖子,又仔细看了芯片文档,慢慢理解到存在如下问题:
我的小板太“简易”了,没有严格按照芯片文档中的图来做; 我的小板子上,只有一个 8051U 芯片,几个单排插针,飞线引出了串口1(P3.0/P3.1),VCC,GND, 芯片周围只有22uF+0.1uF对
VCC滤波,1uF对 Ucap接地滤波,其他诸如 P3.0/P3.1 接口的22欧电阻,P3.2引脚的300R和10K上拉, 统统没有! 因为使用 LINK1D 进行程序下载,前面学习测试,点个流水灯啥的,倒也没有碰到大问题。
想想现在既然PC能识别并显示 "STC USB-CDC(COM8)“, 那么USB的 枚举,配置过程应该是OK的,硬件上的通路肯定没有问题了。
USB总线的高速信号传输,猜测22欧姆电阻可能是高速信号"阻抗匹配"之类的玩意,否则这个电阻值用于限流也太小了;
所以,试试降速,就是烧写程序的时候,把前面 24MHz 时钟更改为 12MHz 试试, 果然,降速后PC上使用 COM8 进行通信测试成功了!
所以, 这次的教训就是:硬件电路还是要严格按照官方图纸来焊接,细节的差异就会影响性能;反而言之,如果硬件的走线长了,干扰大了,不得已的情况下,就得考虑降速运行,或许也是一条挽救的路!
|
|