64 串口测速工具及实验

1.引言

        最近搞usb虚拟串口,需要测试虚拟串口能达到的最大速度。然后人算肯定不太精准,需要用工具来测试,所以搞了一晚上用qt写出了一个简单(不太精准的)的测速工具。小包误差太大,大包数据发送效果还能接受吧(反正没超过理论值),所以认为工具还是可以用的。

2.测速实验

        2.1 串口测速工具界面。

//*****************提示*********************
//该工具支持最大波特率为115200
//且只适用于较大的数据收发速度测试
//若数据收发量较小,则会出现测速严重不准确
//且收发速度有一定误差,一般不会大于理论值
//故该工具获得通信速度只能当做参考
//接收测速方式为其它串口向本串口连续
//发送数据,本串口接收完毕后显示接收速率
//*****************************************

        2.2 两个USB转TTL测试

        测试硬件如图所示:

         测试条件1:波特率9600,发送数据30K,

         串口波特率9600,其理论速率9600/8 Byte/s= 1200 Byte/s。测试实际值963 Byte/s(有一定误差)。

          测试条件2:波特率9600,接收数据30K,

        串口波特率9600,其理论速率9600/8 Byte/s= 1200 Byte/s。测试实际值962 Byte/s(有一定误差)。

         测试条件3:波特率115200,发送数据30K。

        串口波特率115200,其理论速率115200/8 Byte/s= 14400 Byte/s。测试实际值11563Byte/s(有一定误差)。

        

         测试条件4:波特率115200,接收数据30K。

        串口波特率115200,其理论速率115200/8 Byte/s= 14400 Byte/s。测试实际值11538 Byte/s(有一定误差)。

 3.串口通信测速工具链接

       链接:串口测速工具,用以测试串口的收发速率-桌面系统文档类资源-CSDN下载

        工具源码:

        链接:https://pan.baidu.com/s/1IS8a6jhi_c8tqYhyfGGOHw 
        提取码:2vc8

