Code to test feather board

Dependencies:   max32630fthr USBDevice

Committer:
PowerIC
Date:
Tue Nov 05 16:47:32 2019 +0000
Revision:
0:420f0fba20e1
Initial Code

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PowerIC 0:420f0fba20e1 1 ///////////////////////////////////////////////////////////////////////////////////////////////////////
PowerIC 0:420f0fba20e1 2 // MAX32630FTHR FIRMWARE FOR TESTING I/Os
PowerIC 0:420f0fba20e1 3 // Revision: 1.0.0
PowerIC 0:420f0fba20e1 4 // Date: 11/05/2019
PowerIC 0:420f0fba20e1 5 // Author: Bill Smith
PowerIC 0:420f0fba20e1 6 //
PowerIC 0:420f0fba20e1 7 // 11/05/2019: Initial Code
PowerIC 0:420f0fba20e1 8 ///////////////////////////////////////////////////////////////////////////////////////////////////////
PowerIC 0:420f0fba20e1 9
PowerIC 0:420f0fba20e1 10 #include "mbed.h"
PowerIC 0:420f0fba20e1 11 #include "max32630fthr.h"
PowerIC 0:420f0fba20e1 12 #include "USBHID.h"
PowerIC 0:420f0fba20e1 13
PowerIC 0:420f0fba20e1 14
PowerIC 0:420f0fba20e1 15 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
PowerIC 0:420f0fba20e1 16
PowerIC 0:420f0fba20e1 17 // We declare a USBHID device.
PowerIC 0:420f0fba20e1 18 // HID In/Out Reports are 64 Bytes long
PowerIC 0:420f0fba20e1 19 // Vendor ID (VID): 0x0B6A // Maxim Integrated
PowerIC 0:420f0fba20e1 20 // Product ID (PID): 0x0001 //
PowerIC 0:420f0fba20e1 21 // Serial Number: 0x0001 //
PowerIC 0:420f0fba20e1 22 USBHID hid(64, 64, 0x0B6A, 0x0002, 0x0001, true);
PowerIC 0:420f0fba20e1 23
PowerIC 0:420f0fba20e1 24 DigitalOut red_led(LED1);
PowerIC 0:420f0fba20e1 25 DigitalOut green_led(LED2);
PowerIC 0:420f0fba20e1 26 DigitalOut blue_led(LED3);
PowerIC 0:420f0fba20e1 27
PowerIC 0:420f0fba20e1 28 DigitalOut PIN27(P3_5); // SCL_1
PowerIC 0:420f0fba20e1 29 DigitalOut PIN28(P3_4); // SDA_1
PowerIC 0:420f0fba20e1 30 DigitalOut PIN9(P5_7); // SDA_2
PowerIC 0:420f0fba20e1 31 DigitalOut PIN10(P6_0); // SCL_2
PowerIC 0:420f0fba20e1 32
PowerIC 0:420f0fba20e1 33 HID_REPORT send_report;
PowerIC 0:420f0fba20e1 34 HID_REPORT recv_report;
PowerIC 0:420f0fba20e1 35
PowerIC 0:420f0fba20e1 36 //-----------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 37 // USB COMMANDS
PowerIC 0:420f0fba20e1 38 //-----------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 39
PowerIC 0:420f0fba20e1 40 // LED Command
PowerIC 0:420f0fba20e1 41 #define WRITE_LED 0x20 // Send data to the RGB LED
PowerIC 0:420f0fba20e1 42
PowerIC 0:420f0fba20e1 43
PowerIC 0:420f0fba20e1 44 // Commands
PowerIC 0:420f0fba20e1 45 #define TOGGLE_OFF 0x30 //
PowerIC 0:420f0fba20e1 46 #define TOGGLE_SCL1 0x31 //
PowerIC 0:420f0fba20e1 47 #define TOGGLE_SDA1 0x32 //
PowerIC 0:420f0fba20e1 48 #define TOGGLE_SCL2 0x33 //
PowerIC 0:420f0fba20e1 49 #define TOGGLE_SDA2 0x34 //
PowerIC 0:420f0fba20e1 50 #define TOGGLE_ALERTB1 0x35 //
PowerIC 0:420f0fba20e1 51 #define TOGGLE_ALERTB2 0x36 //
PowerIC 0:420f0fba20e1 52
PowerIC 0:420f0fba20e1 53 // LED CONSTANTS
PowerIC 0:420f0fba20e1 54 #define LEDS_OFF 0x00
PowerIC 0:420f0fba20e1 55 #define RED 0x01
PowerIC 0:420f0fba20e1 56 #define GREEN 0x02
PowerIC 0:420f0fba20e1 57 #define BLUE 0x03
PowerIC 0:420f0fba20e1 58 #define YELLOW 0x04
PowerIC 0:420f0fba20e1 59
PowerIC 0:420f0fba20e1 60 // LOGICAL CONSTANTS
PowerIC 0:420f0fba20e1 61 #define OFF 0x00
PowerIC 0:420f0fba20e1 62 #define SCL1 0x01
PowerIC 0:420f0fba20e1 63 #define SDA1 0x02
PowerIC 0:420f0fba20e1 64 #define SCL2 0x03
PowerIC 0:420f0fba20e1 65 #define SDA2 0x04
PowerIC 0:420f0fba20e1 66
PowerIC 0:420f0fba20e1 67
PowerIC 0:420f0fba20e1 68 //-----------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 69 // VARIABLES
PowerIC 0:420f0fba20e1 70 //-----------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 71 static char TOGGLE_STATE = 0x00;
PowerIC 0:420f0fba20e1 72
PowerIC 0:420f0fba20e1 73
PowerIC 0:420f0fba20e1 74 void StartUp_LEDs()
PowerIC 0:420f0fba20e1 75 {
PowerIC 0:420f0fba20e1 76 red_led = 0; // Turn ON RED LED
PowerIC 0:420f0fba20e1 77 wait(0.3);
PowerIC 0:420f0fba20e1 78 red_led = 1; // Turn OFF RED LED
PowerIC 0:420f0fba20e1 79 green_led = 0; // Turn ON GREEN LED
PowerIC 0:420f0fba20e1 80 wait(0.3);
PowerIC 0:420f0fba20e1 81 green_led = 1; // Turn OFF GREEN LED
PowerIC 0:420f0fba20e1 82 blue_led = 0; // Turn ON BLUE LED
PowerIC 0:420f0fba20e1 83 wait(0.3);
PowerIC 0:420f0fba20e1 84 blue_led = 1; // Turn OFF BLUE LED
PowerIC 0:420f0fba20e1 85 }
PowerIC 0:420f0fba20e1 86
PowerIC 0:420f0fba20e1 87
PowerIC 0:420f0fba20e1 88 // main() runs in its own thread in the OS
PowerIC 0:420f0fba20e1 89 int main()
PowerIC 0:420f0fba20e1 90 {
PowerIC 0:420f0fba20e1 91 send_report.length = 64;
PowerIC 0:420f0fba20e1 92 recv_report.length = 64;
PowerIC 0:420f0fba20e1 93
PowerIC 0:420f0fba20e1 94 StartUp_LEDs(); // Cycle LEDs to show startup
PowerIC 0:420f0fba20e1 95
PowerIC 0:420f0fba20e1 96 while (true)
PowerIC 0:420f0fba20e1 97 {
PowerIC 0:420f0fba20e1 98 switch(TOGGLE_STATE)
PowerIC 0:420f0fba20e1 99 {
PowerIC 0:420f0fba20e1 100 case OFF:
PowerIC 0:420f0fba20e1 101 PIN27 = 0; // SCL_1 = OFF
PowerIC 0:420f0fba20e1 102 PIN28 = 0; // SDA_1 = OFF
PowerIC 0:420f0fba20e1 103 PIN10 = 0; // SCL_2 = OFF
PowerIC 0:420f0fba20e1 104 PIN9 = 0; // SDA_2 = OFF
PowerIC 0:420f0fba20e1 105 case SCL1:
PowerIC 0:420f0fba20e1 106 PIN27 = !PIN27;
PowerIC 0:420f0fba20e1 107 wait(0.1); // TOGGLE SCL_1 EACH PASS
PowerIC 0:420f0fba20e1 108 break;
PowerIC 0:420f0fba20e1 109 case SDA1:
PowerIC 0:420f0fba20e1 110 PIN28 = !PIN28;
PowerIC 0:420f0fba20e1 111 wait(0.1); // TOGGLE SDA_1 EACH PASS
PowerIC 0:420f0fba20e1 112 break;
PowerIC 0:420f0fba20e1 113 case SCL2:
PowerIC 0:420f0fba20e1 114 PIN10 = !PIN10;
PowerIC 0:420f0fba20e1 115 wait(0.1); // TOGGLE SCL_2 EACH PASS
PowerIC 0:420f0fba20e1 116 break;
PowerIC 0:420f0fba20e1 117 case SDA2:
PowerIC 0:420f0fba20e1 118 PIN9 = !PIN9;
PowerIC 0:420f0fba20e1 119 wait(0.1); // TOGGLE SDA_2 EACH PASS
PowerIC 0:420f0fba20e1 120 break;
PowerIC 0:420f0fba20e1 121 default:
PowerIC 0:420f0fba20e1 122 break;
PowerIC 0:420f0fba20e1 123 }// END SWITCH
PowerIC 0:420f0fba20e1 124
PowerIC 0:420f0fba20e1 125 if(hid.readNB(&recv_report))
PowerIC 0:420f0fba20e1 126 {
PowerIC 0:420f0fba20e1 127 switch(recv_report.data[0])
PowerIC 0:420f0fba20e1 128 {
PowerIC 0:420f0fba20e1 129 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 130 case WRITE_LED: // COMMAND [0x20] - WRITE TO RGB LED
PowerIC 0:420f0fba20e1 131 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 132 switch(recv_report.data[1])
PowerIC 0:420f0fba20e1 133 {
PowerIC 0:420f0fba20e1 134 case LEDS_OFF:
PowerIC 0:420f0fba20e1 135 red_led = 1; // Turn OFF RED LED
PowerIC 0:420f0fba20e1 136 green_led = 1; // Turn OFF GREEN LED
PowerIC 0:420f0fba20e1 137 blue_led = 1; // Turn OFF BLUE LED
PowerIC 0:420f0fba20e1 138 break;
PowerIC 0:420f0fba20e1 139 case RED:
PowerIC 0:420f0fba20e1 140 if(recv_report.data[2] == 1){red_led = 0;} else {red_led = 1;}
PowerIC 0:420f0fba20e1 141 break;
PowerIC 0:420f0fba20e1 142 case GREEN:
PowerIC 0:420f0fba20e1 143 if(recv_report.data[2] == 1){green_led = 0;} else {green_led = 1;}
PowerIC 0:420f0fba20e1 144 break;
PowerIC 0:420f0fba20e1 145 case BLUE:
PowerIC 0:420f0fba20e1 146 if(recv_report.data[2] == 1){blue_led = 0;} else {blue_led = 1;}
PowerIC 0:420f0fba20e1 147 break;
PowerIC 0:420f0fba20e1 148 default:
PowerIC 0:420f0fba20e1 149 break;
PowerIC 0:420f0fba20e1 150 }// End Switch (RD1)
PowerIC 0:420f0fba20e1 151
PowerIC 0:420f0fba20e1 152 send_report.data[0] = recv_report.data[0]; // Echo Command
PowerIC 0:420f0fba20e1 153 send_report.data[1] = recv_report.data[1]; // Echo Subcommand 1
PowerIC 0:420f0fba20e1 154 send_report.data[2] = recv_report.data[2]; // Echo Subcommand 2
PowerIC 0:420f0fba20e1 155 break;
PowerIC 0:420f0fba20e1 156 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 157 case TOGGLE_OFF: // COMMAND [0x30] - TOGGLE OFF
PowerIC 0:420f0fba20e1 158 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 159 send_report.data[0] = TOGGLE_OFF; // Echo Command
PowerIC 0:420f0fba20e1 160 TOGGLE_STATE = OFF;
PowerIC 0:420f0fba20e1 161
PowerIC 0:420f0fba20e1 162 break;
PowerIC 0:420f0fba20e1 163 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 164 case TOGGLE_SCL1: // COMMAND [0x31] - TOGGLE SCL1
PowerIC 0:420f0fba20e1 165 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 166 send_report.data[0] = TOGGLE_SCL1; // Echo Command
PowerIC 0:420f0fba20e1 167 TOGGLE_STATE = SCL1;
PowerIC 0:420f0fba20e1 168
PowerIC 0:420f0fba20e1 169 break;
PowerIC 0:420f0fba20e1 170 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 171 case TOGGLE_SDA1: // COMMAND [0x32] - TOGGLE SDA1
PowerIC 0:420f0fba20e1 172 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 173 send_report.data[0] = TOGGLE_SDA1; // Echo Command
PowerIC 0:420f0fba20e1 174 TOGGLE_STATE = SDA1;
PowerIC 0:420f0fba20e1 175
PowerIC 0:420f0fba20e1 176 break;
PowerIC 0:420f0fba20e1 177 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 178 case TOGGLE_SCL2: // COMMAND [0x33] - TOGGLE SCL2
PowerIC 0:420f0fba20e1 179 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 180 send_report.data[0] = TOGGLE_SCL2; // Echo Command
PowerIC 0:420f0fba20e1 181 TOGGLE_STATE = SCL2;
PowerIC 0:420f0fba20e1 182
PowerIC 0:420f0fba20e1 183 break;
PowerIC 0:420f0fba20e1 184 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 185 case TOGGLE_SDA2: // COMMAND [0x34] - TOGGLE SDA2
PowerIC 0:420f0fba20e1 186 //-----------------------------------------------------------------------------------------------------------------
PowerIC 0:420f0fba20e1 187 send_report.data[0] = TOGGLE_SDA2; // Echo Command
PowerIC 0:420f0fba20e1 188 TOGGLE_STATE = SDA2;
PowerIC 0:420f0fba20e1 189
PowerIC 0:420f0fba20e1 190 break;
PowerIC 0:420f0fba20e1 191
PowerIC 0:420f0fba20e1 192 }// End Switch - Command Interpretor
PowerIC 0:420f0fba20e1 193
PowerIC 0:420f0fba20e1 194 //Send the report
PowerIC 0:420f0fba20e1 195 hid.send(&send_report);
PowerIC 0:420f0fba20e1 196 }// End If - HID Message
PowerIC 0:420f0fba20e1 197 }// End Main While Loop
PowerIC 0:420f0fba20e1 198 }// End Main