gd32单片机应用,虚拟串口通讯速度测试
gd32单片机应用,虚拟串口通讯速度测试按格式 55 AA LEN(2BYTE) DATA ... 发送给下位机,下位机接收完数据后按UsbTest 上位机软件按5K一次循环读取选择的文件内容,2 UsbTest.exe 测试工具,传输速度500K 左右上位机发送一帧数据格式55 AA LEN(2BYTE) DATA ...下位机发送一帧数据格式55 AA LEN(2BYTE) DATA ...
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