亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

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

點擊這里在線咨詢客服
新站提交
  • 網站: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線).

 

電路圖

 


 

例程說明

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

測試平臺

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

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

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

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

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

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

運動步數有氧達人2018-06-03

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

每日養生app2018-06-03

每日養生,天天健康

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

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