This program reads the voltages on the board to ensure they are operating correctly and it implements a USB MSD card reader to verify USB and microSD connectivity.
Dependencies: USBDevice SDFileSystem max32630fthr mbed
Fork of FTHR_USBMSD_Demo by
Diff: main.cpp
- Revision:
- 7:62efbc5411c8
- Parent:
- 6:fa0134a8ac32
- Child:
- 8:4bb2ec578490
diff -r fa0134a8ac32 -r 62efbc5411c8 main.cpp --- a/main.cpp Mon Dec 19 18:46:28 2016 +0000 +++ b/main.cpp Mon Dec 19 22:45:22 2016 +0000 @@ -1,6 +1,7 @@ #include "mbed.h" #include "max32630fthr.h" -#include "USBMSD_SD.h" +#include "SDFileSystem.h" +#include "USBKeyboard.h" MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3); @@ -10,12 +11,18 @@ DigitalOut rLED(LED1, LED_ON); DigitalOut gLED(LED2, LED_OFF); DigitalOut bLED(LED3, LED_OFF); +DigitalIn button(SW1, PullUp); AnalogIn monIn(AIN_0); AnalogIn vddbIn(AIN_6); AnalogIn vdd18In(AIN_7); AnalogIn vdd12In(AIN_8); AnalogIn vrtcIn(AIN_9); +SDFileSystem sd(P0_5, P0_6, P0_4, P0_7, "sd"); // mosi, miso, sclk, cs +USBKeyboard keyboard; + +#define BMI160_I2C_ADDR 0xD0 + // Function to report failure void testFailed() { @@ -26,14 +33,15 @@ while(1) { Thread::wait(500); gLED = !gLED; - } + } } // Function to read monitor port -float readMon(MAX14690::monCfg_t monCfg){ +float readMon(MAX14690::monCfg_t monCfg) +{ pegasus.max14690.monSet(monCfg, MAX14690::MON_DIV4); Thread::wait(5); - return (4.8f * monIn); + return (4.8f * monIn); } // main() runs in its own thread in the OS @@ -41,57 +49,98 @@ int main() { float aIn; + char dataBuf[2]; + int ledCnt = 0; + daplink.printf("Initializing MAX32630FTHR\r\n"); // pegasus.init(MAX32630FTHR::VIO_3V3); daplink.printf("Checking Supplies\r\n"); aIn = 2.4f * vdd12In; daplink.printf("vdd12 = %f\r\n", aIn); - if ((aIn < 1.0f) || (aIn > 1.4f)) { testFailed(); } + if ((aIn < 1.0f) || (aIn > 1.4f)) { + testFailed(); + } aIn = 2.4f * vdd18In; daplink.printf("vdd18 = %f\r\n", aIn); - if ((aIn < 1.6f) || (aIn > 2.0f)) { testFailed(); } + if ((aIn < 1.6f) || (aIn > 2.0f)) { + testFailed(); + } aIn = 4.8f * vddbIn; daplink.printf("vddb = %f\r\n", aIn); - if ((aIn < 3.0f) || (aIn > 3.6f)) { testFailed(); } + if ((aIn < 3.0f) || (aIn > 3.6f)) { + testFailed(); + } aIn = 2.4f * vrtcIn; daplink.printf("vrtc = %f\r\n", aIn); - if ((aIn < 1.6f) || (aIn > 2.0f)) { testFailed(); } + if ((aIn < 1.6f) || (aIn > 2.0f)) { + testFailed(); + } aIn = readMon(MAX14690::MON_SYS); daplink.printf("sys = %f\r\n", aIn); - if ((aIn < 3.0f) || (aIn > 5.0f)) { testFailed(); } + if ((aIn < 3.0f) || (aIn > 5.0f)) { + testFailed(); + } aIn = readMon(MAX14690::MON_BUCK1); daplink.printf("buck1 = %f\r\n", aIn); - if ((aIn < 1.0f) || (aIn > 1.4f)) { testFailed(); } + if ((aIn < 1.0f) || (aIn > 1.4f)) { + testFailed(); + } aIn = readMon(MAX14690::MON_BUCK2); daplink.printf("buck2 = %f\r\n", aIn); - if ((aIn < 1.6f) || (aIn > 2.0f)) { testFailed(); } + if ((aIn < 1.6f) || (aIn > 2.0f)) { + testFailed(); + } aIn = readMon(MAX14690::MON_LDO1); daplink.printf("ldo1 = %f\r\n", aIn); - if ((aIn < 1.6f) || (aIn > 2.0f)) { testFailed(); } + if ((aIn < 1.6f) || (aIn > 2.0f)) { + testFailed(); + } aIn = readMon(MAX14690::MON_LDO2); daplink.printf("ldo2 = %f\r\n", aIn); - if ((aIn < 3.0f) || (aIn > 3.6f)) { testFailed(); } + if ((aIn < 3.0f) || (aIn > 3.6f)) { + testFailed(); + } aIn = readMon(MAX14690::MON_LDO3); daplink.printf("ldo3 = %f\r\n", aIn); aIn = readMon(MAX14690::MON_LDO3); - gLED = LED_ON; + bLED = LED_ON; - USBMSD_SD sd(P0_5, P0_6, P0_4, P0_7); // mosi, miso, sclk, cs + daplink.printf("Checking micro SD Card\r\n"); + FILE *fp = fopen("/sd/myfile.txt", "r"); + if(fp == NULL) { + daplink.printf("Unable to open 'myfile.txt'\r\n"); + testFailed(); + } + daplink.printf("micro SD Card present\r\n"); rLED = LED_OFF; - bLED = LED_ON; + daplink.printf("Checking BMI160\r\n"); + dataBuf[0] = 0x00; + if (pegasus.i2c.write(BMI160_I2C_ADDR, dataBuf, 1, 1) != 0) testFailed(); + if (pegasus.i2c.read(BMI160_I2C_ADDR, dataBuf, 1) != 0) testFailed(); + if (dataBuf[0] != 0xD1) testFailed(); + daplink.printf("BMI160 present\r\n"); + gLED = LED_ON; + + + daplink.printf("Self Test Passed\r\n"); - + rLED = LED_ON; + gLED = LED_ON; + bLED = LED_ON; + while (true) { - Thread::wait(500); - rLED = LED_OFF; - gLED = LED_ON; - bLED = LED_OFF; - Thread::wait(500); - rLED = LED_ON; - gLED = LED_ON; - bLED = LED_ON; + if (!button) { + keyboard.mediaControl(KEY_MUTE); + ledCnt++; + rLED = (ledCnt & 1); + gLED = (ledCnt & 2); + bLED = (ledCnt & 4); + Thread::wait(500); + } else { + Thread::wait(50); + } } }