[IDE] 【CH32F103测评报告】+简易全速USB通讯实验

[复制链接]
5399|32
 楼主| qjp1988113 发表于 2020-9-22 10:55 | 显示全部楼层 |阅读模式
#申请开发板# 本帖最后由 qjp1988113 于 2020-9-22 10:56 编辑

板子上手,先做一下USB通讯的实验,直接用的官方给的USBD这个例程。 02.png

但是即没提供测试工具,也没具体的示例说明文档,只好自己摸索了。
原本这个例程是将输入的字节全部取反再输出。
这个在软件包里面的CH32F103_List.txt文档里面提到:

03.png
USBD:模拟自定义USB设备(CH372设备)例程,提供8个非0通道(上传+下传),
实现数据先下传,然后数据内容取反上传。
编译程序下载到开发板,打开老早之前的一个CH372调试的小软件:
05.png
06.png
实验现象正常。那能不能改成一些动作输出和自定义的语句输出呢。
直接在usb_endp.c里面修改:
  1. void EP2_OUT_Callback(void)
  2. {
  3.         uint8_t i;
  4.         //将EP2端点输入的缓存数据读取到USB_Rx_Buffer数组里面
  5.         //当然这个可以自己定义一个数组变量,并返回接收数据的长度
  6.         //USB_Rx_Cnt = USB_SIL_Read(EP2_OUT, USB_Rx_Buffer);
  7.         //我们这里不需要
  8.         USB_SIL_Read(EP2_OUT, USB_Rx_Buffer);
  9.     //接收到的数据取反
  10.         //这里屏蔽
  11. //    for(i=0;i<USB_Rx_Cnt;i++)
  12. //        {
  13. //                //USB_Rx_Buffer[i] = ~USB_Rx_Buffer[i];
  14. //        }
  15.         //添加动作控制
  16.         //随意写的,数组前2为为11 开灯
  17.         //12 关灯
  18.         if((USB_Rx_Buffer[0]==1)&&(USB_Rx_Buffer[1]==1))
  19.         {
  20.                 PAout(0) = 1;
  21.                 //更改回复
  22.                 SetEPTxValid(ENDP2);
  23.                 USB_SIL_Write(EP2_IN, "LEDOFF
  24. ", sizeof( "LEDOFF
  25. "));
  26.                 //Delay_Us(10);
  27.         }
  28.         if((USB_Rx_Buffer[0]==1)&&(USB_Rx_Buffer[1]==2))
  29.         {
  30.                 PAout(0) = 0;
  31.                 //更改回复
  32.                 SetEPTxValid(ENDP2);
  33.                 USB_SIL_Write(EP2_IN, "LEDON
  34. ", sizeof( "LEDON
  35. "));
  36.                 //Delay_Us(10);
  37.         }
  38.         //随便回复一个OKMMM
  39.         //使能发送
  40. //        SetEPTxValid(ENDP2);
  41. //    USB_SIL_Write(EP2_IN, "OKMMM", sizeof( "OKMMM"));
  42.         //不用之前的输出程序
  43.     //EP2_IN_Callback();
  44.     //使能接收
  45.         SetEPRxValid(ENDP2);
  46. }
重新编译下载,看结果:
09.png
08.png
同时对应LED受控。
可能真正使用并不是这样用的,但也没办法只能瞎摸索看看了。
附上工具附件,可能要安装CH372/CH375的驱动。
Debug.rar (46.84 KB, 下载次数: 24)
Kelan 发表于 2020-9-22 12:14 | 显示全部楼层
USB方面的例子,好像原厂WCH讲得很少。希望原厂能进一步完善范例和配套的上位机软件
WCHTech2 发表于 2020-9-22 16:46 | 显示全部楼层
Kelan 发表于 2020-9-22 12:14
USB方面的例子,好像原厂WCH讲得很少。希望原厂能进一步完善范例和配套的上位机软件 ...

目前USB方面例程提供了模拟自定义设备(CH372),主机提供了操作U盘的例程,如果需要模拟键鼠、U盘等例程可以参考CH549等8位单片机的例程,后期工程师也会完善这部分例程。
Kelan 发表于 2020-9-22 17:17 | 显示全部楼层
WCHTech2 发表于 2020-9-22 16:46
目前USB方面例程提供了模拟自定义设备(CH372),主机提供了操作U盘的例程,如果需要模拟键鼠、U盘等例程 ...

有这个也行~
对了,少量的CH32F103和评估板,在哪里可以买到?
WCHTech2 发表于 2020-9-22 17:21 | 显示全部楼层
Kelan 发表于 2020-9-22 17:17
有这个也行~
对了,少量的CH32F103和评估板,在哪里可以买到?

直接联系沁恒销售购买即可:025-52638388/025-52638399
Kelan 发表于 2020-9-28 17:23 | 显示全部楼层

您好!请问“CH372调试的小软件"(CH372内置固件传输)--- 是你写的吗?
 楼主| qjp1988113 发表于 2020-9-29 08:33 | 显示全部楼层
Kelan 发表于 2020-9-28 17:23
您好!请问“CH372调试的小软件"(CH372内置固件传输)--- 是你写的吗?

是,用C#写的
kkzz 发表于 2020-10-3 18:10 | 显示全部楼层
传输的速度怎么样呢   
hudi008 发表于 2020-10-3 18:10 | 显示全部楼层
USB可以做串口通讯
lzmm 发表于 2020-10-3 18:10 | 显示全部楼层
使用keil开发的吗?         
minzisc 发表于 2020-10-3 18:10 | 显示全部楼层
CH32F103功耗怎么样?         
selongli 发表于 2020-10-3 18:11 | 显示全部楼层
学习一下USB通讯的实验              
fentianyou 发表于 2020-10-3 18:11 | 显示全部楼层
有视频演示吗?                 
xiaoyaodz 发表于 2020-10-3 18:11 | 显示全部楼层
驱动是怎么编写的呢?         
febgxu 发表于 2020-10-3 18:11 | 显示全部楼层
期待楼主更多的分享了。         
sdlls 发表于 2020-10-3 18:11 | 显示全部楼层
全速USB的速度可以多少呢?      
pixhw 发表于 2020-10-3 18:11 | 显示全部楼层
               
Taoyukai 发表于 2020-10-3 19:03 | 显示全部楼层
lzmm 发表于 2020-10-3 18:10
使用keil开发的吗?

cortex M3,一般用keil开发的,看帖子图标也是keil
Taoyukai 发表于 2020-10-3 19:03 | 显示全部楼层
sdlls 发表于 2020-10-3 18:11
全速USB的速度可以多少呢?

usb全速是12Mbps吧
caigang13 发表于 2020-10-5 17:24 | 显示全部楼层
感谢分享,这方面资料确实少。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

111

主题

627

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部
0