首頁 > 評測 > 高速USB+Fanout——STM32F723E-DISCO開發(fā)板評測

高速USB+Fanout——STM32F723E-DISCO開發(fā)板評測

  • 作者:netlhx
  • 來源:21ic
  • [導讀]
  • STM32F723E主打高速USB PHY特性,新探索套件還內置一個安捷倫Pmod連接器和新定義的STMod+連接器,后者讓用戶能夠通過所提供的扇出接插板,連接Wi-Fi模塊、 SeedStudio Grove模塊、MikroElektronika click boards,或者連接電路試驗板快速開發(fā)原型。

編譯并下載代碼到開發(fā)板上,與PA5對應的LED燈就會開始閃爍了。基本的功能測試完畢,可以將CoreMark的代碼插入到現有工程中,使用CoreMark平臺來測試硬件性能。CoreMark的STM32移植,請參考官方的移植資料,這里不贅述。

22.jpg

 

這是使用IAR對工程進行優(yōu)化編譯后得到的CoreMark測試結果,看到得分為1056,與官方宣稱的1082非常接近,反映了STM32F7的真實性能。

接下來測試USB PHY的性能。STM32F723內置USB PHY,能夠實現USB高速數據傳輸,理論上最高可達480Mbps的速度,不過受外部其它因素的影響,如存儲介質的性能,傳輸的具體實現方法等約束,實際傳輸速度肯定會大打折扣。

測試方案如下,使用U盤連接到開發(fā)板的OTG HS接口,使用FatFS文件系統(tǒng)寫入一定量的數據,計算使用的時間,最后粗略得到一個測試的結果,部分代碼如下

//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中的標準配置,每扇區(qū)大小為512字節(jié),執(zhí)行連續(xù)的扇區(qū)讀操作,讀取的扇區(qū)數為4個,連續(xù)讀取8000次,最后計算得到的數據吞吐率,測試的結果如下

23.jpg

 

寫入速度只有4.28Mps的樣子,已經超過了FS的標準,確實是使用HS的模式來操作。為了對比FS模式下的數據傳輸率,同樣的代碼,通過FS接口重新來測試一遍,得到的測試結果如下

24.jpg

 

這里的結果顯示為0.85MB/Sec,只有全速標準一半的樣子。

通過前面的對比測試不難發(fā)現高速USB PHY確實是工作的,HS相比FS的效率已大大提高,其實前文已提及到,USB數據吞吐率受多方面的影響,硬件只是其中一個要素,其它如存儲介質的性能、讀寫方式設置的差異,都會影響到整體效果,木桶效應的消除,需要權衡各方面的要素。

這次的STM32F722/723還帶來一個新的技術,Proprietary code read out protection (PCROP),即私有代碼的讀寫保護功能。PCROP技術通過將需要保護的代碼放入指定扇區(qū)(0到7)來防止來自最終用戶的修改或讀取操作,任何試圖通過ITCM或AXI總線讀取操作都會觸發(fā)如下錯誤:

• 總線錯誤

• FLASH_SR的RDERR標志被置位,同時觸發(fā)中斷

這部分代碼只能通過fetch的方式來獲取,最終保護用戶的利益。該區(qū)域的內存映射如下

25.jpg

 

這是一種層次授權機制,典型的情況是level n用戶編寫一段代碼,授權給level n+1用戶調用,這是一種靈活的授權機制,在保證了代碼私有的情況下,提供了更靈活的使用方式。

ST提供了X-CUBE-PCROP庫,專門用于幫助用戶快速掌握該技術,庫包含STM32F4、STM32F7及STM32L4三種版本的源碼供用戶參考。

最后的結論,STM32F723E-DISCO開發(fā)板非常不錯,自ST將自家的開發(fā)板重新分類以后,NUCLEO主打核心MCU功能,EVAL一直高高在上,平民百姓難得一見,只有DISCO系列似已成為ST新技術試驗的溫床,各種新技術、新功能都能在DISCO板上找到影子,而且DISCO上集成的諸多外設,讓評估用戶無需了解太多細節(jié),通過HAL庫提供的相關示例代碼,可以迅速評估并做出初步決策,的確為研發(fā)人員省心不少。STM32F723E-DISCO的官方報價為$39,良心再次體現!

參考資源:

STM32F723E-DISCO

X-CUBE-PCROP

COREMARK代碼

  • 本文系21ic原創(chuàng),未經許可禁止轉載!

網友評論