基本串口设置 串口设置:选择使用的串口号,可以通过“查找” 按钮自动查询当前系统可用串口。 波特率设置:输入将要使用波特率。 检验位设置:O=ODD=奇校验,E=EVEN=偶检验,N=无校验 10/16进制选择:当勾选后,接收缓冲区将以16进制数据格式显示,发送缓冲区数据必须是16进制格式,点击“发送”按钮时,将以16进制格式发送。否则(未勾选时),将以发送缓冲区将ASCII码的形式显示,点击“发送”按钮时,将以ASCII码直接发送。 打开串口:按配置打开相应串口,同时使能其他可能使用串口的按钮,再次点击则失能其他可能使用串口的按钮(如果未打开串口点击串口发送相关按钮会出现异常,另,修改串口基本设置后需要重新打开串口一次才会生效)。 帮助:即打开本文档 其他:略 简单通讯协议 界面操作说明 本协议将每帧数据数据分为帧头H,帧长L,参数P,数据D,校验C,帧尾E这6大部分,其中每个字段是否使用和使用的字节长度均可以选择或设置。帧格式设定: 帧头H字段:以16进制直接写入,软件自动计算帧头所占字节数,将存入变量H1、H2、H3……的格式中。 帧长L字段:以16进制直接写入,设置帧长所占字节,然后软件自动计算帧长,并将存入变量L1、L2、L3……的格式中。 参数P字段:以16进制直接写入,软件自动计算参数所占字节数,将存入变量P1、P2、P3……格式中。 数据D字段:这里只选择数据所占的字节数,数据的内容在后面的Dt框中填入,并将数据存入到变量Dt中。 校验C字段:这里只选择校验所占的字节数,校验的方式按后面的公式计算而来。C1、C2、C3…… 帧尾E字段:以16进制直接写入,软件自动计算帧尾所占字节数,将存入变量E1、E2、E3……格式中。 公式说明的使用方法 变量:上述字段中的H1、H2、H3……、L1、L2、L3……、P1、P2、P3……、Dt、C1、C2、C3……、E1、E2、E3……即为公式的变量名称; 立即数:操作立即数以2位16进制数,立即数中的字母必须小写。 操作符:目前只支持+(加)、-(减)、*(乘)、/(除)、&(与)、|(或)、~(非)、^(异或)、@(循环)操作,其中~(非)操作的前面变量或立即数无效; 结果变量:公式的结果存入到F1、F2、F3……变量中,同时可以供下一个公式可以使用; 结束符:整个公式以’;’号结尾,最后一次使用的结果变量将成为最终的运算结果投入到串口帧的使用; 注意: 操作符与结束符占1字节,其余均为2字节,整个公式必须有9字节并严格按照格式进行输入,否则软件无法正确识别; 变量名必须大写,16进制数必须小写,变量名只支持上述字段中的名称且序号不得超过10个,否则会出错; 中间不能插入空格; 举例:比如,在Dt字符框中输入100; 执行F1=Dt+00;F2=F1+00;表示F1=100;F2=100;最后输出F2的值100。 执行F1=Dt+10;F2=F1+20;表示F1=116;F2=148;最后输出F2的值148。 执行F1=Dt*10;F2=F1+00;表示F1=116;F2=148;最后输出F2的值148。 执行F1=Dt+00;F2=F1*0a;F1=01@F2;表示从F1开始按步进01循环发数据到F2为止,即for(i=100;i<1000;i+=1)类似的循环,发送的数据=i;循环操作目前还有待完善,不建议使用。 校验公式与此是一样的操作,但@后表示选择程序集成的特殊协议如Modbus协议。 @01表示Modbus协议,代码略 @02表示CRC-CTII协议,代码如下: U16 Crc16_B(u8 *puchMsg, u16 usDataLen){ U8 aCRCHi[256]= {0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,……,0xC1,0x81,0x40}; U8 aCRCLo[256] ={0x00,0xC0,0xC1,0x01,0xC3,0x03,0x02,0xC2,0xC6,0x06,……,0x81,0x80,0x40}; U8 uIndex,uchCRCHi=0xff,uchCRCLo=0xff; while(usDataLen--){ uIndex=uchCRCHi^*puchMsg++; uchCRCHi=uchCRCLo^aCRCHi[uIndex]; uchCRCLo=aCRCLo[uIndex]; } return (uchCRCHi<<8|uchCRCLo); } @03~FF保留未使用 Setting.ini配置文件 不同的使用者可能会对协议作频繁的改动,为了减少许多重复工作量,所以在左边设计了下拉菜单,选择经常使用的通讯协议配置,但即使
CC2530是一款基于ZigBee协议的无线芯片,它支持UART串口通信。下面是CC2530 UART串口实验的步骤: 1. 准备工作:准备CC2530开发板、串口线和电脑等设备。将CC2530芯片插入开发板上,并将串口线连接到CC2530的串口上。 2. 硬件连接:将串口线的一端连接到电脑的串口上,另一端连接到CC2530的串口上。注意连接的引脚要与CC2530的UART一一对应。 3. 编程环境配置:使用Keil等开发工具,对CC2530进行编程。在编写程序之前,需要将编程环境配置好,包括安装好开发工具,打开工程等。 4. 编写串口通信程序:在Keil中创建一个新的工程,编写C语言程序实现CC2530的串口通信功能。程序中需要设置串口通信参数,例如波特率、数据位、停止位和校验位等。程序中需要使用UART库函数对串口进行控制,实现数据的发送和接收。注意在发送和接收数据时,需要控制好发送和接收速度,避免数据丢失或重复。 5. 编译和下载程序:完成程序编写后,需要将程序进行编译,生成可执行文件。然后将可执行文件下载到CC2530芯片中,使其能够运行程序。 6. 串口通信功能:在CC2530芯片上运行程序后,可以通过串口调试助手等工具进行数据传输试。在试过程中,需要注意检查数据传输的正确性和稳定性。如果发现数据传输错误或不稳定,需要对程序进行修改和优化,直到数据传输正确和稳定为止。 总之,CC2530 UART串口实验需要掌握串口通信原理和编程技术,需要仔细连接硬件和注意电气安全问题,需要进行编译和下载程序,并进行数据传输试。希望这些步骤能够帮助您进行CC2530 UART串口实验
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值