首页 > 评测 > 高速USB+Fanout——STM32F723E-DISCO开发板评测

高速USB+Fanout——STM32F723E-DISCO开发板评测

  • 作者:netlhx
  • 来源:21ic
  • [导读]
  • STM32F723E主打高速USB PHY特性,新探索套件还内置一个安捷伦Pmod连接器和新定义的STMod+连接器,后者让用户能够通过所提供的扇出接插板,连接Wi-Fi模块、 SeedStudio Grove模块、MikroElektronika click boards,或者连接电路试验板快速开发原型。

编译并下载代码到开发板上,与PA5对应的LED灯就会开始闪烁了。基本的功能测试完毕,可以将CoreMark的代码插入到现有工程中,使用CoreMark平台来测试硬件性能。CoreMark的STM32移植,请参考官方的移植资料,这里不赘述。

22.jpg

 

这是使用IAR对工程进行优化编译后得到的CoreMark测试结果,看到得分为1056,与官方宣称的1082非常接近,反映了STM32F7的真实性能。

接下来测试USB PHY的性能。STM32F723内置USB PHY,能够实现USB高速数据传输,理论上最高可达480Mbps的速度,不过受外部其它因素的影响,如存储介质的性能,传输的具体实现方法等约束,实际传输速度肯定会大打折扣。

测试方案如下,使用U盘连接到开发板的OTG HS接口,使用FatFS文件系统写入一定量的数据,计算使用的时间,最后粗略得到一个测试的结果,部分代码如下

//reading sectors

volatile static int32_t count = 0;

volatile static int32_t times = 8000;

volatile static int32_t sectors = 4;

char msg[100] = {0};

char buff[4096] = {0};

DRESULT status = RES_ERROR;

printf("start reading...\r\n");

count = HAL_GetTick();

for(int32_t i = 0; i < times; i ++) {

//res = f_write(&MyFile, wtext, sizeof(wtext), (void *)&byteswritten);

status = disk_read(0, buff, 156, sectors);

if((status != RES_OK))

printf("Error Writing sectors...");

}

count = HAL_GetTick() - count;

printf("total ticks: %d\r\n", count);

float total_mega_bytes = sectors * 512 * times / 1000.0f / 1000.0f;

sprintf(msg, "total %6.4f MB writed\r\n", total_mega_bytes);

printf(msg);

sprintf(msg, "transforming rates: %6.4f MB/Sec\r\n", total_mega_bytes * 1000.0f / count );

printf(msg);

使用FatFs中的标准配置,每扇区大小为512字节,执行连续的扇区读操作,读取的扇区数为4个,连续读取8000次,最后计算得到的数据吞吐率,测试的结果如下

23.jpg

 

写入速度只有4.28Mps的样子,已经超过了FS的标准,确实是使用HS的模式来操作。为了对比FS模式下的数据传输率,同样的代码,通过FS接口重新来测试一遍,得到的测试结果如下

24.jpg

 

这里的结果显示为0.85MB/Sec,只有全速标准一半的样子。

通过前面的对比测试不难发现高速USB PHY确实是工作的,HS相比FS的效率已大大提高,其实前文已提及到,USB数据吞吐率受多方面的影响,硬件只是其中一个要素,其它如存储介质的性能、读写方式设置的差异,都会影响到整体效果,木桶效应的消除,需要权衡各方面的要素。

这次的STM32F722/723还带来一个新的技术,Proprietary code read out protection (PCROP),即私有代码的读写保护功能。PCROP技术通过将需要保护的代码放入指定扇区(0到7)来防止来自最终用户的修改或读取操作,任何试图通过ITCM或AXI总线读取操作都会触发如下错误:

• 总线错误

• FLASH_SR的RDERR标志被置位,同时触发中断

这部分代码只能通过fetch的方式来获取,最终保护用户的利益。该区域的内存映射如下

25.jpg

 

这是一种层次授权机制,典型的情况是level n用户编写一段代码,授权给level n+1用户调用,这是一种灵活的授权机制,在保证了代码私有的情况下,提供了更灵活的使用方式。

ST提供了X-CUBE-PCROP库,专门用于帮助用户快速掌握该技术,库包含STM32F4、STM32F7及STM32L4三种版本的源码供用户参考。

最后的结论,STM32F723E-DISCO开发板非常不错,自ST将自家的开发板重新分类以后,NUCLEO主打核心MCU功能,EVAL一直高高在上,平民百姓难得一见,只有DISCO系列似已成为ST新技术试验的温床,各种新技术、新功能都能在DISCO板上找到影子,而且DISCO上集成的诸多外设,让评估用户无需了解太多细节,通过HAL库提供的相关示例代码,可以迅速评估并做出初步决策,的确为研发人员省心不少。STM32F723E-DISCO的官方报价为$39,良心再次体现!

参考资源:

STM32F723E-DISCO

X-CUBE-PCROP

COREMARK代码

  • 本文系21ic原创,未经许可禁止转载!

网友评论