您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

GD32 虚拟串口通讯速度测试

时间:2022-09-14 12:34:55  来源:今日头条  作者:siyuanOBD

GD32 虚拟串口通讯速度测试

硬件说明:

  • MCU: GD32C103 120M,128K,32k RAM.
  • 输入:USB 5V.
  • OBD功能口定义:OBD(2,10)VPWM、OBD 7(K线)、OBD 6(CAN H)、OBD 14(CAN L)、OBD 15(L线).

 

电路图

 


 

例程说明

约定简单通讯协议,测试虚拟串口最大传输速度

测试平台

1 WIN10 32/64位(免驱动),WIN7 32 /64 需安装驱动

2 UsbTest.exe 测试工具,传输速度500K 左右

通讯协议说明

上位机发送一帧数据格式55 AA LEN(2BYTE) DATA ...

下位机发送一帧数据格式55 AA LEN(2BYTE) DATA ...

软件设计

UsbTest 上位机软件按5K一次循环读取选择的文件内容,

按格式 55 AA LEN(2BYTE) DATA ... 发送给下位机,下位机接收完数据后按

55 AA LEN(2BYTE) DATA ... 格式发回给上位机,上位机根据接收到的DATA写进temp.txt

文件中,当文件发送完成后对比temp.txt 和选择的文件可知是否丢失数据。

上位机说明

  1. 如下图所示,Open打开串口,GetFile 选择文件后开始传输数据

 

2 传输完成后用BCompare软件对比发送和接收的文件,如下图所示 ,18.5M的文件并未丢失数据

 

(2)下位机代码说明

1 App.c 文件代码说明

 

iUsbLen=0; //接收的数据长度

i UsbFlag=0;//接收完成标记

iUsbLenPre=0;

 

/* mAIn loop */

while (1)

{

if(iUsbFlag==0x80)//一帧数据 接收完毕

{

SendUsbDate(&cdc_acm,iUsbBuf,iUsbLen);//发送数据返回给下位机

iUsbLenPre=0;

iUsbLen=0; //接收的数据长度

iUsbFlag=0;//接收完成标记

iCmt++;

if(iCmt%2) gpio_bit_reset(GPIOB,GPIO_PIN_12);

else gpio_bit_set(GPIOB,GPIO_PIN_12);

}

continue;

}

2 cdc_acm_core.c文件代码说明

USB虚拟串口接收函数

static uint8_t cdc_acm_out (usb_dev *udev, uint8_t ep_num)

{

usb_cdc_handler *cdc = (usb_cdc_handler *)udev->dev.class_data[CDC_COM_INTERFACE];

cdc->packet_receive = 1U;

cdc->receive_length = ((usb_core_driver *)udev)->dev.transc_out[ep_num].xfer_count;

iUsbFlag=0;//接收完成标记

if(cdc->data[0]==0x55&&cdc->data[1]==0xAA)//帧开头

{

iUsbLen=cdc->data[2]*256+cdc->data[3];

}

for(uint8_t i=0;i<cdc->receive_length;i++)

{

if(iUsbLenPre>=10239) break;

iUsbBuf[iUsbLenPre++]=cdc->data[i];

}

 

if(iUsbLenPre>=iUsbLen||iUsbLenPre>10239)

{

iUsbFlag=0x80;//接收完成标记

}

cdc_acm_data_receive(udev);

return USBD_OK;

}

USB虚拟串口发送函数

void SendUsbDate(usb_dev *udev,uint8_t*Buf,uint32_t len)

{

usb_cdc_handler *cdc = (usb_cdc_handler *)udev->dev.class_data[CDC_COM_INTERFACE];

if (0U != len)

{

cdc->packet_sent = 0U;

usbd_ep_send (udev, CDC_DATA_IN_EP, (uint8_t*)(Buf), len);

cdc->receive_length = 0U;

}

}

源码地址

单片机代码地址

https://Github.com/siyuan1644/GD32-USB_CDC-TEST.git

VS 代码地址

https://github.com/siyuan1644/UsbSpeedTest.git



