USBLocalFileSystem.lib testing program for LPC11U35

Dependencies:   BaseDAP SWD USBDAP USBLocalFileSystem mbed DA14580 SWSPI W25X40BV

USB memory + Writer for DA14580 BLE chip + CMSIS-DAP debugger + USB-UART functions in one chip

One button input loads your application into DA14580 or DA14580 included BLE modules

Quote:

Current compatible hardware description can be found at https://github.com/K4zuki/da14580/releases/tag/MurataBLEr04

Committer:
k4zuki
Date:
Sat Sep 19 10:48:38 2015 +0000
Revision:
5:77c115650c1f
Parent:
3:6af8771e7f71
Child:
6:cb6984367a7a
update DA14580/at45db161d; add target switches for LPC1768 and 11U35/501

Who changed what in which revision?

UserRevisionLine numberNew contents of line
k4zuki 0:eba731be11fb 1 #include "mbed.h"
k4zuki 0:eba731be11fb 2 #include "USBLocalFileSystem.h"
k4zuki 0:eba731be11fb 3 #include "USBDAP.h"
k4zuki 0:eba731be11fb 4 #include "BaseDAP.h"
k4zuki 0:eba731be11fb 5 #include "USB_HID.h"
k4zuki 3:6af8771e7f71 6 #include "DA14580.h"
k4zuki 0:eba731be11fb 7
k4zuki 1:484bd6db1378 8 #include "at45db161d.h"
k4zuki 1:484bd6db1378 9
k4zuki 1:484bd6db1378 10 #undef PAGE_SIZE
k4zuki 1:484bd6db1378 11 //#define PAGE_SIZE 264 // AT45DB081D (1MB)
k4zuki 1:484bd6db1378 12 #define PAGE_SIZE 256 // AT25XE011 (1Mbit)
k4zuki 1:484bd6db1378 13 //#define PAGE_SIZE 528 // AT45DB321D (4MB)
k4zuki 1:484bd6db1378 14
k4zuki 1:484bd6db1378 15 //#define PAGE_NUM 4095 // AT45DB081D (1MB)
k4zuki 1:484bd6db1378 16 #define PAGE_NUM 512 // AT25XE011 (1Mbit)
k4zuki 1:484bd6db1378 17 //#define PAGE_NUM 8192 // AT45DB321D (4MB)
k4zuki 1:484bd6db1378 18
k4zuki 1:484bd6db1378 19 #define WRITE_BUFFER 1
k4zuki 1:484bd6db1378 20 #define READ_BUFFER 2
k4zuki 1:484bd6db1378 21
k4zuki 3:6af8771e7f71 22 #define LOADER_FILE "/local/loader.bin"
k4zuki 3:6af8771e7f71 23 #define TARGET_FILE "/local/target.bin"
k4zuki 3:6af8771e7f71 24
k4zuki 5:77c115650c1f 25 #if defined(TARGET_LPC1768)
k4zuki 5:77c115650c1f 26 //SWD swd(p25,p24,p23); // SWDIO,SWCLK,nRESET
k4zuki 5:77c115650c1f 27 SWD swd(p24, p23, p22); // SWDIO,SWCLK,nRESET
k4zuki 5:77c115650c1f 28 DigitalOut connected(LED1);
k4zuki 5:77c115650c1f 29 DigitalOut running(LED4);
k4zuki 5:77c115650c1f 30
k4zuki 5:77c115650c1f 31 SWSPI spi(p5, p7, p6); // mosi, miso, sclk
k4zuki 5:77c115650c1f 32
k4zuki 5:77c115650c1f 33 ATD45DB161D memory(spi, p8);
k4zuki 5:77c115650c1f 34 RawSerial ble(p5, p6);
k4zuki 5:77c115650c1f 35 DA14580 BLE(ble, p26);
k4zuki 5:77c115650c1f 36
k4zuki 5:77c115650c1f 37 #elif defined(TARGET_LPC11U35_501)
k4zuki 2:228291df190e 38 //SWD swd(p25,p24,p23); // SWDIO,SWCLK,nRESET
k4zuki 2:228291df190e 39 SWD swd(P0_5,P0_4,P0_21); // SWDIO,SWCLK,nRESET
k4zuki 1:484bd6db1378 40 DigitalOut connected(P0_20);
k4zuki 2:228291df190e 41 DigitalOut running(P0_2);
k4zuki 1:484bd6db1378 42
k4zuki 5:77c115650c1f 43 SWSPI spi(P0_9,P0_8,P0_10); // mosi, miso, sclk
k4zuki 2:228291df190e 44 ATD45DB161D memory(spi, P0_7);
k4zuki 3:6af8771e7f71 45 RawSerial ble(P0_19,P0_18);
k4zuki 3:6af8771e7f71 46 DA14580 BLE(ble, P0_1);
k4zuki 5:77c115650c1f 47 #endif
k4zuki 1:484bd6db1378 48
k4zuki 1:484bd6db1378 49 int file_size( FILE *fp );
k4zuki 1:484bd6db1378 50 void flash_write (int addr, char *buf, int len);
k4zuki 1:484bd6db1378 51 void flash_read (int addr, char *buf, int len);
k4zuki 1:484bd6db1378 52
k4zuki 0:eba731be11fb 53 class myDAP : public BaseDAP
k4zuki 0:eba731be11fb 54 {
k4zuki 0:eba731be11fb 55 public:
k4zuki 0:eba731be11fb 56 myDAP(SWD* swd):BaseDAP(swd) {};
k4zuki 0:eba731be11fb 57 virtual void infoLED(int select, int value) {
k4zuki 0:eba731be11fb 58 switch(select) {
k4zuki 0:eba731be11fb 59 case 0:
k4zuki 0:eba731be11fb 60 connected = value^1;
k4zuki 0:eba731be11fb 61 running = 1;
k4zuki 0:eba731be11fb 62 break;
k4zuki 0:eba731be11fb 63 case 1:
k4zuki 0:eba731be11fb 64 running = value^1;
k4zuki 0:eba731be11fb 65 connected = 1;
k4zuki 0:eba731be11fb 66 break;
k4zuki 0:eba731be11fb 67 }
k4zuki 0:eba731be11fb 68 }
k4zuki 0:eba731be11fb 69 };
k4zuki 0:eba731be11fb 70
k4zuki 1:484bd6db1378 71
k4zuki 0:eba731be11fb 72 int main()
k4zuki 0:eba731be11fb 73 {
k4zuki 5:77c115650c1f 74 // USBLocalFileSystem* usb_local = new USBLocalFileSystem(P0_9, P0_8, P0_10, P0_7,"local"); // RamDisk(64KB)
k4zuki 5:77c115650c1f 75 USBLocalFileSystem* usb_local = new USBLocalFileSystem(p17, p15, p16, p18,"local"); // SD
k4zuki 1:484bd6db1378 76 // USBLocalFileSystem* usb_local = new USBLocalFileSystem(P0_14, P0_15, P0_16, P0_32,"local"); // SD
k4zuki 1:484bd6db1378 77 usb_local->lock(true);
k4zuki 0:eba731be11fb 78 myDAP* dap = new myDAP(&swd);
k4zuki 0:eba731be11fb 79
k4zuki 1:484bd6db1378 80 // uint8_t recieve;
k4zuki 1:484bd6db1378 81 // uint8_t read;
k4zuki 1:484bd6db1378 82 // int filesize=0;
k4zuki 1:484bd6db1378 83 FILE* fp;
k4zuki 1:484bd6db1378 84 // ble.baud(57600);
k4zuki 1:484bd6db1378 85 // int crc=0x00;
k4zuki 1:484bd6db1378 86
k4zuki 0:eba731be11fb 87
k4zuki 3:6af8771e7f71 88 int result=0;
k4zuki 0:eba731be11fb 89 while(1) {
k4zuki 0:eba731be11fb 90 usb_local->lock(true);
k4zuki 0:eba731be11fb 91 usb_local->remount();
k4zuki 0:eba731be11fb 92 char filename[32];
k4zuki 3:6af8771e7f71 93
k4zuki 5:77c115650c1f 94 usb_local->puts("Try BLE.load(): ");
k4zuki 3:6af8771e7f71 95 result = BLE.load();
k4zuki 3:6af8771e7f71 96 usb_local->putc(result);
k4zuki 5:77c115650c1f 97 usb_local->puts("\n\r");
k4zuki 5:77c115650c1f 98
k4zuki 0:eba731be11fb 99 if (usb_local->find(filename, sizeof(filename), "*.TXT")) {
k4zuki 1:484bd6db1378 100 fp = fopen(filename, "r");
k4zuki 0:eba731be11fb 101 if (fp) {
k4zuki 0:eba731be11fb 102 int c;
k4zuki 0:eba731be11fb 103 while((c = fgetc(fp)) != EOF) {
k4zuki 0:eba731be11fb 104 usb_local->putc(c);
k4zuki 0:eba731be11fb 105 }
k4zuki 0:eba731be11fb 106 fclose(fp);
k4zuki 0:eba731be11fb 107 #if defined(__MICROLIB) && defined(__ARMCC_VERSION) // with microlib and ARM compiler
k4zuki 3:6af8771e7f71 108 #warning "free(fp)"
k4zuki 0:eba731be11fb 109 free(fp);
k4zuki 0:eba731be11fb 110 #endif
k4zuki 0:eba731be11fb 111 }
k4zuki 0:eba731be11fb 112 }
k4zuki 0:eba731be11fb 113
k4zuki 1:484bd6db1378 114 USBStorage2* _usb = usb_local->getUsb();
k4zuki 1:484bd6db1378 115 USB_HID* _hid = _usb->getHID();
k4zuki 0:eba731be11fb 116 HID_REPORT recv_report;
k4zuki 2:228291df190e 117 if( _usb->readNB(&recv_report) ) {
k4zuki 0:eba731be11fb 118 HID_REPORT send_report;
k4zuki 0:eba731be11fb 119 dap->Command(recv_report.data, send_report.data);
k4zuki 0:eba731be11fb 120 send_report.length = 64;
k4zuki 2:228291df190e 121 _usb->send(&send_report);
k4zuki 0:eba731be11fb 122 }
k4zuki 3:6af8771e7f71 123 usb_local->lock(false);
k4zuki 3:6af8771e7f71 124 wait_ms(1000*5);
k4zuki 0:eba731be11fb 125 }
k4zuki 1:484bd6db1378 126 }
k4zuki 1:484bd6db1378 127
k4zuki 1:484bd6db1378 128 int file_size( FILE *fp )
k4zuki 1:484bd6db1378 129 {
k4zuki 1:484bd6db1378 130 int size;
k4zuki 1:484bd6db1378 131
k4zuki 1:484bd6db1378 132 fseek( fp, 0, SEEK_END ); // seek to end of file
k4zuki 1:484bd6db1378 133 size = ftell( fp ); // get current file pointer
k4zuki 1:484bd6db1378 134 fseek( fp, 0, SEEK_SET ); // seek back to beginning of file
k4zuki 1:484bd6db1378 135
k4zuki 1:484bd6db1378 136 return size;
k4zuki 1:484bd6db1378 137 }
k4zuki 1:484bd6db1378 138
k4zuki 1:484bd6db1378 139
k4zuki 3:6af8771e7f71 140 void flash_write (int addr, char *buf, int len)
k4zuki 3:6af8771e7f71 141 {
k4zuki 1:484bd6db1378 142 int i;
k4zuki 1:484bd6db1378 143 memory.BufferWrite(WRITE_BUFFER, addr % PAGE_SIZE);
k4zuki 1:484bd6db1378 144 for (i = 0; i < len; i ++) {
k4zuki 1:484bd6db1378 145 spi.write(buf[i]);
k4zuki 1:484bd6db1378 146 }
k4zuki 1:484bd6db1378 147 memory.BufferToPage(WRITE_BUFFER, addr / PAGE_SIZE, 1);
k4zuki 1:484bd6db1378 148 }
k4zuki 1:484bd6db1378 149
k4zuki 3:6af8771e7f71 150 void flash_read (int addr, char *buf, int len)
k4zuki 3:6af8771e7f71 151 {
k4zuki 1:484bd6db1378 152 int i;
k4zuki 1:484bd6db1378 153 memory.PageToBuffer(addr / PAGE_SIZE, READ_BUFFER);
k4zuki 1:484bd6db1378 154 memory.BufferRead(READ_BUFFER, addr % PAGE_SIZE, 1);
k4zuki 1:484bd6db1378 155 for (i = 0; i < len; i ++) {
k4zuki 1:484bd6db1378 156 buf[i] = spi.write(0xff);
k4zuki 1:484bd6db1378 157 }
k4zuki 1:484bd6db1378 158 }
k4zuki 1:484bd6db1378 159