3844|5

2933

帖子

4

TA的资源

五彩晶圆(中级)

楼主
 

【RISC-V MCU CH32V103测评】USB设备从模式测试 [复制链接]

 

CH32V103CT6上有USB接口,理论上可以进行USB设备的通讯。USB设备分“主模式”和“从模式”两种。主模式主要是读取设备的数据,如USB盘等操作。从模式在开发中十分常用。如:我们可以做一个设备和PC主机通讯。本次就是对CH32V103的从USB模式进行测试。但是wch的文档真的是“十分的匮乏”,哎!真是无奈啊!所以只好用STM32的资料为参考进行测试。

首先,开始研究wch的原始例程C:\CH32V103EVT\EVT\EXAM\USB\USBHD\DEVICE。这个程序过于的简单,很多功能都没有加入,就连最起码的上电测试都没有。只是实现了一个设备自举而已。

/*******************************************************************************
* Function Name  : USB_IRQHandler
* Description    : This function handles USB exception.
* Input          : None
* Return         : None
*******************************************************************************/
void USBHD_IRQHandler (void)
{
	USB_DevTransProcess();
}

主要的代码就是这个中断函数USBHD_IRQHandler,这个是整个程序的根本。其中的USB_DevTransProcess()函数中就是一个switch写的一个“状态机”,中断发生时通过各种状态来完成任务。

程序是根据如:#define    R8_USB_INT_FG        (*((PUINT8V)(0x40023406)))    // USB interrupt flag

程序根据这些标记进行相应的处理,wch连包装都懒得做,直接就在程序中用。不过这样也好代码比较简洁。这些标记在主程序当中也是可以使用地。我比较担心这些标记可能在中断完成后会失效,所以就自己加了一个状态机变量。

while(1)
{

   if (bDeviceState != 0)
   {
       printf(" USB EP Test %d\r\n",bDeviceState);
       bDeviceState = 0;
   }
}

为了测试方便,我把USB端点和状态打印出来。然后在改造一下代码。

我将程序该改造了一下,把发送和接收的数据打印了出来。

可以看到发送的数据和接收的数据一样,说明测试成功。下面我把测试的过程和一些注意的事项说一下。

1、wch提供的源程序,在windows系统联机以后,会自动安装成CH372/CH375类型的驱动。而不是windows 通用的驱动程序。

2、为了测试通讯代码,我使用了自己熟悉的C#代码。但是这些代码需要将设备的驱动改成厂家自定义的,这个当然是必须的,没有谁不希望驱动是自己的。

所以我使用一个开源的USB驱动工具zadig-2.5.exe对程序进行改造。

过程十分的简单,就是选择好“你的设备”,然后替换成需要的驱动,我这里使用的是WINUSB驱动,因为这个驱动比较熟悉而已没有特别的用意。修改好之后,找到ch10x.inf

之后从这个文件中拷贝出 DeviceGUID ,一会PC程序需要该GUID来启动设备。

[Strings]
DeviceName = "CH10x"
VendorName = "WinChipHead"
SourceName = "CH10x Install Disk"
DeviceID   = "VID_4348&PID_5537"
DeviceGUID = "{894B4750-1311-4101-9566-757754FEE942}"

3、打开VS2015生成一个C#程序,我使用了MadWizard的WinUSBNet库,所以要在项目中将WinUSBNet库引入。

程序中利用WINUSB函数将数据发出去。整个测试完成

最新回复

谢谢楼主分享   详情 回复 发表于 2021-3-29 16:08

赞赏

1

查看全部赞赏

点赞(1) 关注
 
 

回复
举报

7608

帖子

2

TA的资源

五彩晶圆(高级)

沙发
 

看起来用沁恒的东西开发一个usb很快的样子。

点评

沁恒USB单片机这块做的挺好的  详情 回复 发表于 2021-2-3 09:59
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

1万

帖子

2853

TA的资源

管理员

板凳
 
freebsder 发表于 2021-2-2 22:31 看起来用沁恒的东西开发一个usb很快的样子。

沁恒USB单片机这块做的挺好的

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

我一直就没把usb完完整整啃一遍,哈哈哈,到现在好了,不用啃了,现成的。。。  详情 回复 发表于 2021-2-3 22:50
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复

1942

帖子

2

TA的资源

版主

4
 

感谢分享啊,沁恒还是非常不错的国产芯片!

 
 
 

回复

7608

帖子

2

TA的资源

五彩晶圆(高级)

5
 
okhxyyo 发表于 2021-2-3 09:59 沁恒USB单片机这块做的挺好的

我一直就没把usb完完整整啃一遍,哈哈哈,到现在好了,不用啃了,现成的。。。

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

661

帖子

0

TA的资源

纯净的硅(初级)

6
 

谢谢楼主分享

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表