Code to test feather board
Dependencies: max32630fthr USBDevice
main.cpp@0:420f0fba20e1, 2019-11-05 (annotated)
- Committer:
- PowerIC
- Date:
- Tue Nov 05 16:47:32 2019 +0000
- Revision:
- 0:420f0fba20e1
Initial Code
Who changed what in which revision?
User | Revision | Line number | New 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 |