Tags:虚拟串口   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
GD32 虚拟串口通讯速度测试
GD32 虚拟串口通讯速度测试硬件说明: MCU: GD32C103 120M,128K,32k RAM. 输入:USB 5V. OBD功能口定义:OBD(2,10)VPWM、OBD 7(K线)、OBD 6(CAN H)、OBD 14(CAN L)、OBD 15(L...【详细内容】
2022-09-14  Search: 虚拟串口  点击:(767)  评论:(0)  加入收藏
使用虚拟串口远程调试设备
在目前工业4.0的背景下,企业需要一套可以远程调试设备的系统,利用物联网技术,通过结合PLC设备将设备的信息进行采集、收集,控制。利用PLC设备将设备的数据进行远程采集显示到云...【详细内容】
2021-07-14  Search: 虚拟串口  点击:(452)  评论:(0)  加入收藏
▌简易百科推荐
Netflix 是如何管理 2.38 亿会员的
作者 | Surabhi Diwan译者 | 明知山策划 | TinaNetflix 高级软件工程师 Surabhi Diwan 在 2023 年旧金山 QCon 大会上发表了题为管理 Netflix 的 2.38 亿会员 的演讲。她在...【详细内容】
2024-04-08    InfoQ  Tags:Netflix   点击:(2)  评论:(0)  加入收藏
即将过时的 5 种软件开发技能!
作者 | Eran Yahav编译 | 言征出品 | 51CTO技术栈(微信号:blog51cto) 时至今日,AI编码工具已经进化到足够强大了吗?这未必好回答,但从2023 年 Stack Overflow 上的调查数据来看,44%...【详细内容】
2024-04-03    51CTO  Tags:软件开发   点击:(7)  评论:(0)  加入收藏
跳转链接代码怎么写?
在网页开发中,跳转链接是一项常见的功能。然而,对于非技术人员来说,编写跳转链接代码可能会显得有些困难。不用担心!我们可以借助外链平台来简化操作,即使没有编程经验,也能轻松实...【详细内容】
2024-03-27  蓝色天纪    Tags:跳转链接   点击:(13)  评论:(0)  加入收藏
中台亡了,问题到底出在哪里?
曾几何时,中台一度被当做“变革灵药”,嫁接在“前台作战单元”和“后台资源部门”之间,实现企业各业务线的“打通”和全域业务能力集成,提高开发和服务效率。但在中台如火如荼之...【详细内容】
2024-03-27  dbaplus社群    Tags:中台   点击:(9)  评论:(0)  加入收藏
员工写了个比删库更可怕的Bug!
想必大家都听说过删库跑路吧,我之前一直把它当一个段子来看。可万万没想到,就在昨天,我们公司的某位员工,竟然写了一个比删库更可怕的 Bug!给大家分享一下(不是公开处刑),希望朋友们...【详细内容】
2024-03-26  dbaplus社群    Tags:Bug   点击:(5)  评论:(0)  加入收藏
我们一起聊聊什么是正向代理和反向代理
从字面意思上看,代理就是代替处理的意思,一个对象有能力代替另一个对象处理某一件事。代理,这个词在我们的日常生活中也不陌生,比如在购物、旅游等场景中,我们经常会委托别人代替...【详细内容】
2024-03-26  萤火架构  微信公众号  Tags:正向代理   点击:(11)  评论:(0)  加入收藏
看一遍就理解:IO模型详解
前言大家好,我是程序员田螺。今天我们一起来学习IO模型。在本文开始前呢,先问问大家几个问题哈~什么是IO呢?什么是阻塞非阻塞IO?什么是同步异步IO?什么是IO多路复用?select/epoll...【详细内容】
2024-03-26  捡田螺的小男孩  微信公众号  Tags:IO模型   点击:(9)  评论:(0)  加入收藏
为什么都说 HashMap 是线程不安全的?
做Java开发的人,应该都用过 HashMap 这种集合。今天就和大家来聊聊,为什么 HashMap 是线程不安全的。1.HashMap 数据结构简单来说,HashMap 基于哈希表实现。它使用键的哈希码来...【详细内容】
2024-03-22  Java技术指北  微信公众号  Tags:HashMap   点击:(11)  评论:(0)  加入收藏
如何从头开始编写LoRA代码,这有一份教程
选自 lightning.ai作者:Sebastian Raschka机器之心编译编辑:陈萍作者表示:在各种有效的 LLM 微调方法中,LoRA 仍然是他的首选。LoRA(Low-Rank Adaptation)作为一种用于微调 LLM(大...【详细内容】
2024-03-21  机器之心Pro    Tags:LoRA   点击:(12)  评论:(0)  加入收藏
这样搭建日志中心,传统的ELK就扔了吧!
最近客户有个新需求,就是想查看网站的访问情况。由于网站没有做google的统计和百度的统计,所以访问情况,只能通过日志查看,通过脚本的形式给客户导出也不太实际,给客户写个简单的...【详细内容】
2024-03-20  dbaplus社群    Tags:日志   点击:(4)  评论:(0)  加入收藏
站内最新
站内热门
站内头条