【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线).
电路图
文章插图
文章插图
例程说明约定简单通讯协议,测试虚拟串口最大传输速度
测试平台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 和选择的文件可知是否丢失数据 。
上位机说明
- 如下图所示,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
推荐阅读
- 对串口接收FIFO处理机制的解读
- 抖音直播教学软件?抖音虚拟直播间有哪些软件
- 惠普|32GB内存战66开虚拟机是种什么体验?一个字:爽
- 中秋晚会|东视中秋晚会主持两老带两新人,老曹没出现,虚拟主持来替代
- 周边虚拟发货是什么意思 微店上的虚拟发货是什么意思
- wordpress虚拟主机 wordpress用什么服务器系统
- 这几个虚拟主播配音软件是免费的!
- 快速理解并口、串口、COM口的区别 串口并口
- 快速部署FTP服务器并实现虚拟用户的认证管理
- 不止于虚拟化,如何实现 VMware 整体方案国产替代?