Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: USBDevice maxim-dev mbed-rtos
Fork of FTHR_self_test by
Diff: main.cpp
- Revision:
- 7:62efbc5411c8
- Parent:
- 6:fa0134a8ac32
- Child:
- 8:26dc73d09bd9
--- 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);
+ }
}
}
