1、简介
之前做过CH390H与DM9051配合STM32F103以及Lwip协议栈的一个收发速度测试,受限于协议栈,无法充分发挥其性能,测得的CH390H与DM9051速度都不快。为充分发挥其性能,本次测试直接在MAC层进行数据收发测试。关于之前测试,感兴趣的可参考下链接:
2、通信速度对比
测试平台:
CH32V307VCT6+CH390H
CH32V307VCT6+DM9051
平台介绍:
CH32V307VCT6,系统主频最大144MHz,SPI通信时钟频率最大72MHz。
测试程序:
由于本次测试仅进行MAC层的收发测试,无需搭配网络协议栈,因此只要配置一下CH390H和DM9051的驱动程序即可,两者均使用SPI驱动,程序基本是一样的。
工程搭建:
使用MounRiver直接新建CH32V307VCT6工程,将CH390EVT中PUB文件夹下CH390.h和CH390.c文件复制到新建工程user文件夹下,然后新建spi.c文件和spi.h两个驱动文件,具体如下图:
CH390.c文件和CH390.h文件无需改动,spi.c文件和spi.h文件内容直接复制CH390 EVT SPI驱动相关函数即可,spi.c和spi.h文件内容分别如下:
spi.c文件:
spi.h文件
main.c文件
main函数中主要对驱动进行初始化,调用ch390_interface_register函数实现底层操作接口传递并调用ch390_default_config函数对CH390H进行配置。注意MAC地址进行设置。此外还要注意对SPI分频进行配置,直接设置2分频,系统主频设置为最大144MHz。此外,注意PHY的模式设置设置为100M全双工模式,如下图:
测试结果:
发送速度测试:
以上配置完成后,可直接在main函数while循环中调用ch390_send_packet函数发送数据包,此处数据包大小建议设置大一些,能充分测试其性能,此处数据包大小设置为1500。
测试结果直接通过任务管理器性能查看,如下图,速度在21Mbps左右。
该速度应该不是其最大速度,考虑程序中使用了传递函数,会对速度产生影响,直接在底层函数中进行SPI操作,修改完成后,测试速度如下:
速度达到51.8Mbps.
接收速度测试:
接收速度测试直接在while函数中调用ch390_receive_packet函数即可,发包软件采用“科来数据包生成器”进行发包,配置如下:
测试速度如下:
接收速度最大在54M左右。
以上就是CH390H基于CH32V307的MAC层收发速度测试结果。DM9051测试结果与该结果差不多。速度主要取决于MCU的系统主频以及SPI的时钟频率,若主频以及SPI时钟频率进行提高,该测试结果会进一步提高。以下是DM9051的测试结果:
发送速度:
接收速度:
接收速度最大在45M左右。相较于CH390H速度稍微低一些。