Nucleo stm32f746zg USB wave player

Dependencies:   mbed wave_player USBHost

Fork of USBHostMSD_HelloWorld by Samuel Mokrani

Committer:
vsolonar
Date:
Thu Apr 19 13:31:58 2018 +0000
Revision:
9:d0a3b4c7b261
Parent:
4:f8a5c8aa895a
Child:
10:c3614ed19126
Nucleo STM32F746ZG & USBHostMSD  speed test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vsolonar 9:d0a3b4c7b261 1 /*
vsolonar 9:d0a3b4c7b261 2 Big green ugly test. Free for use bla bla bla. Do not eat.
vsolonar 9:d0a3b4c7b261 3 Tested on stm32f746zg
vsolonar 9:d0a3b4c7b261 4 Results: 814 KB/s, to slow for my project.
vsolonar 9:d0a3b4c7b261 5 No have idea how i can increase reading speed up to 4MB/s.
vsolonar 9:d0a3b4c7b261 6 */
vsolonar 9:d0a3b4c7b261 7
samux 0:0d68fe822228 8 #include "mbed.h"
samux 0:0d68fe822228 9 #include "USBHostMSD.h"
samux 0:0d68fe822228 10
vsolonar 9:d0a3b4c7b261 11 Serial pc(USBTX, USBRX, 115200); // tx, rx, baud rate to avoid terminal glitches
vsolonar 9:d0a3b4c7b261 12
vsolonar 9:d0a3b4c7b261 13 // read block size
vsolonar 9:d0a3b4c7b261 14 unsigned int bs = 65536;
vsolonar 9:d0a3b4c7b261 15 // read memory buffer
vsolonar 9:d0a3b4c7b261 16 char buff[65536];
samux 0:0d68fe822228 17
vsolonar 9:d0a3b4c7b261 18 // Binary test file, 10MB size
vsolonar 9:d0a3b4c7b261 19 unsigned long fsize=1024*1024*10;
vsolonar 9:d0a3b4c7b261 20 // start time, end time, delta time
vsolonar 9:d0a3b4c7b261 21 unsigned long time1, time2, time3;
vsolonar 9:d0a3b4c7b261 22 // speed = fsize / time3
vsolonar 9:d0a3b4c7b261 23 float speed;
vsolonar 9:d0a3b4c7b261 24
vsolonar 9:d0a3b4c7b261 25
vsolonar 9:d0a3b4c7b261 26 Timer t;
vsolonar 9:d0a3b4c7b261 27
vsolonar 9:d0a3b4c7b261 28 int main() {
vsolonar 9:d0a3b4c7b261 29
vsolonar 9:d0a3b4c7b261 30 // Mission clock on.
vsolonar 9:d0a3b4c7b261 31 t.start();
samux 0:0d68fe822228 32
samux 0:0d68fe822228 33 USBHostMSD msd("usb");
vsolonar 9:d0a3b4c7b261 34
vsolonar 9:d0a3b4c7b261 35 while(1) {
samux 1:473f339c54c1 36 while(!msd.connect()) {
vsolonar 9:d0a3b4c7b261 37 pc.printf("Waiting for USB\r\n");
vsolonar 9:d0a3b4c7b261 38 wait_ms(500);
samux 1:473f339c54c1 39 }
vsolonar 9:d0a3b4c7b261 40 pc.printf("Flash mounted\r\n");
vsolonar 9:d0a3b4c7b261 41
vsolonar 9:d0a3b4c7b261 42 FILE * fp = fopen("/usb/test1.bin", "rb");
samux 1:473f339c54c1 43
samux 1:473f339c54c1 44 if (fp != NULL) {
vsolonar 9:d0a3b4c7b261 45 pc.printf("File opened, reading...\r\n");
vsolonar 9:d0a3b4c7b261 46
vsolonar 9:d0a3b4c7b261 47 time1=t.read_ms();
vsolonar 9:d0a3b4c7b261 48 pc.printf("Start timer value = %u \r\n",time1);
vsolonar 9:d0a3b4c7b261 49
vsolonar 9:d0a3b4c7b261 50 while(!feof(fp))
vsolonar 9:d0a3b4c7b261 51 {
vsolonar 9:d0a3b4c7b261 52 fread(&buff,bs,1,fp);
vsolonar 9:d0a3b4c7b261 53 }
vsolonar 9:d0a3b4c7b261 54
vsolonar 9:d0a3b4c7b261 55 time2 = t.read_ms();
vsolonar 9:d0a3b4c7b261 56 pc.printf("End timer value = %u\r\n",time2);
vsolonar 9:d0a3b4c7b261 57
vsolonar 9:d0a3b4c7b261 58 fclose(fp);
vsolonar 9:d0a3b4c7b261 59 pc.printf("File closed\r\n");
vsolonar 9:d0a3b4c7b261 60
vsolonar 9:d0a3b4c7b261 61 time3 = time2 - time1;
vsolonar 9:d0a3b4c7b261 62 speed = fsize / time3;
vsolonar 9:d0a3b4c7b261 63
vsolonar 9:d0a3b4c7b261 64 pc.printf ("Time to read file %u speed KB/s = %f \r\n======================\r\n", time3, speed);
vsolonar 9:d0a3b4c7b261 65
samux 1:473f339c54c1 66 } else {
vsolonar 9:d0a3b4c7b261 67 pc.printf("FILE == NULL\r\n");
samux 1:473f339c54c1 68 }
vsolonar 9:d0a3b4c7b261 69
samux 1:473f339c54c1 70 if (!msd.connected())
samux 1:473f339c54c1 71 break;
samux 0:0d68fe822228 72 }
samux 0:0d68fe822228 73 }