日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務,提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

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線).

 

電路圖

 


 

例程說明

約定簡單通訊協(xié)議,測試虛擬串口最大傳輸速度

測試平臺

1 WIN10 32/64位(免驅(qū)動),WIN7 32 /64 需安裝驅(qū)動

2 UsbTest.exe 測試工具,傳輸速度500K 左右

通訊協(xié)議說明

上位機發(fā)送一幀數(shù)據(jù)格式55 AA LEN(2BYTE) DATA ...

下位機發(fā)送一幀數(shù)據(jù)格式55 AA LEN(2BYTE) DATA ...

軟件設計

UsbTest 上位機軟件按5K一次循環(huán)讀取選擇的文件內(nèi)容,

按格式 55 AA LEN(2BYTE) DATA ... 發(fā)送給下位機,下位機接收完數(shù)據(jù)后按

55 AA LEN(2BYTE) DATA ... 格式發(fā)回給上位機,上位機根據(jù)接收到的DATA寫進temp.txt

文件中,當文件發(fā)送完成后對比temp.txt 和選擇的文件可知是否丟失數(shù)據(jù)。

上位機說明

  1. 如下圖所示,Open打開串口,GetFile 選擇文件后開始傳輸數(shù)據(jù)

 

2 傳輸完成后用BCompare軟件對比發(fā)送和接收的文件,如下圖所示 ,18.5M的文件并未丟失數(shù)據(jù)

 

(2)下位機代碼說明

1 App.c 文件代碼說明

 

iUsbLen=0; //接收的數(shù)據(jù)長度

i UsbFlag=0;//接收完成標記

iUsbLenPre=0;

 

/* main loop */

while (1)

{

if(iUsbFlag==0x80)//一幀數(shù)據(jù) 接收完畢

{

SendUsbDate(&cdc_acm,iUsbBuf,iUsbLen);//發(fā)送數(shù)據(jù)返回給下位機

iUsbLenPre=0;

iUsbLen=0; //接收的數(shù)據(jù)長度

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虛擬串口接收函數(shù)

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虛擬串口發(fā)送函數(shù)

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

分享到:
標簽:串口 虛擬
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定