Test program running on MAX32625MBED. Control through USB Serial commands using a terminal emulator such as teraterm or putty.

Dependencies:   MaximTinyTester CmdLine MAX541 USBDevice

Committer:
whismanoid
Date:
Wed Feb 12 00:22:24 2020 +0000
Revision:
55:75c249929a5e
Parent:
54:26a973c5dac4
Child:
56:a3144eaea1a8
%SD -- SPI diagnostic messages enable

Who changed what in which revision?

UserRevisionLine numberNew contents of line
whismanoid 53:3d5a3d241a5e 1 // /*******************************************************************************
whismanoid 53:3d5a3d241a5e 2 // * Copyright (C) 2020 Maxim Integrated Products, Inc., All Rights Reserved.
whismanoid 53:3d5a3d241a5e 3 // *
whismanoid 53:3d5a3d241a5e 4 // * Permission is hereby granted, free of charge, to any person obtaining a
whismanoid 53:3d5a3d241a5e 5 // * copy of this software and associated documentation files (the "Software"),
whismanoid 53:3d5a3d241a5e 6 // * to deal in the Software without restriction, including without limitation
whismanoid 53:3d5a3d241a5e 7 // * the rights to use, copy, modify, merge, publish, distribute, sublicense,
whismanoid 53:3d5a3d241a5e 8 // * and/or sell copies of the Software, and to permit persons to whom the
whismanoid 53:3d5a3d241a5e 9 // * Software is furnished to do so, subject to the following conditions:
whismanoid 53:3d5a3d241a5e 10 // *
whismanoid 53:3d5a3d241a5e 11 // * The above copyright notice and this permission notice shall be included
whismanoid 53:3d5a3d241a5e 12 // * in all copies or substantial portions of the Software.
whismanoid 53:3d5a3d241a5e 13 // *
whismanoid 53:3d5a3d241a5e 14 // * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
whismanoid 53:3d5a3d241a5e 15 // * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
whismanoid 53:3d5a3d241a5e 16 // * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
whismanoid 53:3d5a3d241a5e 17 // * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES
whismanoid 53:3d5a3d241a5e 18 // * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
whismanoid 53:3d5a3d241a5e 19 // * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
whismanoid 53:3d5a3d241a5e 20 // * OTHER DEALINGS IN THE SOFTWARE.
whismanoid 53:3d5a3d241a5e 21 // *
whismanoid 53:3d5a3d241a5e 22 // * Except as contained in this notice, the name of Maxim Integrated
whismanoid 53:3d5a3d241a5e 23 // * Products, Inc. shall not be used except as stated in the Maxim Integrated
whismanoid 53:3d5a3d241a5e 24 // * Products, Inc. Branding Policy.
whismanoid 53:3d5a3d241a5e 25 // *
whismanoid 53:3d5a3d241a5e 26 // * The mere transfer of this software does not imply any licenses
whismanoid 53:3d5a3d241a5e 27 // * of trade secrets, proprietary technology, copyrights, patents,
whismanoid 53:3d5a3d241a5e 28 // * trademarks, maskwork rights, or any other form of intellectual
whismanoid 53:3d5a3d241a5e 29 // * property whatsoever. Maxim Integrated Products, Inc. retains all
whismanoid 53:3d5a3d241a5e 30 // * ownership rights.
whismanoid 53:3d5a3d241a5e 31 // *******************************************************************************
whismanoid 53:3d5a3d241a5e 32 // */
whismanoid 53:3d5a3d241a5e 33 //---------- CODE GENERATOR: testMainCppCodeList
whismanoid 53:3d5a3d241a5e 34 // CODE GENERATOR: example code includes
whismanoid 53:3d5a3d241a5e 35
whismanoid 53:3d5a3d241a5e 36 // example code includes
whismanoid 53:3d5a3d241a5e 37 // standard include for target platform -- Platform_Include_Boilerplate
whismanoid 53:3d5a3d241a5e 38 #include "mbed.h"
whismanoid 53:3d5a3d241a5e 39 // Platforms:
whismanoid 53:3d5a3d241a5e 40 // - MAX32625MBED
whismanoid 53:3d5a3d241a5e 41 // - supports mbed-os-5.11, requires USBDevice library
whismanoid 53:3d5a3d241a5e 42 // - add https://developer.mbed.org/teams/MaximIntegrated/code/USBDevice/
whismanoid 53:3d5a3d241a5e 43 // - remove max32630fthr library (if present)
whismanoid 53:3d5a3d241a5e 44 // - remove MAX32620FTHR library (if present)
whismanoid 53:3d5a3d241a5e 45 // - MAX32600MBED
whismanoid 53:3d5a3d241a5e 46 // - remove max32630fthr library (if present)
whismanoid 53:3d5a3d241a5e 47 // - remove MAX32620FTHR library (if present)
whismanoid 53:3d5a3d241a5e 48 // - Windows 10 note: Don't connect HDK until you are ready to load new firmware into the board.
whismanoid 53:3d5a3d241a5e 49 // - NUCLEO_F446RE
whismanoid 53:3d5a3d241a5e 50 // - remove USBDevice library
whismanoid 53:3d5a3d241a5e 51 // - remove max32630fthr library (if present)
whismanoid 53:3d5a3d241a5e 52 // - remove MAX32620FTHR library (if present)
whismanoid 53:3d5a3d241a5e 53 // - NUCLEO_F401RE
whismanoid 53:3d5a3d241a5e 54 // - remove USBDevice library
whismanoid 53:3d5a3d241a5e 55 // - remove max32630fthr library (if present)
whismanoid 53:3d5a3d241a5e 56 // - remove MAX32620FTHR library (if present)
whismanoid 53:3d5a3d241a5e 57 // - MAX32630FTHR
whismanoid 53:3d5a3d241a5e 58 // - #include "max32630fthr.h"
whismanoid 53:3d5a3d241a5e 59 // - add http://os.mbed.org/teams/MaximIntegrated/code/max32630fthr/
whismanoid 53:3d5a3d241a5e 60 // - remove MAX32620FTHR library (if present)
whismanoid 53:3d5a3d241a5e 61 // - MAX32620FTHR
whismanoid 53:3d5a3d241a5e 62 // - #include "MAX32620FTHR.h"
whismanoid 53:3d5a3d241a5e 63 // - remove max32630fthr library (if present)
whismanoid 53:3d5a3d241a5e 64 // - add https://os.mbed.com/teams/MaximIntegrated/code/MAX32620FTHR/
whismanoid 53:3d5a3d241a5e 65 // - not tested yet
whismanoid 53:3d5a3d241a5e 66 // - MAX32625PICO
whismanoid 53:3d5a3d241a5e 67 // - remove max32630fthr library (if present)
whismanoid 53:3d5a3d241a5e 68 // - remove MAX32620FTHR library (if present)
whismanoid 53:3d5a3d241a5e 69 // - not tested yet
whismanoid 53:3d5a3d241a5e 70 //
whismanoid 53:3d5a3d241a5e 71 // end Platform_Include_Boilerplate
whismanoid 53:3d5a3d241a5e 72 #include "MAX11043.h"
whismanoid 53:3d5a3d241a5e 73 #include "CmdLine.h"
whismanoid 53:3d5a3d241a5e 74 #include "MaximTinyTester.h"
whismanoid 53:3d5a3d241a5e 75
whismanoid 53:3d5a3d241a5e 76 // optional: serial port
whismanoid 53:3d5a3d241a5e 77 // note: some platforms such as Nucleo-F446RE do not support the USBSerial library.
whismanoid 53:3d5a3d241a5e 78 // In those cases, remove the USBDevice lib from the project and rebuild.
whismanoid 53:3d5a3d241a5e 79 #if defined(TARGET_MAX32625MBED)
whismanoid 53:3d5a3d241a5e 80 #include "USBSerial.h"
whismanoid 53:3d5a3d241a5e 81 USBSerial serial; // virtual serial port over USB (DEV connector)
whismanoid 53:3d5a3d241a5e 82 #elif defined(TARGET_MAX32630MBED)
whismanoid 53:3d5a3d241a5e 83 #include "USBSerial.h"
whismanoid 53:3d5a3d241a5e 84 USBSerial serial; // virtual serial port over USB (DEV connector)
whismanoid 53:3d5a3d241a5e 85 #else
whismanoid 53:3d5a3d241a5e 86 //#include "USBSerial.h"
whismanoid 53:3d5a3d241a5e 87 Serial serial(USBTX, USBRX); // tx, rx
whismanoid 53:3d5a3d241a5e 88 #endif
whismanoid 53:3d5a3d241a5e 89
whismanoid 53:3d5a3d241a5e 90 void on_immediate_0x21(); // Unicode (U+0021) ! EXCLAMATION MARK
whismanoid 53:3d5a3d241a5e 91 void on_immediate_0x7b(); // Unicode (U+007B) { LEFT CURLY BRACKET
whismanoid 53:3d5a3d241a5e 92 void on_immediate_0x7d(); // Unicode (U+007D) } RIGHT CURLY BRACKET
whismanoid 53:3d5a3d241a5e 93
whismanoid 53:3d5a3d241a5e 94 #include "CmdLine.h"
whismanoid 53:3d5a3d241a5e 95
whismanoid 53:3d5a3d241a5e 96 # if HAS_DAPLINK_SERIAL
whismanoid 53:3d5a3d241a5e 97 CmdLine cmdLine_DAPLINKserial(DAPLINKserial, "DAPLINK");
whismanoid 53:3d5a3d241a5e 98 # endif // HAS_DAPLINK_SERIAL
whismanoid 53:3d5a3d241a5e 99 CmdLine cmdLine_serial(serial, "serial");
whismanoid 53:3d5a3d241a5e 100
whismanoid 53:3d5a3d241a5e 101
whismanoid 53:3d5a3d241a5e 102 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 103
whismanoid 53:3d5a3d241a5e 104
whismanoid 53:3d5a3d241a5e 105 #if defined(TARGET)
whismanoid 53:3d5a3d241a5e 106 // TARGET_NAME macros from targets/TARGET_Maxim/TARGET_MAX32625/device/mxc_device.h
whismanoid 53:3d5a3d241a5e 107 // Create a string definition for the TARGET
whismanoid 53:3d5a3d241a5e 108 #define STRING_ARG(arg) #arg
whismanoid 53:3d5a3d241a5e 109 #define STRING_NAME(name) STRING_ARG(name)
whismanoid 53:3d5a3d241a5e 110 #define TARGET_NAME STRING_NAME(TARGET)
whismanoid 53:3d5a3d241a5e 111 #elif defined(TARGET_MAX32600)
whismanoid 53:3d5a3d241a5e 112 #define TARGET_NAME "MAX32600"
whismanoid 53:3d5a3d241a5e 113 #elif defined(TARGET_LPC1768)
whismanoid 53:3d5a3d241a5e 114 #define TARGET_NAME "LPC1768"
whismanoid 53:3d5a3d241a5e 115 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 53:3d5a3d241a5e 116 #define TARGET_NAME "NUCLEO_F446RE"
whismanoid 53:3d5a3d241a5e 117 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 53:3d5a3d241a5e 118 #define TARGET_NAME "NUCLEO_F401RE"
whismanoid 53:3d5a3d241a5e 119 #else
whismanoid 53:3d5a3d241a5e 120 #error TARGET NOT DEFINED
whismanoid 53:3d5a3d241a5e 121 #endif
whismanoid 53:3d5a3d241a5e 122 #if defined(TARGET_MAX32630)
whismanoid 53:3d5a3d241a5e 123 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 124 // TARGET=MAX32630FTHR ARM Cortex-M4F 96MHz 2048kB Flash 512kB SRAM
whismanoid 53:3d5a3d241a5e 125 // +-------------[microUSB]-------------+
whismanoid 53:3d5a3d241a5e 126 // | J1 MAX32630FTHR J2 |
whismanoid 53:3d5a3d241a5e 127 // ______ | [ ] RST GND [ ] |
whismanoid 53:3d5a3d241a5e 128 // ______ | [ ] 3V3 BAT+[ ] |
whismanoid 53:3d5a3d241a5e 129 // ______ | [ ] 1V8 reset SW1 |
whismanoid 53:3d5a3d241a5e 130 // ______ | [ ] GND J4 J3 |
whismanoid 53:3d5a3d241a5e 131 // analogIn0/4 | [a] AIN_0 1.2Vfs (bat) SYS [ ] | switched BAT+
whismanoid 53:3d5a3d241a5e 132 // analogIn1/5 | [a] AIN_1 1.2Vfs PWR [ ] | external pwr btn
whismanoid 53:3d5a3d241a5e 133 // analogIn2 | [a] AIN_2 1.2Vfs +5V VBUS [ ] | USB +5V power
whismanoid 53:3d5a3d241a5e 134 // analogIn3 | [a] AIN_3 1.2Vfs 1-WIRE P4_0 [d] | D0 dig9
whismanoid 53:3d5a3d241a5e 135 // (I2C2.SDA) | [d] P5_7 SDA2 SRN P5_6 [d] | D1 dig8
whismanoid 53:3d5a3d241a5e 136 // (I2C2.SCL) | [d] P6_0 SCL2 SDIO3 P5_5 [d] | D2 dig7
whismanoid 53:3d5a3d241a5e 137 // D13/SCLK | [s] P5_0 SCLK SDIO2 P5_4 [d] | D3 dig6
whismanoid 53:3d5a3d241a5e 138 // D11/MOSI | [s] P5_1 MOSI SSEL P5_3 [d] | D4 dig5
whismanoid 53:3d5a3d241a5e 139 // D12/MISO | [s] P5_2 MISO RTS P3_3 [d] | D5 dig4
whismanoid 53:3d5a3d241a5e 140 // D10/CS | [s] P3_0 RX CTS P3_2 [d] | D6 dig3
whismanoid 53:3d5a3d241a5e 141 // D9 dig0 | [d] P3_1 TX SCL P3_5 [d] | D7 dig2
whismanoid 53:3d5a3d241a5e 142 // ______ | [ ] GND SDA P3_4 [d] | D8 dig1
whismanoid 53:3d5a3d241a5e 143 // | |
whismanoid 53:3d5a3d241a5e 144 // | XIP Flash MAX14690N |
whismanoid 53:3d5a3d241a5e 145 // | XIP_SCLK P1_0 SDA2 P5_7 |
whismanoid 53:3d5a3d241a5e 146 // | XIP_MOSI P1_1 SCL2 P6_0 |
whismanoid 53:3d5a3d241a5e 147 // | XIP_MISO P1_2 PMIC_INIT P3_7 |
whismanoid 53:3d5a3d241a5e 148 // | XIP_SSEL P1_3 MPC P2_7 |
whismanoid 53:3d5a3d241a5e 149 // | XIP_DIO2 P1_4 MON AIN_0 |
whismanoid 53:3d5a3d241a5e 150 // | XIP_DIO3 P1_5 |
whismanoid 53:3d5a3d241a5e 151 // | |
whismanoid 53:3d5a3d241a5e 152 // | PAN1326B MicroSD LED |
whismanoid 53:3d5a3d241a5e 153 // | BT_RX P0_0 SD_SCLK P0_4 r P2_4 |
whismanoid 53:3d5a3d241a5e 154 // | BT_TX P0_1 SD_MOSI P0_5 g P2_5 |
whismanoid 53:3d5a3d241a5e 155 // | BT_CTS P0_2 SD_MISO P0_6 b P2_6 |
whismanoid 53:3d5a3d241a5e 156 // | BT_RTS P0_3 SD_SSEL P0_7 |
whismanoid 53:3d5a3d241a5e 157 // | BT_RST P1_6 DETECT P2_2 |
whismanoid 53:3d5a3d241a5e 158 // | BT_CLK P1_7 SW2 P2_3 |
whismanoid 53:3d5a3d241a5e 159 // +------------------------------------+
whismanoid 53:3d5a3d241a5e 160 // MAX32630FTHR board has MAX14690 PMIC on I2C bus (P5_7 SDA, P6_0 SCL) at slave address 0101_000r 0x50 (or 0x28 for 7 MSbit address).
whismanoid 53:3d5a3d241a5e 161 // MAX32630FTHR board has BMI160 accelerometer on I2C bus (P5_7 SDA, P6_0 SCL) at slave address 1101_000r 0xD0 (or 0x68 for 7 MSbit address).
whismanoid 53:3d5a3d241a5e 162 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 163 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 164 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 165 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 166 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 167 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 168 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 169 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 170 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 171 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 53:3d5a3d241a5e 172 // AIN_10 = x undefined?
whismanoid 53:3d5a3d241a5e 173 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 174 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 175 //
whismanoid 53:3d5a3d241a5e 176 #include "max32630fthr.h"
whismanoid 53:3d5a3d241a5e 177 MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
whismanoid 53:3d5a3d241a5e 178 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 53:3d5a3d241a5e 179 // MAX32630FTHR board supports only internal VREF = 1.200V at bypass capacitor C15
whismanoid 53:3d5a3d241a5e 180 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 53:3d5a3d241a5e 181 // Arduino connector
whismanoid 53:3d5a3d241a5e 182 #ifndef A0
whismanoid 53:3d5a3d241a5e 183 #define A0 AIN_0
whismanoid 53:3d5a3d241a5e 184 #endif
whismanoid 53:3d5a3d241a5e 185 #ifndef A1
whismanoid 53:3d5a3d241a5e 186 #define A1 AIN_1
whismanoid 53:3d5a3d241a5e 187 #endif
whismanoid 53:3d5a3d241a5e 188 #ifndef A2
whismanoid 53:3d5a3d241a5e 189 #define A2 AIN_2
whismanoid 53:3d5a3d241a5e 190 #endif
whismanoid 53:3d5a3d241a5e 191 #ifndef A3
whismanoid 53:3d5a3d241a5e 192 #define A3 AIN_3
whismanoid 53:3d5a3d241a5e 193 #endif
whismanoid 53:3d5a3d241a5e 194 #ifndef D0
whismanoid 53:3d5a3d241a5e 195 #define D0 P4_0
whismanoid 53:3d5a3d241a5e 196 #endif
whismanoid 53:3d5a3d241a5e 197 #ifndef D1
whismanoid 53:3d5a3d241a5e 198 #define D1 P5_6
whismanoid 53:3d5a3d241a5e 199 #endif
whismanoid 53:3d5a3d241a5e 200 #ifndef D2
whismanoid 53:3d5a3d241a5e 201 #define D2 P5_5
whismanoid 53:3d5a3d241a5e 202 #endif
whismanoid 53:3d5a3d241a5e 203 #ifndef D3
whismanoid 53:3d5a3d241a5e 204 #define D3 P5_4
whismanoid 53:3d5a3d241a5e 205 #endif
whismanoid 53:3d5a3d241a5e 206 #ifndef D4
whismanoid 53:3d5a3d241a5e 207 #define D4 P5_3
whismanoid 53:3d5a3d241a5e 208 #endif
whismanoid 53:3d5a3d241a5e 209 #ifndef D5
whismanoid 53:3d5a3d241a5e 210 #define D5 P3_3
whismanoid 53:3d5a3d241a5e 211 #endif
whismanoid 53:3d5a3d241a5e 212 #ifndef D6
whismanoid 53:3d5a3d241a5e 213 #define D6 P3_2
whismanoid 53:3d5a3d241a5e 214 #endif
whismanoid 53:3d5a3d241a5e 215 #ifndef D7
whismanoid 53:3d5a3d241a5e 216 #define D7 P3_5
whismanoid 53:3d5a3d241a5e 217 #endif
whismanoid 53:3d5a3d241a5e 218 #ifndef D8
whismanoid 53:3d5a3d241a5e 219 #define D8 P3_4
whismanoid 53:3d5a3d241a5e 220 #endif
whismanoid 53:3d5a3d241a5e 221 #ifndef D9
whismanoid 53:3d5a3d241a5e 222 #define D9 P3_1
whismanoid 53:3d5a3d241a5e 223 #endif
whismanoid 53:3d5a3d241a5e 224 #ifndef D10
whismanoid 53:3d5a3d241a5e 225 #define D10 P3_0
whismanoid 53:3d5a3d241a5e 226 #endif
whismanoid 53:3d5a3d241a5e 227 #ifndef D11
whismanoid 53:3d5a3d241a5e 228 #define D11 P5_1
whismanoid 53:3d5a3d241a5e 229 #endif
whismanoid 53:3d5a3d241a5e 230 #ifndef D12
whismanoid 53:3d5a3d241a5e 231 #define D12 P5_2
whismanoid 53:3d5a3d241a5e 232 #endif
whismanoid 53:3d5a3d241a5e 233 #ifndef D13
whismanoid 53:3d5a3d241a5e 234 #define D13 P5_0
whismanoid 53:3d5a3d241a5e 235 #endif
whismanoid 53:3d5a3d241a5e 236 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 237 #elif defined(TARGET_MAX32625MBED)
whismanoid 53:3d5a3d241a5e 238 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 239 // TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 53:3d5a3d241a5e 240 // +-------------------------------------+
whismanoid 53:3d5a3d241a5e 241 // | MAX32625MBED Arduino UNO header |
whismanoid 53:3d5a3d241a5e 242 // | |
whismanoid 53:3d5a3d241a5e 243 // | A5/SCL[ ] | P1_7 dig15
whismanoid 53:3d5a3d241a5e 244 // | A4/SDA[ ] | P1_6 dig14
whismanoid 53:3d5a3d241a5e 245 // | AREF=N/C[ ] |
whismanoid 53:3d5a3d241a5e 246 // | GND[ ] |
whismanoid 53:3d5a3d241a5e 247 // | [ ]N/C SCK/13[ ] | P1_0 dig13
whismanoid 53:3d5a3d241a5e 248 // | [ ]IOREF=3V3 MISO/12[ ] | P1_2 dig12
whismanoid 53:3d5a3d241a5e 249 // | [ ]RST MOSI/11[ ]~| P1_1 dig11
whismanoid 53:3d5a3d241a5e 250 // | [ ]3V3 CS/10[ ]~| P1_3 dig10
whismanoid 53:3d5a3d241a5e 251 // | [ ]5V0 9[ ]~| P1_5 dig9
whismanoid 53:3d5a3d241a5e 252 // | [ ]GND 8[ ] | P1_4 dig8
whismanoid 53:3d5a3d241a5e 253 // | [ ]GND |
whismanoid 53:3d5a3d241a5e 254 // | [ ]Vin 7[ ] | P0_7 dig7
whismanoid 53:3d5a3d241a5e 255 // | 6[ ]~| P0_6 dig6
whismanoid 53:3d5a3d241a5e 256 // AIN_0 | [ ]A0 5[ ]~| P0_5 dig5
whismanoid 53:3d5a3d241a5e 257 // AIN_1 | [ ]A1 4[ ] | P0_4 dig4
whismanoid 53:3d5a3d241a5e 258 // AIN_2 | [ ]A2 INT1/3[ ]~| P0_3 dig3
whismanoid 53:3d5a3d241a5e 259 // AIN_3 | [ ]A3 INT0/2[ ] | P0_2 dig2
whismanoid 53:3d5a3d241a5e 260 // dig16 P3_4 | [ ]A4/SDA RST SCK MISO TX>1[ ] | P0_1 dig1
whismanoid 53:3d5a3d241a5e 261 // dig17 P3_5 | [ ]A5/SCL [ ] [ ] [ ] RX<0[ ] | P0_0 dig0
whismanoid 53:3d5a3d241a5e 262 // | [ ] [ ] [ ] |
whismanoid 53:3d5a3d241a5e 263 // | UNO_R3 GND MOSI 5V ____________/
whismanoid 53:3d5a3d241a5e 264 // \_______________________/
whismanoid 53:3d5a3d241a5e 265 //
whismanoid 53:3d5a3d241a5e 266 // +------------------------+
whismanoid 53:3d5a3d241a5e 267 // | |
whismanoid 53:3d5a3d241a5e 268 // | MicroSD LED |
whismanoid 53:3d5a3d241a5e 269 // | SD_SCLK P2_4 r P3_0 |
whismanoid 53:3d5a3d241a5e 270 // | SD_MOSI P2_5 g P3_1 |
whismanoid 53:3d5a3d241a5e 271 // | SD_MISO P2_6 b P3_2 |
whismanoid 53:3d5a3d241a5e 272 // | SD_SSEL P2_7 y P3_3 |
whismanoid 53:3d5a3d241a5e 273 // | |
whismanoid 53:3d5a3d241a5e 274 // | DAPLINK BUTTONS |
whismanoid 53:3d5a3d241a5e 275 // | TX P2_1 SW3 P2_3 |
whismanoid 53:3d5a3d241a5e 276 // | RX P2_0 SW2 P2_2 |
whismanoid 53:3d5a3d241a5e 277 // +------------------------+
whismanoid 53:3d5a3d241a5e 278 //
whismanoid 53:3d5a3d241a5e 279 // AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 280 // AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 281 // AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 282 // AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 283 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 284 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 285 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 286 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 287 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 288 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 53:3d5a3d241a5e 289 // AIN_10 = x undefined?
whismanoid 53:3d5a3d241a5e 290 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 291 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 292 //
whismanoid 53:3d5a3d241a5e 293 //#include "max32625mbed.h" // ?
whismanoid 53:3d5a3d241a5e 294 //MAX32625MBED mbed(MAX32625MBED::VIO_3V3); // ?
whismanoid 53:3d5a3d241a5e 295 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 53:3d5a3d241a5e 296 // MAX32630FTHR board supports only internal VREF = 1.200V at bypass capacitor C15
whismanoid 53:3d5a3d241a5e 297 const float ADC_FULL_SCALE_VOLTAGE = 1.200; // TODO: ADC_FULL_SCALE_VOLTAGE Pico?
whismanoid 53:3d5a3d241a5e 298 // Arduino connector
whismanoid 53:3d5a3d241a5e 299 #ifndef A0
whismanoid 53:3d5a3d241a5e 300 #define A0 AIN_0
whismanoid 53:3d5a3d241a5e 301 #endif
whismanoid 53:3d5a3d241a5e 302 #ifndef A1
whismanoid 53:3d5a3d241a5e 303 #define A1 AIN_1
whismanoid 53:3d5a3d241a5e 304 #endif
whismanoid 53:3d5a3d241a5e 305 #ifndef A2
whismanoid 53:3d5a3d241a5e 306 #define A2 AIN_2
whismanoid 53:3d5a3d241a5e 307 #endif
whismanoid 53:3d5a3d241a5e 308 #ifndef A3
whismanoid 53:3d5a3d241a5e 309 #define A3 AIN_3
whismanoid 53:3d5a3d241a5e 310 #endif
whismanoid 53:3d5a3d241a5e 311 #ifndef D0
whismanoid 53:3d5a3d241a5e 312 #define D0 P0_0
whismanoid 53:3d5a3d241a5e 313 #endif
whismanoid 53:3d5a3d241a5e 314 #ifndef D1
whismanoid 53:3d5a3d241a5e 315 #define D1 P0_1
whismanoid 53:3d5a3d241a5e 316 #endif
whismanoid 53:3d5a3d241a5e 317 #ifndef D2
whismanoid 53:3d5a3d241a5e 318 #define D2 P0_2
whismanoid 53:3d5a3d241a5e 319 #endif
whismanoid 53:3d5a3d241a5e 320 #ifndef D3
whismanoid 53:3d5a3d241a5e 321 #define D3 P0_3
whismanoid 53:3d5a3d241a5e 322 #endif
whismanoid 53:3d5a3d241a5e 323 #ifndef D4
whismanoid 53:3d5a3d241a5e 324 #define D4 P0_4
whismanoid 53:3d5a3d241a5e 325 #endif
whismanoid 53:3d5a3d241a5e 326 #ifndef D5
whismanoid 53:3d5a3d241a5e 327 #define D5 P0_5
whismanoid 53:3d5a3d241a5e 328 #endif
whismanoid 53:3d5a3d241a5e 329 #ifndef D6
whismanoid 53:3d5a3d241a5e 330 #define D6 P0_6
whismanoid 53:3d5a3d241a5e 331 #endif
whismanoid 53:3d5a3d241a5e 332 #ifndef D7
whismanoid 53:3d5a3d241a5e 333 #define D7 P0_7
whismanoid 53:3d5a3d241a5e 334 #endif
whismanoid 53:3d5a3d241a5e 335 #ifndef D8
whismanoid 53:3d5a3d241a5e 336 #define D8 P1_4
whismanoid 53:3d5a3d241a5e 337 #endif
whismanoid 53:3d5a3d241a5e 338 #ifndef D9
whismanoid 53:3d5a3d241a5e 339 #define D9 P1_5
whismanoid 53:3d5a3d241a5e 340 #endif
whismanoid 53:3d5a3d241a5e 341 #ifndef D10
whismanoid 53:3d5a3d241a5e 342 #define D10 P1_3
whismanoid 53:3d5a3d241a5e 343 #endif
whismanoid 53:3d5a3d241a5e 344 #ifndef D11
whismanoid 53:3d5a3d241a5e 345 #define D11 P1_1
whismanoid 53:3d5a3d241a5e 346 #endif
whismanoid 53:3d5a3d241a5e 347 #ifndef D12
whismanoid 53:3d5a3d241a5e 348 #define D12 P1_2
whismanoid 53:3d5a3d241a5e 349 #endif
whismanoid 53:3d5a3d241a5e 350 #ifndef D13
whismanoid 53:3d5a3d241a5e 351 #define D13 P1_0
whismanoid 53:3d5a3d241a5e 352 #endif
whismanoid 53:3d5a3d241a5e 353 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 354 #elif defined(TARGET_MAX32600)
whismanoid 53:3d5a3d241a5e 355 // target MAX32600
whismanoid 53:3d5a3d241a5e 356 //
whismanoid 53:3d5a3d241a5e 357 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 53:3d5a3d241a5e 358 const float ADC_FULL_SCALE_VOLTAGE = 1.500;
whismanoid 53:3d5a3d241a5e 359 //
whismanoid 53:3d5a3d241a5e 360 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 361 #elif defined(TARGET_MAX32620FTHR)
whismanoid 53:3d5a3d241a5e 362 #warning "TARGET_MAX32620FTHR not previously tested; need to define pins..."
whismanoid 53:3d5a3d241a5e 363 #include "MAX32620FTHR.h"
whismanoid 53:3d5a3d241a5e 364 // Initialize I/O voltages on MAX32620FTHR board
whismanoid 53:3d5a3d241a5e 365 MAX32620FTHR fthr(MAX32620FTHR::VIO_3V3);
whismanoid 53:3d5a3d241a5e 366 //#define USE_LEDS 0 ?
whismanoid 53:3d5a3d241a5e 367 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 53:3d5a3d241a5e 368 #warning "TARGET_MAX32620FTHR not previously tested; need to verify ADC_FULL_SCALE_VOLTAGE..."
whismanoid 53:3d5a3d241a5e 369 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 53:3d5a3d241a5e 370 //
whismanoid 53:3d5a3d241a5e 371 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 372 #elif defined(TARGET_MAX32625PICO)
whismanoid 53:3d5a3d241a5e 373 #warning "TARGET_MAX32625PICO not previously tested; need to define pins..."
whismanoid 53:3d5a3d241a5e 374 //#define USE_LEDS 0 ?
whismanoid 53:3d5a3d241a5e 375 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 1
whismanoid 53:3d5a3d241a5e 376 #warning "TARGET_MAX32625PICO not previously tested; need to verify ADC_FULL_SCALE_VOLTAGE..."
whismanoid 53:3d5a3d241a5e 377 const float ADC_FULL_SCALE_VOLTAGE = 1.200;
whismanoid 53:3d5a3d241a5e 378 //
whismanoid 53:3d5a3d241a5e 379 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 380 #elif defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 53:3d5a3d241a5e 381 // TODO1: target NUCLEO_F446RE
whismanoid 53:3d5a3d241a5e 382 //
whismanoid 53:3d5a3d241a5e 383 // USER_BUTTON PC13
whismanoid 53:3d5a3d241a5e 384 // LED1 is shared with SPI_SCK on NUCLEO_F446RE PA_5, so don't use LED1.
whismanoid 53:3d5a3d241a5e 385 #define USE_LEDS 0
whismanoid 53:3d5a3d241a5e 386 // SPI spi(SPI_MOSI, SPI_MISO, SPI_SCK);
whismanoid 53:3d5a3d241a5e 387 // Serial serial(SERIAL_TX, SERIAL_RX);
whismanoid 53:3d5a3d241a5e 388 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 53:3d5a3d241a5e 389 const float ADC_FULL_SCALE_VOLTAGE = 3.300; // TODO: ADC_FULL_SCALE_VOLTAGE Pico?
whismanoid 53:3d5a3d241a5e 390 //
whismanoid 53:3d5a3d241a5e 391 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 392 #elif defined(TARGET_LPC1768)
whismanoid 53:3d5a3d241a5e 393 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 394 // TARGET=LPC1768 ARM Cortex-M3 100 MHz 512kB flash 64kB SRAM
whismanoid 53:3d5a3d241a5e 395 // +-------------[microUSB]-------------+
whismanoid 53:3d5a3d241a5e 396 // ______ | [ ] GND +3.3V VOUT [ ] | ______
whismanoid 53:3d5a3d241a5e 397 // ______ | [ ] 4.5V<VIN<9.0V +5.0V VU [ ] | ______
whismanoid 53:3d5a3d241a5e 398 // ______ | [ ] VB USB.IF- [ ] | ______
whismanoid 53:3d5a3d241a5e 399 // ______ | [ ] nR USB.IF+ [ ] | ______
whismanoid 53:3d5a3d241a5e 400 // digitalInOut0 | [ ] p5 MOSI ETHERNET.RD- [ ] | ______
whismanoid 53:3d5a3d241a5e 401 // digitalInOut1 | [ ] p6 MISO ETHERNET.RD+ [ ] | ______
whismanoid 53:3d5a3d241a5e 402 // digitalInOut2 | [ ] p7 SCLK ETHERNET.TD- [ ] | ______
whismanoid 53:3d5a3d241a5e 403 // digitalInOut3 | [ ] p8 ETHERNET.TD+ [ ] | ______
whismanoid 53:3d5a3d241a5e 404 // digitalInOut4 | [ ] p9 TX SDA USB.D- [ ] | ______
whismanoid 53:3d5a3d241a5e 405 // digitalInOut5 | [ ] p10 RX SCL USB.D+ [ ] | ______
whismanoid 53:3d5a3d241a5e 406 // digitalInOut6 | [ ] p11 MOSI CAN-RD p30 [ ] | digitalInOut13
whismanoid 53:3d5a3d241a5e 407 // digitalInOut7 | [ ] p12 MISO CAN-TD p29 [ ] | digitalInOut12
whismanoid 53:3d5a3d241a5e 408 // digitalInOut8 | [ ] p13 TX SCLK SDA TX p28 [ ] | digitalInOut11
whismanoid 53:3d5a3d241a5e 409 // digitalInOut9 | [ ] p14 RX SCL RX p27 [ ] | digitalInOut10
whismanoid 53:3d5a3d241a5e 410 // analogIn0 | [ ] p15 AIN0 3.3Vfs PWM1 p26 [ ] | pwmDriver1
whismanoid 53:3d5a3d241a5e 411 // analogIn1 | [ ] p16 AIN1 3.3Vfs PWM2 p25 [ ] | pwmDriver2
whismanoid 53:3d5a3d241a5e 412 // analogIn2 | [ ] p17 AIN2 3.3Vfs PWM3 p24 [ ] | pwmDriver3
whismanoid 53:3d5a3d241a5e 413 // analogIn3 | [ ] p18 AIN3 AOUT PWM4 p23 [ ] | pwmDriver4
whismanoid 53:3d5a3d241a5e 414 // analogIn4 | [ ] p19 AIN4 3.3Vfs PWM5 p22 [ ] | pwmDriver5
whismanoid 53:3d5a3d241a5e 415 // analogIn5 | [ ] p20 AIN5 3.3Vfs PWM6 p21 [ ] | pwmDriver6
whismanoid 53:3d5a3d241a5e 416 // +------------------------------------+
whismanoid 53:3d5a3d241a5e 417 // AIN6 = P0.3 = TGT_SBL_RXD?
whismanoid 53:3d5a3d241a5e 418 // AIN7 = P0.2 = TGT_SBL_TXD?
whismanoid 53:3d5a3d241a5e 419 //
whismanoid 53:3d5a3d241a5e 420 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 421 // LPC1768 board uses VREF = 3.300V +A3,3V thru L1 to bypass capacitor C14
whismanoid 53:3d5a3d241a5e 422 #define analogIn4_IS_HIGH_RANGE_OF_analogIn0 0
whismanoid 53:3d5a3d241a5e 423 const float ADC_FULL_SCALE_VOLTAGE = 3.300;
whismanoid 53:3d5a3d241a5e 424 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 53:3d5a3d241a5e 425 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 426 // unknown target
whismanoid 53:3d5a3d241a5e 427 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 428 #endif // target definition
whismanoid 53:3d5a3d241a5e 429
whismanoid 53:3d5a3d241a5e 430
whismanoid 53:3d5a3d241a5e 431 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 432 // Option to dedicate SPI port pins
whismanoid 53:3d5a3d241a5e 433 //
whismanoid 53:3d5a3d241a5e 434 // SPI2_MOSI = P5_1
whismanoid 53:3d5a3d241a5e 435 // SPI2_MISO = P5_2
whismanoid 53:3d5a3d241a5e 436 // SPI2_SCK = P5_0
whismanoid 53:3d5a3d241a5e 437 // On this board I'm using P3_0 as spi_cs
whismanoid 53:3d5a3d241a5e 438 // SPI2_SS = P5_3
whismanoid 53:3d5a3d241a5e 439 // SPI2_SDIO2 = P5_4
whismanoid 53:3d5a3d241a5e 440 // SPI2_SDIO3 = P5_5
whismanoid 53:3d5a3d241a5e 441 // SPI2_SRN = P5_6
whismanoid 53:3d5a3d241a5e 442 //
whismanoid 53:3d5a3d241a5e 443 #ifndef HAS_SPI
whismanoid 53:3d5a3d241a5e 444 #define HAS_SPI 1
whismanoid 53:3d5a3d241a5e 445 #endif
whismanoid 53:3d5a3d241a5e 446 #if HAS_SPI
whismanoid 53:3d5a3d241a5e 447 #define SPI_MODE0 0
whismanoid 53:3d5a3d241a5e 448 #define SPI_MODE1 1
whismanoid 53:3d5a3d241a5e 449 #define SPI_MODE2 2
whismanoid 53:3d5a3d241a5e 450 #define SPI_MODE3 3
whismanoid 53:3d5a3d241a5e 451 //
whismanoid 53:3d5a3d241a5e 452 #if defined(TARGET_MAX32630)
whismanoid 53:3d5a3d241a5e 453 // Before setting global variables g_SPI_SCLK_Hz and g_SPI_dataMode,
whismanoid 53:3d5a3d241a5e 454 // workaround for TARGET_MAX32630 SPI_MODE2 SPI_MODE3 problem (issue #30)
whismanoid 53:3d5a3d241a5e 455 #warning "MAX32630 SPI workaround..."
whismanoid 53:3d5a3d241a5e 456 // replace SPI_MODE2 (CPOL=1,CPHA=0) with SPI_MODE1 (CPOL=0,CPHA=1) Falling Edge stable
whismanoid 53:3d5a3d241a5e 457 // replace SPI_MODE3 (CPOL=1,CPHA=1) with SPI_MODE0 (CPOL=0,CPHA=0) Rising Edge stable
whismanoid 53:3d5a3d241a5e 458 # if ((SPI_dataMode) == (SPI_MODE2))
whismanoid 53:3d5a3d241a5e 459 #warning "MAX32630 SPI_MODE2 workaround, changing SPI_dataMode to SPI_MODE1..."
whismanoid 53:3d5a3d241a5e 460 // SPI_dataMode SPI_MODE2 // CPOL=1,CPHA=0: Falling Edge stable; SCLK idle High
whismanoid 53:3d5a3d241a5e 461 # undef SPI_dataMode
whismanoid 53:3d5a3d241a5e 462 # define SPI_dataMode SPI_MODE1 // CPOL=0,CPHA=1: Falling Edge stable; SCLK idle Low
whismanoid 53:3d5a3d241a5e 463 # elif ((SPI_dataMode) == (SPI_MODE3))
whismanoid 53:3d5a3d241a5e 464 #warning "MAX32630 SPI_MODE3 workaround, changing SPI_dataMode to SPI_MODE0..."
whismanoid 53:3d5a3d241a5e 465 // SPI_dataMode SPI_MODE3 // CPOL=1,CPHA=1: Rising Edge stable; SCLK idle High
whismanoid 53:3d5a3d241a5e 466 # undef SPI_dataMode
whismanoid 53:3d5a3d241a5e 467 # define SPI_dataMode SPI_MODE0 // CPOL=0,CPHA=0: Rising Edge stable; SCLK idle Low
whismanoid 53:3d5a3d241a5e 468 # endif // workaround for TARGET_MAX32630 SPI_MODE2 SPI_MODE3 problem
whismanoid 53:3d5a3d241a5e 469 // workaround for TARGET_MAX32630 SPI_MODE2 SPI_MODE3 problem (issue #30)
whismanoid 53:3d5a3d241a5e 470 // limit SPI SCLK speed to 6MHz or less
whismanoid 53:3d5a3d241a5e 471 # if ((SPI_SCLK_Hz) > (6000000))
whismanoid 53:3d5a3d241a5e 472 #warning "MAX32630 SPI speed workaround, changing SPI_SCLK_Hz to 6000000 or 6MHz..."
whismanoid 53:3d5a3d241a5e 473 # undef SPI_SCLK_Hz
whismanoid 53:3d5a3d241a5e 474 # define SPI_SCLK_Hz 6000000 // 6MHz
whismanoid 53:3d5a3d241a5e 475 # endif
whismanoid 53:3d5a3d241a5e 476 #endif
whismanoid 53:3d5a3d241a5e 477 //
whismanoid 53:3d5a3d241a5e 478 uint32_t g_SPI_SCLK_Hz = 6000000; // TODO: missing definition of SPI_SCLK_Hz;
whismanoid 53:3d5a3d241a5e 479 // TODO1: validate g_SPI_SCLK_Hz against system clock frequency SystemCoreClock F_CPU
whismanoid 53:3d5a3d241a5e 480 #if defined(TARGET_NUCLEO_F446RE) || defined(TARGET_NUCLEO_F401RE)
whismanoid 53:3d5a3d241a5e 481 // Nucleo SPI frequency isn't working quite as expected...
whismanoid 53:3d5a3d241a5e 482 // Looks like STMF4 has an spi clock prescaler (2,4,8,16,32,64,128,256)
whismanoid 53:3d5a3d241a5e 483 // so 180MHz->[90.0, 45.0, 22.5, 11.25, 5.625, 2.8125, 1.40625, 0.703125]
whismanoid 53:3d5a3d241a5e 484 // %SC SCLK=1MHz sets spi frequency 703.125kHz
whismanoid 53:3d5a3d241a5e 485 // %SC SCLK=2MHz sets spi frequency 1.40625MHz
whismanoid 53:3d5a3d241a5e 486 // %SC SCLK=3MHz sets spi frequency 2.8125MHz
whismanoid 53:3d5a3d241a5e 487 // %SC SCLK=6MHz sets spi frequency 5.625MHz
whismanoid 53:3d5a3d241a5e 488 // %SC SCLK=12MHz sets spi frequency 11.25MHz
whismanoid 53:3d5a3d241a5e 489 // %SC SCLK=23MHz sets spi frequency 22.5MHz
whismanoid 53:3d5a3d241a5e 490 // %SC SCLK=45MHz sets spi frequency 45.0MHz
whismanoid 53:3d5a3d241a5e 491 // Don't know why I can't reach spi frequency 90.0MHz, but ok whatever.
whismanoid 53:3d5a3d241a5e 492 const uint32_t limit_min_SPI_SCLK_divisor = 2;
whismanoid 53:3d5a3d241a5e 493 const uint32_t limit_max_SPI_SCLK_divisor = 256;
whismanoid 53:3d5a3d241a5e 494 // not really a divisor, just a powers-of-two prescaler with no intermediate divisors.
whismanoid 53:3d5a3d241a5e 495 #else
whismanoid 53:3d5a3d241a5e 496 const uint32_t limit_min_SPI_SCLK_divisor = 2;
whismanoid 53:3d5a3d241a5e 497 const uint32_t limit_max_SPI_SCLK_divisor = 8191;
whismanoid 53:3d5a3d241a5e 498 #endif
whismanoid 53:3d5a3d241a5e 499 const uint32_t limit_max_SPI_SCLK_Hz = (SystemCoreClock / limit_min_SPI_SCLK_divisor); // F_CPU / 2; // 8MHz / 2 = 4MHz
whismanoid 53:3d5a3d241a5e 500 const uint32_t limit_min_SPI_SCLK_Hz = (SystemCoreClock / limit_max_SPI_SCLK_divisor); // F_CPU / 128; // 8MHz / 128 = 62.5kHz
whismanoid 53:3d5a3d241a5e 501 //
whismanoid 53:3d5a3d241a5e 502 uint8_t g_SPI_dataMode = SPI_MODE0; // TODO: missing definition SPI_dataMode;
whismanoid 53:3d5a3d241a5e 503 uint8_t g_SPI_cs_state = 1;
whismanoid 53:3d5a3d241a5e 504 //
whismanoid 53:3d5a3d241a5e 505 #endif
whismanoid 53:3d5a3d241a5e 506
whismanoid 53:3d5a3d241a5e 507
whismanoid 53:3d5a3d241a5e 508
whismanoid 53:3d5a3d241a5e 509 // uncrustify-0.66.1 *INDENT-OFF*
whismanoid 53:3d5a3d241a5e 510 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 511 // Declare the AnalogIn driver
whismanoid 53:3d5a3d241a5e 512 // Optional analogIn support. If there is only one it should be analogIn1.
whismanoid 53:3d5a3d241a5e 513 // A) analog input
whismanoid 53:3d5a3d241a5e 514 #if defined(TARGET_MAX32630)
whismanoid 53:3d5a3d241a5e 515 #define HAS_analogIn0 1
whismanoid 53:3d5a3d241a5e 516 #define HAS_analogIn1 1
whismanoid 53:3d5a3d241a5e 517 #define HAS_analogIn2 1
whismanoid 53:3d5a3d241a5e 518 #define HAS_analogIn3 1
whismanoid 53:3d5a3d241a5e 519 #define HAS_analogIn4 1
whismanoid 53:3d5a3d241a5e 520 #define HAS_analogIn5 1
whismanoid 53:3d5a3d241a5e 521 #define HAS_analogIn6 1
whismanoid 53:3d5a3d241a5e 522 #define HAS_analogIn7 1
whismanoid 53:3d5a3d241a5e 523 #define HAS_analogIn8 1
whismanoid 53:3d5a3d241a5e 524 #define HAS_analogIn9 1
whismanoid 53:3d5a3d241a5e 525 // #define HAS_analogIn10 0
whismanoid 53:3d5a3d241a5e 526 // #define HAS_analogIn11 0
whismanoid 53:3d5a3d241a5e 527 // #define HAS_analogIn12 0
whismanoid 53:3d5a3d241a5e 528 // #define HAS_analogIn13 0
whismanoid 53:3d5a3d241a5e 529 // #define HAS_analogIn14 0
whismanoid 53:3d5a3d241a5e 530 // #define HAS_analogIn15 0
whismanoid 53:3d5a3d241a5e 531 #if HAS_analogIn0
whismanoid 53:3d5a3d241a5e 532 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 533 #endif
whismanoid 53:3d5a3d241a5e 534 #if HAS_analogIn1
whismanoid 53:3d5a3d241a5e 535 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 536 #endif
whismanoid 53:3d5a3d241a5e 537 #if HAS_analogIn2
whismanoid 53:3d5a3d241a5e 538 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 539 #endif
whismanoid 53:3d5a3d241a5e 540 #if HAS_analogIn3
whismanoid 53:3d5a3d241a5e 541 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 542 #endif
whismanoid 53:3d5a3d241a5e 543 #if HAS_analogIn4
whismanoid 53:3d5a3d241a5e 544 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 545 #endif
whismanoid 53:3d5a3d241a5e 546 #if HAS_analogIn5
whismanoid 53:3d5a3d241a5e 547 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 548 #endif
whismanoid 53:3d5a3d241a5e 549 #if HAS_analogIn6
whismanoid 53:3d5a3d241a5e 550 AnalogIn analogIn6(AIN_6); // TARGET_MAX32630 AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 551 #endif
whismanoid 53:3d5a3d241a5e 552 #if HAS_analogIn7
whismanoid 53:3d5a3d241a5e 553 AnalogIn analogIn7(AIN_7); // TARGET_MAX32630 AIN_7 = VDD18 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 554 #endif
whismanoid 53:3d5a3d241a5e 555 #if HAS_analogIn8
whismanoid 53:3d5a3d241a5e 556 AnalogIn analogIn8(AIN_8); // TARGET_MAX32630 AIN_8 = VDD12 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 557 #endif
whismanoid 53:3d5a3d241a5e 558 #if HAS_analogIn9
whismanoid 53:3d5a3d241a5e 559 AnalogIn analogIn9(AIN_9); // TARGET_MAX32630 AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 53:3d5a3d241a5e 560 #endif
whismanoid 53:3d5a3d241a5e 561 #if HAS_analogIn10
whismanoid 53:3d5a3d241a5e 562 AnalogIn analogIn10(____); // TARGET_MAX32630 AIN_10 = x undefined?
whismanoid 53:3d5a3d241a5e 563 #endif
whismanoid 53:3d5a3d241a5e 564 #if HAS_analogIn11
whismanoid 53:3d5a3d241a5e 565 AnalogIn analogIn11(____); // TARGET_MAX32630 AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 566 #endif
whismanoid 53:3d5a3d241a5e 567 #if HAS_analogIn12
whismanoid 53:3d5a3d241a5e 568 AnalogIn analogIn12(____); // TARGET_MAX32630 AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 569 #endif
whismanoid 53:3d5a3d241a5e 570 #if HAS_analogIn13
whismanoid 53:3d5a3d241a5e 571 AnalogIn analogIn13(____);
whismanoid 53:3d5a3d241a5e 572 #endif
whismanoid 53:3d5a3d241a5e 573 #if HAS_analogIn14
whismanoid 53:3d5a3d241a5e 574 AnalogIn analogIn14(____);
whismanoid 53:3d5a3d241a5e 575 #endif
whismanoid 53:3d5a3d241a5e 576 #if HAS_analogIn15
whismanoid 53:3d5a3d241a5e 577 AnalogIn analogIn15(____);
whismanoid 53:3d5a3d241a5e 578 #endif
whismanoid 53:3d5a3d241a5e 579 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 580 #elif defined(TARGET_MAX32625MBED)
whismanoid 53:3d5a3d241a5e 581 #define HAS_analogIn0 1
whismanoid 53:3d5a3d241a5e 582 #define HAS_analogIn1 1
whismanoid 53:3d5a3d241a5e 583 #define HAS_analogIn2 1
whismanoid 53:3d5a3d241a5e 584 #define HAS_analogIn3 1
whismanoid 53:3d5a3d241a5e 585 #define HAS_analogIn4 1
whismanoid 53:3d5a3d241a5e 586 #define HAS_analogIn5 1
whismanoid 53:3d5a3d241a5e 587 #if HAS_analogIn0
whismanoid 53:3d5a3d241a5e 588 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 589 #endif
whismanoid 53:3d5a3d241a5e 590 #if HAS_analogIn1
whismanoid 53:3d5a3d241a5e 591 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 592 #endif
whismanoid 53:3d5a3d241a5e 593 #if HAS_analogIn2
whismanoid 53:3d5a3d241a5e 594 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 595 #endif
whismanoid 53:3d5a3d241a5e 596 #if HAS_analogIn3
whismanoid 53:3d5a3d241a5e 597 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 598 #endif
whismanoid 53:3d5a3d241a5e 599 #if HAS_analogIn4
whismanoid 53:3d5a3d241a5e 600 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 601 #endif
whismanoid 53:3d5a3d241a5e 602 #if HAS_analogIn5
whismanoid 53:3d5a3d241a5e 603 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 604 #endif
whismanoid 53:3d5a3d241a5e 605 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 606 #elif defined(TARGET_MAX32620FTHR)
whismanoid 53:3d5a3d241a5e 607 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 53:3d5a3d241a5e 608 #define HAS_analogIn0 1
whismanoid 53:3d5a3d241a5e 609 #define HAS_analogIn1 1
whismanoid 53:3d5a3d241a5e 610 #define HAS_analogIn2 1
whismanoid 53:3d5a3d241a5e 611 #define HAS_analogIn3 1
whismanoid 53:3d5a3d241a5e 612 #define HAS_analogIn4 1
whismanoid 53:3d5a3d241a5e 613 #define HAS_analogIn5 1
whismanoid 53:3d5a3d241a5e 614 #define HAS_analogIn6 1
whismanoid 53:3d5a3d241a5e 615 #define HAS_analogIn7 1
whismanoid 53:3d5a3d241a5e 616 #define HAS_analogIn8 1
whismanoid 53:3d5a3d241a5e 617 #define HAS_analogIn9 1
whismanoid 53:3d5a3d241a5e 618 // #define HAS_analogIn10 0
whismanoid 53:3d5a3d241a5e 619 // #define HAS_analogIn11 0
whismanoid 53:3d5a3d241a5e 620 // #define HAS_analogIn12 0
whismanoid 53:3d5a3d241a5e 621 // #define HAS_analogIn13 0
whismanoid 53:3d5a3d241a5e 622 // #define HAS_analogIn14 0
whismanoid 53:3d5a3d241a5e 623 // #define HAS_analogIn15 0
whismanoid 53:3d5a3d241a5e 624 #if HAS_analogIn0
whismanoid 53:3d5a3d241a5e 625 AnalogIn analogIn0(AIN_0); // TARGET_MAX32620FTHR J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 626 #endif
whismanoid 53:3d5a3d241a5e 627 #if HAS_analogIn1
whismanoid 53:3d5a3d241a5e 628 AnalogIn analogIn1(AIN_1); // TARGET_MAX32620FTHR J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 629 #endif
whismanoid 53:3d5a3d241a5e 630 #if HAS_analogIn2
whismanoid 53:3d5a3d241a5e 631 AnalogIn analogIn2(AIN_2); // TARGET_MAX32620FTHR J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 632 #endif
whismanoid 53:3d5a3d241a5e 633 #if HAS_analogIn3
whismanoid 53:3d5a3d241a5e 634 AnalogIn analogIn3(AIN_3); // TARGET_MAX32620FTHR J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 635 #endif
whismanoid 53:3d5a3d241a5e 636 #if HAS_analogIn4
whismanoid 53:3d5a3d241a5e 637 AnalogIn analogIn4(AIN_4); // TARGET_MAX32620FTHR J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 638 #endif
whismanoid 53:3d5a3d241a5e 639 #if HAS_analogIn5
whismanoid 53:3d5a3d241a5e 640 AnalogIn analogIn5(AIN_5); // TARGET_MAX32620FTHR J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 641 #endif
whismanoid 53:3d5a3d241a5e 642 #if HAS_analogIn6
whismanoid 53:3d5a3d241a5e 643 AnalogIn analogIn6(AIN_6); // TARGET_MAX32620FTHR AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 644 #endif
whismanoid 53:3d5a3d241a5e 645 #if HAS_analogIn7
whismanoid 53:3d5a3d241a5e 646 AnalogIn analogIn7(AIN_7); // TARGET_MAX32620FTHR AIN_7 = VDD18 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 647 #endif
whismanoid 53:3d5a3d241a5e 648 #if HAS_analogIn8
whismanoid 53:3d5a3d241a5e 649 AnalogIn analogIn8(AIN_8); // TARGET_MAX32620FTHR AIN_8 = VDD12 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 650 #endif
whismanoid 53:3d5a3d241a5e 651 #if HAS_analogIn9
whismanoid 53:3d5a3d241a5e 652 AnalogIn analogIn9(AIN_9); // TARGET_MAX32620FTHR AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 53:3d5a3d241a5e 653 #endif
whismanoid 53:3d5a3d241a5e 654 #if HAS_analogIn10
whismanoid 53:3d5a3d241a5e 655 AnalogIn analogIn10(____); // TARGET_MAX32620FTHR AIN_10 = x undefined?
whismanoid 53:3d5a3d241a5e 656 #endif
whismanoid 53:3d5a3d241a5e 657 #if HAS_analogIn11
whismanoid 53:3d5a3d241a5e 658 AnalogIn analogIn11(____); // TARGET_MAX32620FTHR AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 659 #endif
whismanoid 53:3d5a3d241a5e 660 #if HAS_analogIn12
whismanoid 53:3d5a3d241a5e 661 AnalogIn analogIn12(____); // TARGET_MAX32620FTHR AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 662 #endif
whismanoid 53:3d5a3d241a5e 663 #if HAS_analogIn13
whismanoid 53:3d5a3d241a5e 664 AnalogIn analogIn13(____);
whismanoid 53:3d5a3d241a5e 665 #endif
whismanoid 53:3d5a3d241a5e 666 #if HAS_analogIn14
whismanoid 53:3d5a3d241a5e 667 AnalogIn analogIn14(____);
whismanoid 53:3d5a3d241a5e 668 #endif
whismanoid 53:3d5a3d241a5e 669 #if HAS_analogIn15
whismanoid 53:3d5a3d241a5e 670 AnalogIn analogIn15(____);
whismanoid 53:3d5a3d241a5e 671 #endif
whismanoid 53:3d5a3d241a5e 672 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 673 #elif defined(TARGET_MAX32625PICO)
whismanoid 53:3d5a3d241a5e 674 #warning "TARGET_MAX32625PICO not previously tested; need to verify analogIn0..."
whismanoid 53:3d5a3d241a5e 675 #define HAS_analogIn0 1
whismanoid 53:3d5a3d241a5e 676 #define HAS_analogIn1 1
whismanoid 53:3d5a3d241a5e 677 #define HAS_analogIn2 1
whismanoid 53:3d5a3d241a5e 678 #define HAS_analogIn3 1
whismanoid 53:3d5a3d241a5e 679 #define HAS_analogIn4 1
whismanoid 53:3d5a3d241a5e 680 #define HAS_analogIn5 1
whismanoid 53:3d5a3d241a5e 681 #if HAS_analogIn0
whismanoid 53:3d5a3d241a5e 682 AnalogIn analogIn0(AIN_0); // TARGET_MAX32630 J1.5 AIN_0 = AIN0 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 683 #endif
whismanoid 53:3d5a3d241a5e 684 #if HAS_analogIn1
whismanoid 53:3d5a3d241a5e 685 AnalogIn analogIn1(AIN_1); // TARGET_MAX32630 J1.6 AIN_1 = AIN1 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 686 #endif
whismanoid 53:3d5a3d241a5e 687 #if HAS_analogIn2
whismanoid 53:3d5a3d241a5e 688 AnalogIn analogIn2(AIN_2); // TARGET_MAX32630 J1.7 AIN_2 = AIN2 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 689 #endif
whismanoid 53:3d5a3d241a5e 690 #if HAS_analogIn3
whismanoid 53:3d5a3d241a5e 691 AnalogIn analogIn3(AIN_3); // TARGET_MAX32630 J1.8 AIN_3 = AIN3 pin fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 692 #endif
whismanoid 53:3d5a3d241a5e 693 #if HAS_analogIn4
whismanoid 53:3d5a3d241a5e 694 AnalogIn analogIn4(AIN_4); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 695 #endif
whismanoid 53:3d5a3d241a5e 696 #if HAS_analogIn5
whismanoid 53:3d5a3d241a5e 697 AnalogIn analogIn5(AIN_5); // TARGET_MAX32630 J1.6 AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 698 #endif
whismanoid 53:3d5a3d241a5e 699 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 700 #elif defined(TARGET_MAX32600)
whismanoid 53:3d5a3d241a5e 701 #define HAS_analogIn0 1
whismanoid 53:3d5a3d241a5e 702 #define HAS_analogIn1 1
whismanoid 53:3d5a3d241a5e 703 #define HAS_analogIn2 1
whismanoid 53:3d5a3d241a5e 704 #define HAS_analogIn3 1
whismanoid 53:3d5a3d241a5e 705 #define HAS_analogIn4 1
whismanoid 53:3d5a3d241a5e 706 #define HAS_analogIn5 1
whismanoid 53:3d5a3d241a5e 707 #if HAS_analogIn0
whismanoid 53:3d5a3d241a5e 708 AnalogIn analogIn0(A0);
whismanoid 53:3d5a3d241a5e 709 #endif
whismanoid 53:3d5a3d241a5e 710 #if HAS_analogIn1
whismanoid 53:3d5a3d241a5e 711 AnalogIn analogIn1(A1);
whismanoid 53:3d5a3d241a5e 712 #endif
whismanoid 53:3d5a3d241a5e 713 #if HAS_analogIn2
whismanoid 53:3d5a3d241a5e 714 AnalogIn analogIn2(A2);
whismanoid 53:3d5a3d241a5e 715 #endif
whismanoid 53:3d5a3d241a5e 716 #if HAS_analogIn3
whismanoid 53:3d5a3d241a5e 717 AnalogIn analogIn3(A3);
whismanoid 53:3d5a3d241a5e 718 #endif
whismanoid 53:3d5a3d241a5e 719 #if HAS_analogIn4
whismanoid 53:3d5a3d241a5e 720 AnalogIn analogIn4(A4);
whismanoid 53:3d5a3d241a5e 721 #endif
whismanoid 53:3d5a3d241a5e 722 #if HAS_analogIn5
whismanoid 53:3d5a3d241a5e 723 AnalogIn analogIn5(A5);
whismanoid 53:3d5a3d241a5e 724 #endif
whismanoid 53:3d5a3d241a5e 725 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 726 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 53:3d5a3d241a5e 727 #define HAS_analogIn0 1
whismanoid 53:3d5a3d241a5e 728 #define HAS_analogIn1 1
whismanoid 53:3d5a3d241a5e 729 #define HAS_analogIn2 1
whismanoid 53:3d5a3d241a5e 730 #define HAS_analogIn3 1
whismanoid 53:3d5a3d241a5e 731 #define HAS_analogIn4 1
whismanoid 53:3d5a3d241a5e 732 #define HAS_analogIn5 1
whismanoid 53:3d5a3d241a5e 733 #if HAS_analogIn0
whismanoid 53:3d5a3d241a5e 734 AnalogIn analogIn0(A0);
whismanoid 53:3d5a3d241a5e 735 #endif
whismanoid 53:3d5a3d241a5e 736 #if HAS_analogIn1
whismanoid 53:3d5a3d241a5e 737 AnalogIn analogIn1(A1);
whismanoid 53:3d5a3d241a5e 738 #endif
whismanoid 53:3d5a3d241a5e 739 #if HAS_analogIn2
whismanoid 53:3d5a3d241a5e 740 AnalogIn analogIn2(A2);
whismanoid 53:3d5a3d241a5e 741 #endif
whismanoid 53:3d5a3d241a5e 742 #if HAS_analogIn3
whismanoid 53:3d5a3d241a5e 743 AnalogIn analogIn3(A3);
whismanoid 53:3d5a3d241a5e 744 #endif
whismanoid 53:3d5a3d241a5e 745 #if HAS_analogIn4
whismanoid 53:3d5a3d241a5e 746 AnalogIn analogIn4(A4);
whismanoid 53:3d5a3d241a5e 747 #endif
whismanoid 53:3d5a3d241a5e 748 #if HAS_analogIn5
whismanoid 53:3d5a3d241a5e 749 AnalogIn analogIn5(A5);
whismanoid 53:3d5a3d241a5e 750 #endif
whismanoid 53:3d5a3d241a5e 751 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 752 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 53:3d5a3d241a5e 753 #define HAS_analogIn0 1
whismanoid 53:3d5a3d241a5e 754 #define HAS_analogIn1 1
whismanoid 53:3d5a3d241a5e 755 #define HAS_analogIn2 1
whismanoid 53:3d5a3d241a5e 756 #define HAS_analogIn3 1
whismanoid 53:3d5a3d241a5e 757 #define HAS_analogIn4 1
whismanoid 53:3d5a3d241a5e 758 #define HAS_analogIn5 1
whismanoid 53:3d5a3d241a5e 759 #if HAS_analogIn0
whismanoid 53:3d5a3d241a5e 760 AnalogIn analogIn0(A0);
whismanoid 53:3d5a3d241a5e 761 #endif
whismanoid 53:3d5a3d241a5e 762 #if HAS_analogIn1
whismanoid 53:3d5a3d241a5e 763 AnalogIn analogIn1(A1);
whismanoid 53:3d5a3d241a5e 764 #endif
whismanoid 53:3d5a3d241a5e 765 #if HAS_analogIn2
whismanoid 53:3d5a3d241a5e 766 AnalogIn analogIn2(A2);
whismanoid 53:3d5a3d241a5e 767 #endif
whismanoid 53:3d5a3d241a5e 768 #if HAS_analogIn3
whismanoid 53:3d5a3d241a5e 769 AnalogIn analogIn3(A3);
whismanoid 53:3d5a3d241a5e 770 #endif
whismanoid 53:3d5a3d241a5e 771 #if HAS_analogIn4
whismanoid 53:3d5a3d241a5e 772 AnalogIn analogIn4(A4);
whismanoid 53:3d5a3d241a5e 773 #endif
whismanoid 53:3d5a3d241a5e 774 #if HAS_analogIn5
whismanoid 53:3d5a3d241a5e 775 AnalogIn analogIn5(A5);
whismanoid 53:3d5a3d241a5e 776 #endif
whismanoid 53:3d5a3d241a5e 777 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 778 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 53:3d5a3d241a5e 779 #elif defined(TARGET_LPC1768)
whismanoid 53:3d5a3d241a5e 780 #define HAS_analogIn0 1
whismanoid 53:3d5a3d241a5e 781 #define HAS_analogIn1 1
whismanoid 53:3d5a3d241a5e 782 #define HAS_analogIn2 1
whismanoid 53:3d5a3d241a5e 783 #define HAS_analogIn3 1
whismanoid 53:3d5a3d241a5e 784 #define HAS_analogIn4 1
whismanoid 53:3d5a3d241a5e 785 #define HAS_analogIn5 1
whismanoid 53:3d5a3d241a5e 786 // #define HAS_analogIn6 1
whismanoid 53:3d5a3d241a5e 787 // #define HAS_analogIn7 1
whismanoid 53:3d5a3d241a5e 788 // #define HAS_analogIn8 1
whismanoid 53:3d5a3d241a5e 789 // #define HAS_analogIn9 1
whismanoid 53:3d5a3d241a5e 790 // #define HAS_analogIn10 1
whismanoid 53:3d5a3d241a5e 791 // #define HAS_analogIn11 1
whismanoid 53:3d5a3d241a5e 792 // #define HAS_analogIn12 1
whismanoid 53:3d5a3d241a5e 793 // #define HAS_analogIn13 1
whismanoid 53:3d5a3d241a5e 794 // #define HAS_analogIn14 1
whismanoid 53:3d5a3d241a5e 795 // #define HAS_analogIn15 1
whismanoid 53:3d5a3d241a5e 796 #if HAS_analogIn0
whismanoid 53:3d5a3d241a5e 797 AnalogIn analogIn0(p15); // TARGET_LPC1768 P0.23/AD0.0/I2SRX_CLK/CAP3.0
whismanoid 53:3d5a3d241a5e 798 #endif
whismanoid 53:3d5a3d241a5e 799 #if HAS_analogIn1
whismanoid 53:3d5a3d241a5e 800 AnalogIn analogIn1(p16); // TARGET_LPC1768 P0.24/AD0.1/I2SRX_WS/CAP3.1
whismanoid 53:3d5a3d241a5e 801 #endif
whismanoid 53:3d5a3d241a5e 802 #if HAS_analogIn2
whismanoid 53:3d5a3d241a5e 803 AnalogIn analogIn2(p17); // TARGET_LPC1768 P0.25/AD0.2/I2SRX_SDA/TXD3
whismanoid 53:3d5a3d241a5e 804 #endif
whismanoid 53:3d5a3d241a5e 805 #if HAS_analogIn3
whismanoid 53:3d5a3d241a5e 806 AnalogIn analogIn3(p18); // TARGET_LPC1768 P0.26/AD0.3/AOUT/RXD3
whismanoid 53:3d5a3d241a5e 807 #endif
whismanoid 53:3d5a3d241a5e 808 #if HAS_analogIn4
whismanoid 53:3d5a3d241a5e 809 AnalogIn analogIn4(p19); // TARGET_LPC1768 P1.30/VBUS/AD0.4
whismanoid 53:3d5a3d241a5e 810 #endif
whismanoid 53:3d5a3d241a5e 811 #if HAS_analogIn5
whismanoid 53:3d5a3d241a5e 812 AnalogIn analogIn5(p20); // TARGET_LPC1768 P1.31/SCK1/AD0.5
whismanoid 53:3d5a3d241a5e 813 #endif
whismanoid 53:3d5a3d241a5e 814 #if HAS_analogIn6
whismanoid 53:3d5a3d241a5e 815 AnalogIn analogIn6(____);
whismanoid 53:3d5a3d241a5e 816 #endif
whismanoid 53:3d5a3d241a5e 817 #if HAS_analogIn7
whismanoid 53:3d5a3d241a5e 818 AnalogIn analogIn7(____);
whismanoid 53:3d5a3d241a5e 819 #endif
whismanoid 53:3d5a3d241a5e 820 #if HAS_analogIn8
whismanoid 53:3d5a3d241a5e 821 AnalogIn analogIn8(____);
whismanoid 53:3d5a3d241a5e 822 #endif
whismanoid 53:3d5a3d241a5e 823 #if HAS_analogIn9
whismanoid 53:3d5a3d241a5e 824 AnalogIn analogIn9(____);
whismanoid 53:3d5a3d241a5e 825 #endif
whismanoid 53:3d5a3d241a5e 826 #if HAS_analogIn10
whismanoid 53:3d5a3d241a5e 827 AnalogIn analogIn10(____);
whismanoid 53:3d5a3d241a5e 828 #endif
whismanoid 53:3d5a3d241a5e 829 #if HAS_analogIn11
whismanoid 53:3d5a3d241a5e 830 AnalogIn analogIn11(____);
whismanoid 53:3d5a3d241a5e 831 #endif
whismanoid 53:3d5a3d241a5e 832 #if HAS_analogIn12
whismanoid 53:3d5a3d241a5e 833 AnalogIn analogIn12(____);
whismanoid 53:3d5a3d241a5e 834 #endif
whismanoid 53:3d5a3d241a5e 835 #if HAS_analogIn13
whismanoid 53:3d5a3d241a5e 836 AnalogIn analogIn13(____);
whismanoid 53:3d5a3d241a5e 837 #endif
whismanoid 53:3d5a3d241a5e 838 #if HAS_analogIn14
whismanoid 53:3d5a3d241a5e 839 AnalogIn analogIn14(____);
whismanoid 53:3d5a3d241a5e 840 #endif
whismanoid 53:3d5a3d241a5e 841 #if HAS_analogIn15
whismanoid 53:3d5a3d241a5e 842 AnalogIn analogIn15(____);
whismanoid 53:3d5a3d241a5e 843 #endif
whismanoid 53:3d5a3d241a5e 844 #else
whismanoid 53:3d5a3d241a5e 845 // unknown target
whismanoid 53:3d5a3d241a5e 846 #endif
whismanoid 53:3d5a3d241a5e 847 // uncrustify-0.66.1 *INDENT-ON*
whismanoid 53:3d5a3d241a5e 848 #if HAS_analogIn0 || HAS_analogIn1 \
whismanoid 53:3d5a3d241a5e 849 || HAS_analogIn2 || HAS_analogIn3 \
whismanoid 53:3d5a3d241a5e 850 || HAS_analogIn4 || HAS_analogIn5 \
whismanoid 53:3d5a3d241a5e 851 || HAS_analogIn6 || HAS_analogIn7 \
whismanoid 53:3d5a3d241a5e 852 || HAS_analogIn8 || HAS_analogIn9 \
whismanoid 53:3d5a3d241a5e 853 || HAS_analogIn10 || HAS_analogIn11 \
whismanoid 53:3d5a3d241a5e 854 || HAS_analogIn12 || HAS_analogIn13 \
whismanoid 53:3d5a3d241a5e 855 || HAS_analogIn14 || HAS_analogIn15
whismanoid 53:3d5a3d241a5e 856 #define HAS_analogIns 1
whismanoid 53:3d5a3d241a5e 857 #endif
whismanoid 53:3d5a3d241a5e 858
whismanoid 53:3d5a3d241a5e 859
whismanoid 53:3d5a3d241a5e 860
whismanoid 53:3d5a3d241a5e 861 // AnalogIn pin resource: search index
whismanoid 53:3d5a3d241a5e 862 #if HAS_analogIns
whismanoid 53:3d5a3d241a5e 863 AnalogIn& find_analogInPin(int cPinIndex)
whismanoid 53:3d5a3d241a5e 864 {
whismanoid 53:3d5a3d241a5e 865 switch (cPinIndex)
whismanoid 53:3d5a3d241a5e 866 {
whismanoid 53:3d5a3d241a5e 867 default: // default to the first defined analogIn pin
whismanoid 53:3d5a3d241a5e 868 #if HAS_analogIn0
whismanoid 53:3d5a3d241a5e 869 case '0': case 0x00: return analogIn0;
whismanoid 53:3d5a3d241a5e 870 #endif
whismanoid 53:3d5a3d241a5e 871 #if HAS_analogIn1
whismanoid 53:3d5a3d241a5e 872 case '1': case 0x01: return analogIn1;
whismanoid 53:3d5a3d241a5e 873 #endif
whismanoid 53:3d5a3d241a5e 874 #if HAS_analogIn2
whismanoid 53:3d5a3d241a5e 875 case '2': case 0x02: return analogIn2;
whismanoid 53:3d5a3d241a5e 876 #endif
whismanoid 53:3d5a3d241a5e 877 #if HAS_analogIn3
whismanoid 53:3d5a3d241a5e 878 case '3': case 0x03: return analogIn3;
whismanoid 53:3d5a3d241a5e 879 #endif
whismanoid 53:3d5a3d241a5e 880 #if HAS_analogIn4
whismanoid 53:3d5a3d241a5e 881 case '4': case 0x04: return analogIn4;
whismanoid 53:3d5a3d241a5e 882 #endif
whismanoid 53:3d5a3d241a5e 883 #if HAS_analogIn5
whismanoid 53:3d5a3d241a5e 884 case '5': case 0x05: return analogIn5;
whismanoid 53:3d5a3d241a5e 885 #endif
whismanoid 53:3d5a3d241a5e 886 #if HAS_analogIn6
whismanoid 53:3d5a3d241a5e 887 case '6': case 0x06: return analogIn6;
whismanoid 53:3d5a3d241a5e 888 #endif
whismanoid 53:3d5a3d241a5e 889 #if HAS_analogIn7
whismanoid 53:3d5a3d241a5e 890 case '7': case 0x07: return analogIn7;
whismanoid 53:3d5a3d241a5e 891 #endif
whismanoid 53:3d5a3d241a5e 892 #if HAS_analogIn8
whismanoid 53:3d5a3d241a5e 893 case '8': case 0x08: return analogIn8;
whismanoid 53:3d5a3d241a5e 894 #endif
whismanoid 53:3d5a3d241a5e 895 #if HAS_analogIn9
whismanoid 53:3d5a3d241a5e 896 case '9': case 0x09: return analogIn9;
whismanoid 53:3d5a3d241a5e 897 #endif
whismanoid 53:3d5a3d241a5e 898 #if HAS_analogIn10
whismanoid 53:3d5a3d241a5e 899 case 'a': case 0x0a: return analogIn10;
whismanoid 53:3d5a3d241a5e 900 #endif
whismanoid 53:3d5a3d241a5e 901 #if HAS_analogIn11
whismanoid 53:3d5a3d241a5e 902 case 'b': case 0x0b: return analogIn11;
whismanoid 53:3d5a3d241a5e 903 #endif
whismanoid 53:3d5a3d241a5e 904 #if HAS_analogIn12
whismanoid 53:3d5a3d241a5e 905 case 'c': case 0x0c: return analogIn12;
whismanoid 53:3d5a3d241a5e 906 #endif
whismanoid 53:3d5a3d241a5e 907 #if HAS_analogIn13
whismanoid 53:3d5a3d241a5e 908 case 'd': case 0x0d: return analogIn13;
whismanoid 53:3d5a3d241a5e 909 #endif
whismanoid 53:3d5a3d241a5e 910 #if HAS_analogIn14
whismanoid 53:3d5a3d241a5e 911 case 'e': case 0x0e: return analogIn14;
whismanoid 53:3d5a3d241a5e 912 #endif
whismanoid 53:3d5a3d241a5e 913 #if HAS_analogIn15
whismanoid 53:3d5a3d241a5e 914 case 'f': case 0x0f: return analogIn15;
whismanoid 53:3d5a3d241a5e 915 #endif
whismanoid 53:3d5a3d241a5e 916 }
whismanoid 53:3d5a3d241a5e 917 }
whismanoid 53:3d5a3d241a5e 918 #endif
whismanoid 53:3d5a3d241a5e 919
whismanoid 53:3d5a3d241a5e 920 #if HAS_analogIns
whismanoid 53:3d5a3d241a5e 921 const float analogInPin_fullScaleVoltage[] = {
whismanoid 53:3d5a3d241a5e 922 # if defined(TARGET_MAX32630)
whismanoid 53:3d5a3d241a5e 923 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 53:3d5a3d241a5e 924 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 53:3d5a3d241a5e 925 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 53:3d5a3d241a5e 926 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 53:3d5a3d241a5e 927 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 928 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 929 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 930 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 931 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 932 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 53:3d5a3d241a5e 933 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 53:3d5a3d241a5e 934 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 935 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 936 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 53:3d5a3d241a5e 937 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 53:3d5a3d241a5e 938 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 53:3d5a3d241a5e 939 # elif defined(TARGET_MAX32620FTHR)
whismanoid 53:3d5a3d241a5e 940 #warning "TARGET_MAX32620FTHR not previously tested; need to verify analogIn0..."
whismanoid 53:3d5a3d241a5e 941 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 53:3d5a3d241a5e 942 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 53:3d5a3d241a5e 943 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 53:3d5a3d241a5e 944 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 53:3d5a3d241a5e 945 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 946 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 947 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 948 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 949 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 950 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 53:3d5a3d241a5e 951 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 53:3d5a3d241a5e 952 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 953 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 954 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 53:3d5a3d241a5e 955 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 53:3d5a3d241a5e 956 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 53:3d5a3d241a5e 957 #elif defined(TARGET_MAX32625MBED)
whismanoid 53:3d5a3d241a5e 958 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn0 // fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 959 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn1 // fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 960 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn2 // fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 961 ADC_FULL_SCALE_VOLTAGE * 1.0f, // analogIn3 // fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 962 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 963 ADC_FULL_SCALE_VOLTAGE * 5.0f, // analogIn4 // AIN_5 = AIN1 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 964 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn6 // AIN_6 = VDDB / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 965 ADC_FULL_SCALE_VOLTAGE, // analogIn7 // AIN_7 = VDD18 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 966 ADC_FULL_SCALE_VOLTAGE, // analogIn8 // AIN_8 = VDD12 fullscale is 1.2V
whismanoid 53:3d5a3d241a5e 967 ADC_FULL_SCALE_VOLTAGE * 2.0f, // analogIn9 // AIN_9 = VRTC / 2.0 fullscale is 2.4V
whismanoid 53:3d5a3d241a5e 968 ADC_FULL_SCALE_VOLTAGE, // analogIn10 // AIN_10 = x undefined?
whismanoid 53:3d5a3d241a5e 969 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn11 // AIN_11 = VDDIO / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 970 ADC_FULL_SCALE_VOLTAGE * 4.0f, // analogIn12 // AIN_12 = VDDIOH / 4.0 fullscale is 4.8V
whismanoid 53:3d5a3d241a5e 971 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 53:3d5a3d241a5e 972 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 53:3d5a3d241a5e 973 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 53:3d5a3d241a5e 974 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 53:3d5a3d241a5e 975 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 53:3d5a3d241a5e 976 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 53:3d5a3d241a5e 977 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 53:3d5a3d241a5e 978 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 53:3d5a3d241a5e 979 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 53:3d5a3d241a5e 980 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 53:3d5a3d241a5e 981 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 53:3d5a3d241a5e 982 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 53:3d5a3d241a5e 983 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 53:3d5a3d241a5e 984 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 53:3d5a3d241a5e 985 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 53:3d5a3d241a5e 986 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 53:3d5a3d241a5e 987 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 53:3d5a3d241a5e 988 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 53:3d5a3d241a5e 989 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 53:3d5a3d241a5e 990 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 53:3d5a3d241a5e 991 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 53:3d5a3d241a5e 992 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 53:3d5a3d241a5e 993 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 53:3d5a3d241a5e 994 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 53:3d5a3d241a5e 995 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 53:3d5a3d241a5e 996 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 53:3d5a3d241a5e 997 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 53:3d5a3d241a5e 998 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 53:3d5a3d241a5e 999 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 53:3d5a3d241a5e 1000 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 53:3d5a3d241a5e 1001 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 53:3d5a3d241a5e 1002 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 53:3d5a3d241a5e 1003 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 53:3d5a3d241a5e 1004 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 53:3d5a3d241a5e 1005 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 53:3d5a3d241a5e 1006 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 53:3d5a3d241a5e 1007 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 53:3d5a3d241a5e 1008 //#elif defined(TARGET_LPC1768)
whismanoid 53:3d5a3d241a5e 1009 #else
whismanoid 53:3d5a3d241a5e 1010 // unknown target
whismanoid 53:3d5a3d241a5e 1011 ADC_FULL_SCALE_VOLTAGE, // analogIn0
whismanoid 53:3d5a3d241a5e 1012 ADC_FULL_SCALE_VOLTAGE, // analogIn1
whismanoid 53:3d5a3d241a5e 1013 ADC_FULL_SCALE_VOLTAGE, // analogIn2
whismanoid 53:3d5a3d241a5e 1014 ADC_FULL_SCALE_VOLTAGE, // analogIn3
whismanoid 53:3d5a3d241a5e 1015 ADC_FULL_SCALE_VOLTAGE, // analogIn4
whismanoid 53:3d5a3d241a5e 1016 ADC_FULL_SCALE_VOLTAGE, // analogIn5
whismanoid 53:3d5a3d241a5e 1017 ADC_FULL_SCALE_VOLTAGE, // analogIn6
whismanoid 53:3d5a3d241a5e 1018 ADC_FULL_SCALE_VOLTAGE, // analogIn7
whismanoid 53:3d5a3d241a5e 1019 ADC_FULL_SCALE_VOLTAGE, // analogIn8
whismanoid 53:3d5a3d241a5e 1020 ADC_FULL_SCALE_VOLTAGE, // analogIn9
whismanoid 53:3d5a3d241a5e 1021 ADC_FULL_SCALE_VOLTAGE, // analogIn10
whismanoid 53:3d5a3d241a5e 1022 ADC_FULL_SCALE_VOLTAGE, // analogIn11
whismanoid 53:3d5a3d241a5e 1023 ADC_FULL_SCALE_VOLTAGE, // analogIn12
whismanoid 53:3d5a3d241a5e 1024 ADC_FULL_SCALE_VOLTAGE, // analogIn13
whismanoid 53:3d5a3d241a5e 1025 ADC_FULL_SCALE_VOLTAGE, // analogIn14
whismanoid 53:3d5a3d241a5e 1026 ADC_FULL_SCALE_VOLTAGE // analogIn15
whismanoid 53:3d5a3d241a5e 1027 # endif
whismanoid 53:3d5a3d241a5e 1028 };
whismanoid 53:3d5a3d241a5e 1029 #endif
whismanoid 53:3d5a3d241a5e 1030
whismanoid 53:3d5a3d241a5e 1031
whismanoid 53:3d5a3d241a5e 1032
whismanoid 53:3d5a3d241a5e 1033
whismanoid 53:3d5a3d241a5e 1034 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1035 // Option to use LEDs to show status
whismanoid 53:3d5a3d241a5e 1036 #ifndef USE_LEDS
whismanoid 53:3d5a3d241a5e 1037 #define USE_LEDS 1
whismanoid 53:3d5a3d241a5e 1038 #endif
whismanoid 53:3d5a3d241a5e 1039 #if USE_LEDS
whismanoid 53:3d5a3d241a5e 1040 #if defined(TARGET_MAX32630)
whismanoid 53:3d5a3d241a5e 1041 # define LED_ON 0
whismanoid 53:3d5a3d241a5e 1042 # define LED_OFF 1
whismanoid 53:3d5a3d241a5e 1043 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1044 #elif defined(TARGET_MAX32625MBED)
whismanoid 53:3d5a3d241a5e 1045 # define LED_ON 0
whismanoid 53:3d5a3d241a5e 1046 # define LED_OFF 1
whismanoid 53:3d5a3d241a5e 1047 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1048 // TODO1: TARGET=MAX32625MBED ARM Cortex-M4F 96MHz 512kB Flash 160kB SRAM
whismanoid 53:3d5a3d241a5e 1049 #elif defined(TARGET_LPC1768)
whismanoid 53:3d5a3d241a5e 1050 # define LED_ON 1
whismanoid 53:3d5a3d241a5e 1051 # define LED_OFF 0
whismanoid 53:3d5a3d241a5e 1052 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 53:3d5a3d241a5e 1053 // USE_LEDS with some platform other than MAX32630, MAX32625MBED, LPC1768
whismanoid 53:3d5a3d241a5e 1054 // bugfix for MAX32600MBED LED blink pattern: check if LED_ON/LED_OFF already defined
whismanoid 53:3d5a3d241a5e 1055 # ifndef LED_ON
whismanoid 53:3d5a3d241a5e 1056 # define LED_ON 0
whismanoid 53:3d5a3d241a5e 1057 # endif
whismanoid 53:3d5a3d241a5e 1058 # ifndef LED_OFF
whismanoid 53:3d5a3d241a5e 1059 # define LED_OFF 1
whismanoid 53:3d5a3d241a5e 1060 # endif
whismanoid 53:3d5a3d241a5e 1061 //# define LED_ON 1
whismanoid 53:3d5a3d241a5e 1062 //# define LED_OFF 0
whismanoid 53:3d5a3d241a5e 1063 #endif // target definition
whismanoid 53:3d5a3d241a5e 1064 DigitalOut led1(LED1, LED_OFF); // MAX32630FTHR: LED1 = LED_RED
whismanoid 53:3d5a3d241a5e 1065 DigitalOut led2(LED2, LED_OFF); // MAX32630FTHR: LED2 = LED_GREEN
whismanoid 53:3d5a3d241a5e 1066 DigitalOut led3(LED3, LED_OFF); // MAX32630FTHR: LED3 = LED_BLUE
whismanoid 53:3d5a3d241a5e 1067 DigitalOut led4(LED4, LED_OFF);
whismanoid 53:3d5a3d241a5e 1068 #else // USE_LEDS=0
whismanoid 53:3d5a3d241a5e 1069 // issue #41 support Nucleo_F446RE
whismanoid 53:3d5a3d241a5e 1070 // there are no LED indicators on the board, LED1 interferes with SPI;
whismanoid 53:3d5a3d241a5e 1071 // but we still need placeholders led1 led2 led3 led4.
whismanoid 53:3d5a3d241a5e 1072 // Declare DigitalOut led1 led2 led3 led4 targeting safe pins.
whismanoid 53:3d5a3d241a5e 1073 // PinName NC means NOT_CONNECTED; DigitalOut::is_connected() returns false
whismanoid 53:3d5a3d241a5e 1074 # define LED_ON 0
whismanoid 53:3d5a3d241a5e 1075 # define LED_OFF 1
whismanoid 53:3d5a3d241a5e 1076 DigitalOut led1(NC, LED_OFF);
whismanoid 53:3d5a3d241a5e 1077 DigitalOut led2(NC, LED_OFF);
whismanoid 53:3d5a3d241a5e 1078 DigitalOut led3(NC, LED_OFF);
whismanoid 53:3d5a3d241a5e 1079 DigitalOut led4(NC, LED_OFF);
whismanoid 53:3d5a3d241a5e 1080 #endif // USE_LEDS
whismanoid 53:3d5a3d241a5e 1081 #define led1_RFailLED led1
whismanoid 53:3d5a3d241a5e 1082 #define led2_GPassLED led2
whismanoid 53:3d5a3d241a5e 1083 #define led3_BBusyLED led3
whismanoid 53:3d5a3d241a5e 1084
whismanoid 53:3d5a3d241a5e 1085 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1086
whismanoid 53:3d5a3d241a5e 1087
whismanoid 53:3d5a3d241a5e 1088 // example code board support
whismanoid 53:3d5a3d241a5e 1089 //MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
whismanoid 53:3d5a3d241a5e 1090 //DigitalOut rLED(LED1);
whismanoid 53:3d5a3d241a5e 1091 //DigitalOut gLED(LED2);
whismanoid 53:3d5a3d241a5e 1092 //DigitalOut bLED(LED3);
whismanoid 53:3d5a3d241a5e 1093 //
whismanoid 53:3d5a3d241a5e 1094 // Arduino "shield" connector port definitions (MAX32625MBED shown)
whismanoid 53:3d5a3d241a5e 1095 #if defined(TARGET_MAX32625MBED)
whismanoid 53:3d5a3d241a5e 1096 #define A0 AIN_0
whismanoid 53:3d5a3d241a5e 1097 #define A1 AIN_1
whismanoid 53:3d5a3d241a5e 1098 #define A2 AIN_2
whismanoid 53:3d5a3d241a5e 1099 #define A3 AIN_3
whismanoid 53:3d5a3d241a5e 1100 #define D0 P0_0
whismanoid 53:3d5a3d241a5e 1101 #define D1 P0_1
whismanoid 53:3d5a3d241a5e 1102 #define D2 P0_2
whismanoid 53:3d5a3d241a5e 1103 #define D3 P0_3
whismanoid 53:3d5a3d241a5e 1104 #define D4 P0_4
whismanoid 53:3d5a3d241a5e 1105 #define D5 P0_5
whismanoid 53:3d5a3d241a5e 1106 #define D6 P0_6
whismanoid 53:3d5a3d241a5e 1107 #define D7 P0_7
whismanoid 53:3d5a3d241a5e 1108 #define D8 P1_4
whismanoid 53:3d5a3d241a5e 1109 #define D9 P1_5
whismanoid 53:3d5a3d241a5e 1110 #define D10 P1_3
whismanoid 53:3d5a3d241a5e 1111 #define D11 P1_1
whismanoid 53:3d5a3d241a5e 1112 #define D12 P1_2
whismanoid 53:3d5a3d241a5e 1113 #define D13 P1_0
whismanoid 53:3d5a3d241a5e 1114 #endif
whismanoid 53:3d5a3d241a5e 1115
whismanoid 53:3d5a3d241a5e 1116 // example code declare SPI interface
whismanoid 53:3d5a3d241a5e 1117 #if defined(TARGET_MAX32625MBED)
whismanoid 53:3d5a3d241a5e 1118 SPI spi(SPI1_MOSI, SPI1_MISO, SPI1_SCK); // mosi, miso, sclk spi1 TARGET_MAX32625MBED: P1_1 P1_2 P1_0 Arduino 10-pin header D11 D12 D13
whismanoid 53:3d5a3d241a5e 1119 DigitalOut spi_cs(SPI1_SS); // TARGET_MAX32625MBED: P1_3 Arduino 10-pin header D10
whismanoid 53:3d5a3d241a5e 1120 #elif defined(TARGET_MAX32600MBED)
whismanoid 53:3d5a3d241a5e 1121 SPI spi(SPI2_MOSI, SPI2_MISO, SPI2_SCK); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 53:3d5a3d241a5e 1122 DigitalOut spi_cs(SPI2_SS); // Generic: Arduino 10-pin header D10
whismanoid 53:3d5a3d241a5e 1123 #else
whismanoid 53:3d5a3d241a5e 1124 SPI spi(D11, D12, D13); // mosi, miso, sclk spi1 TARGET_MAX32600MBED: Arduino 10-pin header D11 D12 D13
whismanoid 53:3d5a3d241a5e 1125 DigitalOut spi_cs(D10); // Generic: Arduino 10-pin header D10
whismanoid 53:3d5a3d241a5e 1126 #endif
whismanoid 52:607010f0c54e 1127
whismanoid 53:3d5a3d241a5e 1128 // example code declare GPIO interface pins
whismanoid 53:3d5a3d241a5e 1129 DigitalOut CONVRUN_pin(D9); // Digital Configuration Input to MAX11043 device
whismanoid 53:3d5a3d241a5e 1130 DigitalOut SHDN_pin(D8); // Digital Configuration Input to MAX11043 device
whismanoid 53:3d5a3d241a5e 1131 DigitalOut DACSTEP_pin(D7); // Digital Configuration Input to MAX11043 device
whismanoid 53:3d5a3d241a5e 1132 DigitalOut UP_slash_DWNb_pin(D6); // Digital Configuration Input to MAX11043 device
whismanoid 53:3d5a3d241a5e 1133 DigitalIn EOC_pin(D2); // Digital Event Output from MAX11043 device
whismanoid 53:3d5a3d241a5e 1134 // example code declare device instance
whismanoid 53:3d5a3d241a5e 1135 MAX11043 g_MAX11043_device(spi, spi_cs, CONVRUN_pin, SHDN_pin, DACSTEP_pin, UP_slash_DWNb_pin, EOC_pin, MAX11043::MAX11043_IC);
whismanoid 53:3d5a3d241a5e 1136
whismanoid 53:3d5a3d241a5e 1137
whismanoid 53:3d5a3d241a5e 1138 //----------------------------------------
whismanoid 53:3d5a3d241a5e 1139 // Global SPI options
whismanoid 53:3d5a3d241a5e 1140 //
whismanoid 53:3d5a3d241a5e 1141
whismanoid 54:26a973c5dac4 1142 //--------------------------------------------------
whismanoid 54:26a973c5dac4 1143 // Optional Diagnostic function to print SPI transactions
whismanoid 54:26a973c5dac4 1144 #ifndef MAX11043_ONSPIPRINT
whismanoid 54:26a973c5dac4 1145 #define MAX11043_ONSPIPRINT 1
whismanoid 54:26a973c5dac4 1146 #endif // MAX11043_ONSPIPRINT
whismanoid 54:26a973c5dac4 1147
whismanoid 53:3d5a3d241a5e 1148 //----------------------------------------
whismanoid 53:3d5a3d241a5e 1149 // Global I2C options
whismanoid 53:3d5a3d241a5e 1150 //
whismanoid 53:3d5a3d241a5e 1151
whismanoid 53:3d5a3d241a5e 1152 #define APPLICATION_ArduinoPinsMonitor 1
whismanoid 53:3d5a3d241a5e 1153
whismanoid 53:3d5a3d241a5e 1154 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1155 // use BUTTON1 trigger some action
whismanoid 53:3d5a3d241a5e 1156 #if defined(TARGET_MAX32630)
whismanoid 53:3d5a3d241a5e 1157 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 53:3d5a3d241a5e 1158 #define HAS_BUTTON2_DEMO 0
whismanoid 53:3d5a3d241a5e 1159 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 53:3d5a3d241a5e 1160 #elif defined(TARGET_MAX32625PICO)
whismanoid 53:3d5a3d241a5e 1161 #warning "TARGET_MAX32625PICO not previously tested; need to define buttons..."
whismanoid 53:3d5a3d241a5e 1162 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 53:3d5a3d241a5e 1163 #define HAS_BUTTON2_DEMO 0
whismanoid 53:3d5a3d241a5e 1164 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 53:3d5a3d241a5e 1165 #elif defined(TARGET_MAX32625)
whismanoid 53:3d5a3d241a5e 1166 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 53:3d5a3d241a5e 1167 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 53:3d5a3d241a5e 1168 #elif defined(TARGET_MAX32620FTHR)
whismanoid 53:3d5a3d241a5e 1169 #warning "TARGET_MAX32620FTHR not previously tested; need to define buttons..."
whismanoid 53:3d5a3d241a5e 1170 #define BUTTON1 SW1
whismanoid 53:3d5a3d241a5e 1171 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 53:3d5a3d241a5e 1172 #define HAS_BUTTON2_DEMO 0
whismanoid 53:3d5a3d241a5e 1173 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 53:3d5a3d241a5e 1174 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 53:3d5a3d241a5e 1175 #define HAS_BUTTON1_DEMO_INTERRUPT 0
whismanoid 53:3d5a3d241a5e 1176 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 53:3d5a3d241a5e 1177 #elif defined(TARGET_NUCLEO_F401RE)
whismanoid 53:3d5a3d241a5e 1178 #define HAS_BUTTON1_DEMO_INTERRUPT 0
whismanoid 53:3d5a3d241a5e 1179 #define HAS_BUTTON2_DEMO_INTERRUPT 0
whismanoid 53:3d5a3d241a5e 1180 #else
whismanoid 53:3d5a3d241a5e 1181 #warning "target not previously tested; need to define buttons..."
whismanoid 53:3d5a3d241a5e 1182 #endif
whismanoid 53:3d5a3d241a5e 1183 //
whismanoid 53:3d5a3d241a5e 1184 #ifndef HAS_BUTTON1_DEMO
whismanoid 53:3d5a3d241a5e 1185 #define HAS_BUTTON1_DEMO 0
whismanoid 53:3d5a3d241a5e 1186 #endif
whismanoid 53:3d5a3d241a5e 1187 #ifndef HAS_BUTTON2_DEMO
whismanoid 53:3d5a3d241a5e 1188 #define HAS_BUTTON2_DEMO 0
whismanoid 53:3d5a3d241a5e 1189 #endif
whismanoid 53:3d5a3d241a5e 1190 //
whismanoid 53:3d5a3d241a5e 1191 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 53:3d5a3d241a5e 1192 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 53:3d5a3d241a5e 1193 #ifndef HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 53:3d5a3d241a5e 1194 #define HAS_BUTTON1_DEMO_INTERRUPT_POLLING 1
whismanoid 53:3d5a3d241a5e 1195 #endif
whismanoid 53:3d5a3d241a5e 1196 //
whismanoid 53:3d5a3d241a5e 1197 #ifndef HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 1198 #define HAS_BUTTON1_DEMO_INTERRUPT 1
whismanoid 53:3d5a3d241a5e 1199 #endif
whismanoid 53:3d5a3d241a5e 1200 #ifndef HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 1201 #define HAS_BUTTON2_DEMO_INTERRUPT 1
whismanoid 53:3d5a3d241a5e 1202 #endif
whismanoid 53:3d5a3d241a5e 1203 //
whismanoid 53:3d5a3d241a5e 1204 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 1205 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 53:3d5a3d241a5e 1206 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 53:3d5a3d241a5e 1207 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 53:3d5a3d241a5e 1208 DigitalIn button1(BUTTON1);
whismanoid 53:3d5a3d241a5e 1209 # else
whismanoid 53:3d5a3d241a5e 1210 InterruptIn button1(BUTTON1);
whismanoid 53:3d5a3d241a5e 1211 # endif
whismanoid 53:3d5a3d241a5e 1212 #elif HAS_BUTTON1_DEMO
whismanoid 53:3d5a3d241a5e 1213 DigitalIn button1(BUTTON1);
whismanoid 53:3d5a3d241a5e 1214 #endif
whismanoid 53:3d5a3d241a5e 1215 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 1216 # if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 53:3d5a3d241a5e 1217 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 53:3d5a3d241a5e 1218 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 53:3d5a3d241a5e 1219 DigitalIn button2(BUTTON2);
whismanoid 53:3d5a3d241a5e 1220 # else
whismanoid 53:3d5a3d241a5e 1221 InterruptIn button2(BUTTON2);
whismanoid 53:3d5a3d241a5e 1222 # endif
whismanoid 53:3d5a3d241a5e 1223 #elif HAS_BUTTON2_DEMO
whismanoid 53:3d5a3d241a5e 1224 DigitalIn button2(BUTTON2);
whismanoid 53:3d5a3d241a5e 1225 #endif
whismanoid 53:3d5a3d241a5e 1226
whismanoid 53:3d5a3d241a5e 1227 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1228 // When user presses button BUTTON1, perform self test
whismanoid 53:3d5a3d241a5e 1229 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 1230 void onButton1FallingEdge(void)
whismanoid 53:3d5a3d241a5e 1231 {
whismanoid 53:3d5a3d241a5e 1232 void SelfTest(CmdLine & cmdLine);
whismanoid 53:3d5a3d241a5e 1233 SelfTest(cmdLine_serial);
whismanoid 53:3d5a3d241a5e 1234 }
whismanoid 53:3d5a3d241a5e 1235 #endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 1236
whismanoid 53:3d5a3d241a5e 1237 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1238 // When user presses button BUTTON2, perform demo configuration
whismanoid 53:3d5a3d241a5e 1239 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 1240 void onButton2FallingEdge(void)
whismanoid 53:3d5a3d241a5e 1241 {
whismanoid 53:3d5a3d241a5e 1242 // TBD demo configuration
whismanoid 53:3d5a3d241a5e 1243 // TODO diagnostic LED
whismanoid 53:3d5a3d241a5e 1244 }
whismanoid 53:3d5a3d241a5e 1245 #endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 1246
whismanoid 53:3d5a3d241a5e 1247 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1248 void SelfTest(CmdLine & cmdLine)
whismanoid 53:3d5a3d241a5e 1249 {
whismanoid 53:3d5a3d241a5e 1250 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1251 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 53:3d5a3d241a5e 1252 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 53:3d5a3d241a5e 1253 MaximTinyTester tinyTester(cmdLine, analogIn4, analogIn5, analogIn2, analogIn3, analogIn0, analogIn4, led1_RFailLED, led2_GPassLED, led3_BBusyLED);
whismanoid 53:3d5a3d241a5e 1254 tinyTester.analogInPin_fullScaleVoltage[0] = analogInPin_fullScaleVoltage[4]; // board support
whismanoid 53:3d5a3d241a5e 1255 tinyTester.analogInPin_fullScaleVoltage[1] = analogInPin_fullScaleVoltage[5]; // board support
whismanoid 53:3d5a3d241a5e 1256 tinyTester.analogInPin_fullScaleVoltage[2] = analogInPin_fullScaleVoltage[2]; // board support
whismanoid 53:3d5a3d241a5e 1257 tinyTester.analogInPin_fullScaleVoltage[3] = analogInPin_fullScaleVoltage[3]; // board support
whismanoid 53:3d5a3d241a5e 1258 tinyTester.analogInPin_fullScaleVoltage[4] = analogInPin_fullScaleVoltage[0]; // board support
whismanoid 53:3d5a3d241a5e 1259 tinyTester.analogInPin_fullScaleVoltage[5] = analogInPin_fullScaleVoltage[1]; // board support
whismanoid 53:3d5a3d241a5e 1260 // low range channels AIN0, AIN1, AIN2, AIN3
whismanoid 53:3d5a3d241a5e 1261 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 53:3d5a3d241a5e 1262 // Platform board uses simple analog inputs
whismanoid 53:3d5a3d241a5e 1263 MaximTinyTester tinyTester(cmdLine, analogIn0, analogIn1, analogIn2, analogIn3, analogIn4, analogIn5, led1_RFailLED, led2_GPassLED, led3_BBusyLED);
whismanoid 53:3d5a3d241a5e 1264 tinyTester.analogInPin_fullScaleVoltage[0] = analogInPin_fullScaleVoltage[0]; // board support
whismanoid 53:3d5a3d241a5e 1265 tinyTester.analogInPin_fullScaleVoltage[1] = analogInPin_fullScaleVoltage[1]; // board support
whismanoid 53:3d5a3d241a5e 1266 tinyTester.analogInPin_fullScaleVoltage[2] = analogInPin_fullScaleVoltage[2]; // board support
whismanoid 53:3d5a3d241a5e 1267 tinyTester.analogInPin_fullScaleVoltage[3] = analogInPin_fullScaleVoltage[3]; // board support
whismanoid 53:3d5a3d241a5e 1268 tinyTester.analogInPin_fullScaleVoltage[4] = analogInPin_fullScaleVoltage[4]; // board support
whismanoid 53:3d5a3d241a5e 1269 tinyTester.analogInPin_fullScaleVoltage[5] = analogInPin_fullScaleVoltage[5]; // board support
whismanoid 53:3d5a3d241a5e 1270 #endif
whismanoid 53:3d5a3d241a5e 1271 tinyTester.clear();
whismanoid 53:3d5a3d241a5e 1272
whismanoid 53:3d5a3d241a5e 1273 // CODE GENERATOR: generate SelfTest based on function docstrings @test lines
whismanoid 53:3d5a3d241a5e 1274
whismanoid 53:3d5a3d241a5e 1275 //
whismanoid 53:3d5a3d241a5e 1276 #if INJECT_SELFTEST_FAIL
whismanoid 53:3d5a3d241a5e 1277 // Test of the pass/fail report mechanism
whismanoid 53:3d5a3d241a5e 1278 tinyTester.FAIL();
whismanoid 53:3d5a3d241a5e 1279 cmdLine.serial().print(F("injecting one false failure for test reporting"));
whismanoid 53:3d5a3d241a5e 1280 #endif
whismanoid 53:3d5a3d241a5e 1281 //
whismanoid 53:3d5a3d241a5e 1282 // Report number of pass and number of fail test results
whismanoid 53:3d5a3d241a5e 1283 tinyTester.Report_Summary();
whismanoid 53:3d5a3d241a5e 1284 }
whismanoid 53:3d5a3d241a5e 1285
whismanoid 53:3d5a3d241a5e 1286
whismanoid 53:3d5a3d241a5e 1287 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1288 inline void print_command_prompt()
whismanoid 53:3d5a3d241a5e 1289 {
whismanoid 53:3d5a3d241a5e 1290 cmdLine_serial.serial().printf("\r\n> ");
whismanoid 53:3d5a3d241a5e 1291
whismanoid 53:3d5a3d241a5e 1292 }
whismanoid 53:3d5a3d241a5e 1293
whismanoid 53:3d5a3d241a5e 1294
whismanoid 53:3d5a3d241a5e 1295 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1296 void pinsMonitor_submenu_onEOLcommandParser(CmdLine& cmdLine)
whismanoid 53:3d5a3d241a5e 1297 {
whismanoid 53:3d5a3d241a5e 1298 // % diagnostic commands submenu
whismanoid 53:3d5a3d241a5e 1299 // %Hpin -- digital output high
whismanoid 53:3d5a3d241a5e 1300 // %Lpin -- digital output low
whismanoid 53:3d5a3d241a5e 1301 // %?pin -- digital input
whismanoid 53:3d5a3d241a5e 1302 // %A %Apin -- analog input
whismanoid 53:3d5a3d241a5e 1303 // %Ppin df=xx -- pwm output
whismanoid 53:3d5a3d241a5e 1304 // %Wpin -- measure high pulsewidth input in usec
whismanoid 53:3d5a3d241a5e 1305 // %wpin -- measure low pulsewidth input in usec
whismanoid 53:3d5a3d241a5e 1306 // %I... -- I2C diagnostics
whismanoid 53:3d5a3d241a5e 1307 // %IP -- I2C probe
whismanoid 53:3d5a3d241a5e 1308 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 53:3d5a3d241a5e 1309 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 53:3d5a3d241a5e 1310 // %IR ADDR=? RD=? -- read
whismanoid 53:3d5a3d241a5e 1311 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 53:3d5a3d241a5e 1312 // %S... -- SPI diagnostics
whismanoid 53:3d5a3d241a5e 1313 // %SC sclk=1Mhz -- SPI configure
whismanoid 53:3d5a3d241a5e 1314 // %SW -- write (write and read)
whismanoid 53:3d5a3d241a5e 1315 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 53:3d5a3d241a5e 1316 // A-Z,a-z,0-9 reserved for application use
whismanoid 53:3d5a3d241a5e 1317 //
whismanoid 53:3d5a3d241a5e 1318 char strPinIndex[3];
whismanoid 53:3d5a3d241a5e 1319 strPinIndex[0] = cmdLine[2];
whismanoid 53:3d5a3d241a5e 1320 strPinIndex[1] = cmdLine[3];
whismanoid 53:3d5a3d241a5e 1321 strPinIndex[2] = '\0';
whismanoid 53:3d5a3d241a5e 1322 int pinIndex = strtoul(strPinIndex, NULL, 10); // strtol(str, NULL, 10): get decimal value
whismanoid 53:3d5a3d241a5e 1323 //cmdLine.serial().printf(" pinIndex=%d ", pinIndex);
whismanoid 53:3d5a3d241a5e 1324 //
whismanoid 53:3d5a3d241a5e 1325 // get next character
whismanoid 53:3d5a3d241a5e 1326 switch (cmdLine[1])
whismanoid 53:3d5a3d241a5e 1327 {
whismanoid 53:3d5a3d241a5e 1328 #if HAS_digitalInOuts
whismanoid 53:3d5a3d241a5e 1329 case 'H': case 'h':
whismanoid 53:3d5a3d241a5e 1330 {
whismanoid 53:3d5a3d241a5e 1331 // %Hpin -- digital output high
whismanoid 53:3d5a3d241a5e 1332 #if ARDUINO_STYLE
whismanoid 53:3d5a3d241a5e 1333 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 53:3d5a3d241a5e 1334 digitalWrite(pinIndex, HIGH); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 53:3d5a3d241a5e 1335 #else
whismanoid 53:3d5a3d241a5e 1336 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 53:3d5a3d241a5e 1337 digitalInOutPin.output();
whismanoid 53:3d5a3d241a5e 1338 digitalInOutPin.write(1);
whismanoid 53:3d5a3d241a5e 1339 #endif
whismanoid 53:3d5a3d241a5e 1340 cmdLine.serial().printf(" digitalInOutPin %d Output High ", pinIndex);
whismanoid 53:3d5a3d241a5e 1341 }
whismanoid 53:3d5a3d241a5e 1342 break;
whismanoid 53:3d5a3d241a5e 1343 case 'L': case 'l':
whismanoid 53:3d5a3d241a5e 1344 {
whismanoid 53:3d5a3d241a5e 1345 // %Lpin -- digital output low
whismanoid 53:3d5a3d241a5e 1346 #if ARDUINO_STYLE
whismanoid 53:3d5a3d241a5e 1347 pinMode(pinIndex, OUTPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 53:3d5a3d241a5e 1348 digitalWrite(pinIndex, LOW); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 53:3d5a3d241a5e 1349 #else
whismanoid 53:3d5a3d241a5e 1350 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 53:3d5a3d241a5e 1351 digitalInOutPin.output();
whismanoid 53:3d5a3d241a5e 1352 digitalInOutPin.write(0);
whismanoid 53:3d5a3d241a5e 1353 #endif
whismanoid 53:3d5a3d241a5e 1354 cmdLine.serial().printf(" digitalInOutPin %d Output Low ", pinIndex);
whismanoid 53:3d5a3d241a5e 1355 }
whismanoid 53:3d5a3d241a5e 1356 break;
whismanoid 53:3d5a3d241a5e 1357 case '?':
whismanoid 53:3d5a3d241a5e 1358 {
whismanoid 53:3d5a3d241a5e 1359 // %?pin -- digital input
whismanoid 53:3d5a3d241a5e 1360 #if ARDUINO_STYLE
whismanoid 53:3d5a3d241a5e 1361 pinMode(pinIndex, INPUT); // digital pins 0, 1, 2, .. 13, analog input pins A0, A1, .. A5
whismanoid 53:3d5a3d241a5e 1362 #else
whismanoid 53:3d5a3d241a5e 1363 DigitalInOut& digitalInOutPin = find_digitalInOutPin(pinIndex);
whismanoid 53:3d5a3d241a5e 1364 digitalInOutPin.input();
whismanoid 53:3d5a3d241a5e 1365 #endif
whismanoid 53:3d5a3d241a5e 1366 serial.printf(" digitalInOutPin %d Input ", pinIndex);
whismanoid 53:3d5a3d241a5e 1367 #if ARDUINO_STYLE
whismanoid 53:3d5a3d241a5e 1368 int value = digitalRead(pinIndex);
whismanoid 53:3d5a3d241a5e 1369 #else
whismanoid 53:3d5a3d241a5e 1370 int value = digitalInOutPin.read();
whismanoid 53:3d5a3d241a5e 1371 #endif
whismanoid 53:3d5a3d241a5e 1372 cmdLine.serial().printf("%d ", value);
whismanoid 53:3d5a3d241a5e 1373 }
whismanoid 53:3d5a3d241a5e 1374 break;
whismanoid 53:3d5a3d241a5e 1375 #endif
whismanoid 53:3d5a3d241a5e 1376 //
whismanoid 53:3d5a3d241a5e 1377 #if HAS_analogIns
whismanoid 53:3d5a3d241a5e 1378 case 'A': case 'a':
whismanoid 53:3d5a3d241a5e 1379 {
whismanoid 53:3d5a3d241a5e 1380 // %A %Apin -- analog input
whismanoid 53:3d5a3d241a5e 1381 #if analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 53:3d5a3d241a5e 1382 // Platform board uses AIN4,AIN5,.. as high range of AIN0,AIN1,..
whismanoid 53:3d5a3d241a5e 1383 for (int pinIndex = 0; pinIndex < 2; pinIndex++)
whismanoid 53:3d5a3d241a5e 1384 {
whismanoid 53:3d5a3d241a5e 1385 int cPinIndex = '0' + pinIndex;
whismanoid 53:3d5a3d241a5e 1386 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 53:3d5a3d241a5e 1387 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 53:3d5a3d241a5e 1388 float normValue_0_1 = analogInPin.read();
whismanoid 53:3d5a3d241a5e 1389 //
whismanoid 53:3d5a3d241a5e 1390 int pinIndexH = pinIndex + 4;
whismanoid 53:3d5a3d241a5e 1391 int cPinIndexH = '0' + pinIndexH;
whismanoid 53:3d5a3d241a5e 1392 AnalogIn& analogInPinH = find_analogInPin(cPinIndexH);
whismanoid 53:3d5a3d241a5e 1393 float adc_full_scale_voltageH = analogInPin_fullScaleVoltage[pinIndexH];
whismanoid 53:3d5a3d241a5e 1394 float normValueH_0_1 = analogInPinH.read();
whismanoid 53:3d5a3d241a5e 1395 //
whismanoid 53:3d5a3d241a5e 1396 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV AIN%c = %7.3f%% = %1.3fV \r\n",
whismanoid 53:3d5a3d241a5e 1397 cPinIndex,
whismanoid 53:3d5a3d241a5e 1398 normValue_0_1 * 100.0,
whismanoid 53:3d5a3d241a5e 1399 normValue_0_1 * adc_full_scale_voltage,
whismanoid 53:3d5a3d241a5e 1400 cPinIndexH,
whismanoid 53:3d5a3d241a5e 1401 normValueH_0_1 * 100.0,
whismanoid 53:3d5a3d241a5e 1402 normValueH_0_1 * adc_full_scale_voltageH
whismanoid 53:3d5a3d241a5e 1403 );
whismanoid 53:3d5a3d241a5e 1404 }
whismanoid 53:3d5a3d241a5e 1405 for (int pinIndex = 2; pinIndex < 4; pinIndex++)
whismanoid 53:3d5a3d241a5e 1406 {
whismanoid 53:3d5a3d241a5e 1407 int cPinIndex = '0' + pinIndex;
whismanoid 53:3d5a3d241a5e 1408 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 53:3d5a3d241a5e 1409 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 53:3d5a3d241a5e 1410 float normValue_0_1 = analogInPin.read();
whismanoid 53:3d5a3d241a5e 1411 //
whismanoid 53:3d5a3d241a5e 1412 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 53:3d5a3d241a5e 1413 cPinIndex,
whismanoid 53:3d5a3d241a5e 1414 normValue_0_1 * 100.0,
whismanoid 53:3d5a3d241a5e 1415 normValue_0_1 * adc_full_scale_voltage
whismanoid 53:3d5a3d241a5e 1416 );
whismanoid 53:3d5a3d241a5e 1417 }
whismanoid 53:3d5a3d241a5e 1418 #else // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 53:3d5a3d241a5e 1419 // Platform board uses simple analog inputs
whismanoid 53:3d5a3d241a5e 1420 // assume standard Arduino analog inputs A0-A5
whismanoid 53:3d5a3d241a5e 1421 for (int pinIndex = 0; pinIndex < 6; pinIndex++)
whismanoid 53:3d5a3d241a5e 1422 {
whismanoid 53:3d5a3d241a5e 1423 int cPinIndex = '0' + pinIndex;
whismanoid 53:3d5a3d241a5e 1424 AnalogIn& analogInPin = find_analogInPin(cPinIndex);
whismanoid 53:3d5a3d241a5e 1425 float adc_full_scale_voltage = analogInPin_fullScaleVoltage[pinIndex];
whismanoid 53:3d5a3d241a5e 1426 float normValue_0_1 = analogInPin.read();
whismanoid 53:3d5a3d241a5e 1427 //
whismanoid 53:3d5a3d241a5e 1428 cmdLine.serial().printf("AIN%c = %7.3f%% = %1.3fV\r\n",
whismanoid 53:3d5a3d241a5e 1429 cPinIndex,
whismanoid 53:3d5a3d241a5e 1430 normValue_0_1 * 100.0,
whismanoid 53:3d5a3d241a5e 1431 normValue_0_1 * adc_full_scale_voltage
whismanoid 53:3d5a3d241a5e 1432 );
whismanoid 53:3d5a3d241a5e 1433 }
whismanoid 53:3d5a3d241a5e 1434 #endif // analogIn4_IS_HIGH_RANGE_OF_analogIn0
whismanoid 53:3d5a3d241a5e 1435 }
whismanoid 53:3d5a3d241a5e 1436 break;
whismanoid 53:3d5a3d241a5e 1437 #endif
whismanoid 53:3d5a3d241a5e 1438 //
whismanoid 53:3d5a3d241a5e 1439 #if HAS_SPI2_MAX541
whismanoid 53:3d5a3d241a5e 1440 case 'D': case 'd':
whismanoid 53:3d5a3d241a5e 1441 {
whismanoid 53:3d5a3d241a5e 1442 // %D -- DAC output MAX541 (SPI2) -- need cmdLine.parse_float(voltageV)
whismanoid 53:3d5a3d241a5e 1443 // MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 53:3d5a3d241a5e 1444 float voltageV = max541.Get_Voltage();
whismanoid 53:3d5a3d241a5e 1445 // if (cmdLine[2] == '+') {
whismanoid 53:3d5a3d241a5e 1446 // // %D+
whismanoid 53:3d5a3d241a5e 1447 // voltageV = voltageV * 1.25f;
whismanoid 53:3d5a3d241a5e 1448 // if (voltageV >= max541.VRef) voltageV = max541.VRef;
whismanoid 53:3d5a3d241a5e 1449 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 53:3d5a3d241a5e 1450 // }
whismanoid 53:3d5a3d241a5e 1451 // else if (cmdLine[2] == '-') {
whismanoid 53:3d5a3d241a5e 1452 // // %D-
whismanoid 53:3d5a3d241a5e 1453 // voltageV = voltageV * 0.75f;
whismanoid 53:3d5a3d241a5e 1454 // if (voltageV < 0.1f) voltageV = 0.1f;
whismanoid 53:3d5a3d241a5e 1455 // SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 53:3d5a3d241a5e 1456 // }
whismanoid 53:3d5a3d241a5e 1457 if (cmdLine.parse_float("V", voltageV))
whismanoid 53:3d5a3d241a5e 1458 {
whismanoid 53:3d5a3d241a5e 1459 // %D V=1.234 -- set voltage
whismanoid 53:3d5a3d241a5e 1460 max541.Set_Voltage(voltageV);
whismanoid 53:3d5a3d241a5e 1461 }
whismanoid 53:3d5a3d241a5e 1462 else if (cmdLine.parse_float("TEST", voltageV))
whismanoid 53:3d5a3d241a5e 1463 {
whismanoid 53:3d5a3d241a5e 1464 // %D TEST=1.234 -- set voltage and compare with AIN0
whismanoid 53:3d5a3d241a5e 1465 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 53:3d5a3d241a5e 1466 }
whismanoid 53:3d5a3d241a5e 1467 else if (cmdLine.parse_float("CAL", voltageV))
whismanoid 53:3d5a3d241a5e 1468 {
whismanoid 53:3d5a3d241a5e 1469 // %D CAL=1.234 -- calibrate VRef and compare with AIN0
whismanoid 53:3d5a3d241a5e 1470
whismanoid 53:3d5a3d241a5e 1471 max541.Set_Code(0x8000); // we don't know the fullscale voltage yet, so set code to midscale
whismanoid 53:3d5a3d241a5e 1472 double max541_midscale_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 1473 const int average_count = 100;
whismanoid 53:3d5a3d241a5e 1474 const double average_K = 0.25;
whismanoid 53:3d5a3d241a5e 1475 for (int count = 0; count < average_count; count++) {
whismanoid 53:3d5a3d241a5e 1476 double measurement_V = analogInPin_fullScaleVoltage[4] * analogIn4.read(); // TARGET_MAX32630 J1.5 AIN_4 = AIN0 / 5.0 fullscale is 6.0V
whismanoid 53:3d5a3d241a5e 1477 max541_midscale_V = ((1 - average_K) * max541_midscale_V) + (average_K * measurement_V);
whismanoid 53:3d5a3d241a5e 1478 }
whismanoid 53:3d5a3d241a5e 1479 max541.VRef = 2.0 * max541_midscale_V;
whismanoid 53:3d5a3d241a5e 1480 cmdLine.serial().printf(
whismanoid 53:3d5a3d241a5e 1481 "\r\n MAX541 midscale = %1.3fV, so fullscale = %1.3fV",
whismanoid 53:3d5a3d241a5e 1482 max541_midscale_V, max541.VRef);
whismanoid 53:3d5a3d241a5e 1483 // Detect whether MAX541 is really connected to MAX32625MBED.AIN0/AIN4
whismanoid 53:3d5a3d241a5e 1484 voltageV = 1.0f;
whismanoid 53:3d5a3d241a5e 1485 SelfTest_MAX541_Voltage(cmdLine, max541, voltageV);
whismanoid 53:3d5a3d241a5e 1486 }
whismanoid 53:3d5a3d241a5e 1487 else {
whismanoid 53:3d5a3d241a5e 1488 // %D -- print MAX541 DAC status
whismanoid 53:3d5a3d241a5e 1489 cmdLine.serial().printf("MAX541 code=0x%4.4x = %1.3fV VRef=%1.3fV\r\n",
whismanoid 53:3d5a3d241a5e 1490 max541.Get_Code(), max541.Get_Voltage(), max541.VRef);
whismanoid 53:3d5a3d241a5e 1491 }
whismanoid 53:3d5a3d241a5e 1492 }
whismanoid 53:3d5a3d241a5e 1493 break;
whismanoid 53:3d5a3d241a5e 1494 #endif
whismanoid 53:3d5a3d241a5e 1495
whismanoid 53:3d5a3d241a5e 1496 //
whismanoid 53:3d5a3d241a5e 1497 #if HAS_I2C // SUPPORT_I2C
whismanoid 53:3d5a3d241a5e 1498 case 'I': case 'i':
whismanoid 53:3d5a3d241a5e 1499 // %I... -- I2C diagnostics
whismanoid 53:3d5a3d241a5e 1500 // %IP -- I2C probe
whismanoid 53:3d5a3d241a5e 1501 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 53:3d5a3d241a5e 1502 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 53:3d5a3d241a5e 1503 // %IR ADDR=? RD=? -- read
whismanoid 53:3d5a3d241a5e 1504 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 53:3d5a3d241a5e 1505 // get next character
whismanoid 53:3d5a3d241a5e 1506 // TODO: parse cmdLine arg (ADDR=\d+)? --> g_I2C_deviceAddress7
whismanoid 53:3d5a3d241a5e 1507 cmdLine.parse_byte_hex("ADDR", g_I2C_deviceAddress7);
whismanoid 53:3d5a3d241a5e 1508 // TODO: parse cmdLine arg (RD=\d)? --> g_I2C_read_count
whismanoid 53:3d5a3d241a5e 1509 g_I2C_read_count = 0; // read count must be reset every command
whismanoid 53:3d5a3d241a5e 1510 cmdLine.parse_byte_dec("RD", g_I2C_read_count);
whismanoid 53:3d5a3d241a5e 1511 // TODO: parse cmdLine arg (CMD=\d)? --> g_I2C_command_regAddress
whismanoid 53:3d5a3d241a5e 1512 cmdLine.parse_byte_hex("CMD", g_I2C_command_regAddress);
whismanoid 53:3d5a3d241a5e 1513 switch (cmdLine[2])
whismanoid 53:3d5a3d241a5e 1514 {
whismanoid 53:3d5a3d241a5e 1515 case 'P': case 'p':
whismanoid 53:3d5a3d241a5e 1516 {
whismanoid 53:3d5a3d241a5e 1517 // %IP -- I2C probe
whismanoid 53:3d5a3d241a5e 1518 HuntAttachedI2CDevices(cmdLine, 0x03, 0x77);
whismanoid 53:3d5a3d241a5e 1519 }
whismanoid 53:3d5a3d241a5e 1520 break;
whismanoid 53:3d5a3d241a5e 1521 case 'C': case 'c':
whismanoid 53:3d5a3d241a5e 1522 {
whismanoid 53:3d5a3d241a5e 1523 bool isUpdatedI2CConfig = false;
whismanoid 53:3d5a3d241a5e 1524 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 53:3d5a3d241a5e 1525 // parse cmdLine arg (SCL=\d+(kHZ|MHZ)?)? --> g_I2C_SCL_Hz
whismanoid 53:3d5a3d241a5e 1526 if (cmdLine.parse_frequency_Hz("SCL", g_I2C_SCL_Hz))
whismanoid 53:3d5a3d241a5e 1527 {
whismanoid 53:3d5a3d241a5e 1528 isUpdatedI2CConfig = true;
whismanoid 53:3d5a3d241a5e 1529 // TODO1: validate g_I2C_SCL_Hz against system clock frequency F_CPU
whismanoid 53:3d5a3d241a5e 1530 if (g_I2C_SCL_Hz > limit_max_I2C_SCL_Hz)
whismanoid 53:3d5a3d241a5e 1531 {
whismanoid 53:3d5a3d241a5e 1532 g_I2C_SCL_Hz = limit_max_I2C_SCL_Hz;
whismanoid 53:3d5a3d241a5e 1533 }
whismanoid 53:3d5a3d241a5e 1534 if (g_I2C_SCL_Hz < limit_min_I2C_SCL_Hz)
whismanoid 53:3d5a3d241a5e 1535 {
whismanoid 53:3d5a3d241a5e 1536 g_I2C_SCL_Hz = limit_min_I2C_SCL_Hz;
whismanoid 53:3d5a3d241a5e 1537 }
whismanoid 53:3d5a3d241a5e 1538 }
whismanoid 53:3d5a3d241a5e 1539 if (isUpdatedI2CConfig)
whismanoid 53:3d5a3d241a5e 1540 {
whismanoid 53:3d5a3d241a5e 1541 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 53:3d5a3d241a5e 1542 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 53:3d5a3d241a5e 1543 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 53:3d5a3d241a5e 1544 i2cMaster.start();
whismanoid 53:3d5a3d241a5e 1545 i2cMaster.stop();
whismanoid 53:3d5a3d241a5e 1546 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 53:3d5a3d241a5e 1547 cmdLine.serial().printf(
whismanoid 53:3d5a3d241a5e 1548 "\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 53:3d5a3d241a5e 1549 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 53:3d5a3d241a5e 1550 (g_I2C_SCL_Hz / 1000.));
whismanoid 53:3d5a3d241a5e 1551 i2cMaster.start();
whismanoid 53:3d5a3d241a5e 1552 i2cMaster.stop();
whismanoid 53:3d5a3d241a5e 1553 }
whismanoid 53:3d5a3d241a5e 1554 }
whismanoid 53:3d5a3d241a5e 1555 break;
whismanoid 53:3d5a3d241a5e 1556 case 'W': case 'w':
whismanoid 53:3d5a3d241a5e 1557 {
whismanoid 53:3d5a3d241a5e 1558 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 53:3d5a3d241a5e 1559 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 53:3d5a3d241a5e 1560 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 53:3d5a3d241a5e 1561 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 53:3d5a3d241a5e 1562 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 53:3d5a3d241a5e 1563 #define MAX_I2C_BYTE_COUNT 32
whismanoid 53:3d5a3d241a5e 1564 size_t byteCount = byteCount;
whismanoid 53:3d5a3d241a5e 1565 static char mosiData[MAX_I2C_BYTE_COUNT];
whismanoid 53:3d5a3d241a5e 1566 static char misoData[MAX_I2C_BYTE_COUNT];
whismanoid 53:3d5a3d241a5e 1567 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 53:3d5a3d241a5e 1568 MAX_I2C_BYTE_COUNT))
whismanoid 53:3d5a3d241a5e 1569 {
whismanoid 53:3d5a3d241a5e 1570 // hex dump mosiData[0..byteCount-1]
whismanoid 53:3d5a3d241a5e 1571 cmdLine.serial().printf(
whismanoid 53:3d5a3d241a5e 1572 "\r\nADDR=0x%2.2x=(0x%2.2x>>1) byteCount:%d RD=%d\r\nI2C MOSI->",
whismanoid 53:3d5a3d241a5e 1573 g_I2C_deviceAddress7,
whismanoid 53:3d5a3d241a5e 1574 (g_I2C_deviceAddress7 << 1), byteCount, g_I2C_read_count);
whismanoid 53:3d5a3d241a5e 1575 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 53:3d5a3d241a5e 1576 {
whismanoid 53:3d5a3d241a5e 1577 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 53:3d5a3d241a5e 1578 }
whismanoid 53:3d5a3d241a5e 1579 //
whismanoid 53:3d5a3d241a5e 1580 // TODO: i2c transfer
whismanoid 53:3d5a3d241a5e 1581 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 53:3d5a3d241a5e 1582 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 53:3d5a3d241a5e 1583 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 53:3d5a3d241a5e 1584 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 53:3d5a3d241a5e 1585 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 53:3d5a3d241a5e 1586 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 53:3d5a3d241a5e 1587 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 53:3d5a3d241a5e 1588 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 53:3d5a3d241a5e 1589 // /* int */ i2cMaster.transfer (int addr8bit, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length, const event_callback_t &callback, int event=I2C_EVENT_TRANSFER_COMPLETE, bool repeated=false) // Start nonblocking I2C transfer. More...
whismanoid 53:3d5a3d241a5e 1590 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 53:3d5a3d241a5e 1591 const int addr8bit = g_I2C_deviceAddress7 << 1; // 8bit I2C address, 0x90
whismanoid 53:3d5a3d241a5e 1592 unsigned int misoLength = 0;
whismanoid 53:3d5a3d241a5e 1593 bool repeated = (g_I2C_read_count > 0);
whismanoid 53:3d5a3d241a5e 1594 //
whismanoid 53:3d5a3d241a5e 1595 int writeStatus = i2cMaster.write (addr8bit, mosiData, byteCount, repeated);
whismanoid 53:3d5a3d241a5e 1596 switch (writeStatus)
whismanoid 53:3d5a3d241a5e 1597 {
whismanoid 53:3d5a3d241a5e 1598 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 53:3d5a3d241a5e 1599 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 53:3d5a3d241a5e 1600 default: cmdLine.serial().printf(" {writeStatus 0x%2.2X} ",
whismanoid 53:3d5a3d241a5e 1601 writeStatus);
whismanoid 53:3d5a3d241a5e 1602 }
whismanoid 53:3d5a3d241a5e 1603 if (repeated)
whismanoid 53:3d5a3d241a5e 1604 {
whismanoid 53:3d5a3d241a5e 1605 int readStatus =
whismanoid 53:3d5a3d241a5e 1606 i2cMaster.read (addr8bit, misoData, g_I2C_read_count, false);
whismanoid 53:3d5a3d241a5e 1607 switch (readStatus)
whismanoid 53:3d5a3d241a5e 1608 {
whismanoid 53:3d5a3d241a5e 1609 case 1: cmdLine.serial().printf(" nack "); break;
whismanoid 53:3d5a3d241a5e 1610 case 0: cmdLine.serial().printf(" ack "); break;
whismanoid 53:3d5a3d241a5e 1611 default: cmdLine.serial().printf(" {readStatus 0x%2.2X} ",
whismanoid 53:3d5a3d241a5e 1612 readStatus);
whismanoid 53:3d5a3d241a5e 1613 }
whismanoid 53:3d5a3d241a5e 1614 }
whismanoid 53:3d5a3d241a5e 1615 //
whismanoid 53:3d5a3d241a5e 1616 if (misoLength > 0)
whismanoid 53:3d5a3d241a5e 1617 {
whismanoid 53:3d5a3d241a5e 1618 // hex dump misoData[0..byteCount-1]
whismanoid 53:3d5a3d241a5e 1619 cmdLine.serial().printf(" MISO<-");
whismanoid 53:3d5a3d241a5e 1620 for (unsigned int byteIndex = 0; byteIndex < g_I2C_read_count;
whismanoid 53:3d5a3d241a5e 1621 byteIndex++)
whismanoid 53:3d5a3d241a5e 1622 {
whismanoid 53:3d5a3d241a5e 1623 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 53:3d5a3d241a5e 1624 }
whismanoid 53:3d5a3d241a5e 1625 }
whismanoid 53:3d5a3d241a5e 1626 cmdLine.serial().printf(" ");
whismanoid 53:3d5a3d241a5e 1627 }
whismanoid 53:3d5a3d241a5e 1628 }
whismanoid 53:3d5a3d241a5e 1629 break;
whismanoid 53:3d5a3d241a5e 1630 case 'R': case 'r':
whismanoid 53:3d5a3d241a5e 1631 {
whismanoid 53:3d5a3d241a5e 1632 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 53:3d5a3d241a5e 1633 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 53:3d5a3d241a5e 1634 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 53:3d5a3d241a5e 1635 // %IR ADDR=? RD=? -- read
whismanoid 53:3d5a3d241a5e 1636 // TODO: i2c transfer
whismanoid 53:3d5a3d241a5e 1637 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 53:3d5a3d241a5e 1638 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 53:3d5a3d241a5e 1639 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 53:3d5a3d241a5e 1640 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 53:3d5a3d241a5e 1641 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 53:3d5a3d241a5e 1642 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 53:3d5a3d241a5e 1643 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 53:3d5a3d241a5e 1644 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 53:3d5a3d241a5e 1645 // /* int */ i2cMaster.transfer (int addr8bit, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length, const event_callback_t &callback, int event=I2C_EVENT_TRANSFER_COMPLETE, bool repeated=false) // Start nonblocking I2C transfer. More...
whismanoid 53:3d5a3d241a5e 1646 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 53:3d5a3d241a5e 1647 }
whismanoid 53:3d5a3d241a5e 1648 break;
whismanoid 53:3d5a3d241a5e 1649 case '^':
whismanoid 53:3d5a3d241a5e 1650 {
whismanoid 53:3d5a3d241a5e 1651 // declare in narrower scope: MAX32625MBED I2C i2cMaster(...)
whismanoid 53:3d5a3d241a5e 1652 I2C i2cMaster(I2C0_SDA, I2C0_SCL); // sda scl TARGET_MAX32635MBED: P1_6, P1_7 Arduino 10-pin header
whismanoid 53:3d5a3d241a5e 1653 i2cMaster.frequency(g_I2C_SCL_Hz);
whismanoid 53:3d5a3d241a5e 1654 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 53:3d5a3d241a5e 1655 // TODO: i2c transfer
whismanoid 53:3d5a3d241a5e 1656 //const int addr7bit = 0x48; // 7 bit I2C address
whismanoid 53:3d5a3d241a5e 1657 //const int addr8bit = 0x48 << 1; // 8bit I2C address, 0x90
whismanoid 53:3d5a3d241a5e 1658 // /* int */ i2cMaster.read (int addr8bit, char *data, int length, bool repeated=false) // Read from an I2C slave.
whismanoid 53:3d5a3d241a5e 1659 // /* int */ i2cMaster.read (int ack) // Read a single byte from the I2C bus.
whismanoid 53:3d5a3d241a5e 1660 // /* int */ i2cMaster.write (int addr8bit, const char *data, int length, bool repeated=false) // Write to an I2C slave.
whismanoid 53:3d5a3d241a5e 1661 // /* int */ i2cMaster.write (int data) // Write single byte out on the I2C bus.
whismanoid 53:3d5a3d241a5e 1662 // /* void */ i2cMaster.start (void) // Creates a start condition on the I2C bus.
whismanoid 53:3d5a3d241a5e 1663 // /* void */ i2cMaster.stop (void) // Creates a stop condition on the I2C bus.
whismanoid 53:3d5a3d241a5e 1664 // /* int */ i2cMaster.transfer (int addr8bit, const char *tx_buffer, int tx_length, char *rx_buffer, int rx_length, const event_callback_t &callback, int event=I2C_EVENT_TRANSFER_COMPLETE, bool repeated=false) // Start nonblocking I2C transfer. More...
whismanoid 53:3d5a3d241a5e 1665 // /* void */ i2cMaster.abort_transfer () // Abort the ongoing I2C transfer. More...
whismanoid 53:3d5a3d241a5e 1666 }
whismanoid 53:3d5a3d241a5e 1667 break;
whismanoid 53:3d5a3d241a5e 1668 } // switch(cmdLine[2])
whismanoid 53:3d5a3d241a5e 1669 break;
whismanoid 53:3d5a3d241a5e 1670 #endif
whismanoid 53:3d5a3d241a5e 1671 //
whismanoid 53:3d5a3d241a5e 1672 #if HAS_SPI // SUPPORT_SPI
whismanoid 53:3d5a3d241a5e 1673 case 'S': case 's':
whismanoid 53:3d5a3d241a5e 1674 {
whismanoid 53:3d5a3d241a5e 1675 // %S... -- SPI diagnostics
whismanoid 53:3d5a3d241a5e 1676 // %SC sclk=1Mhz -- SPI configure
whismanoid 53:3d5a3d241a5e 1677 // %SW -- write (write and read)
whismanoid 53:3d5a3d241a5e 1678 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 53:3d5a3d241a5e 1679 //
whismanoid 53:3d5a3d241a5e 1680 // Process arguments SCLK=\d+(kHZ|MHZ) CPOL=\d CPHA=\d
whismanoid 53:3d5a3d241a5e 1681 bool isUpdatedSPIConfig = false;
whismanoid 53:3d5a3d241a5e 1682 // parse cmdLine arg (CPOL=\d)? --> g_SPI_dataMode | SPI_MODE2
whismanoid 53:3d5a3d241a5e 1683 // parse cmdLine arg (CPHA=\d)? --> g_SPI_dataMode | SPI_MODE1
whismanoid 53:3d5a3d241a5e 1684 if (cmdLine.parse_flag("CPOL", g_SPI_dataMode, SPI_MODE2))
whismanoid 53:3d5a3d241a5e 1685 {
whismanoid 53:3d5a3d241a5e 1686 isUpdatedSPIConfig = true;
whismanoid 53:3d5a3d241a5e 1687 }
whismanoid 53:3d5a3d241a5e 1688 if (cmdLine.parse_flag("CPHA", g_SPI_dataMode, SPI_MODE1))
whismanoid 53:3d5a3d241a5e 1689 {
whismanoid 53:3d5a3d241a5e 1690 isUpdatedSPIConfig = true;
whismanoid 53:3d5a3d241a5e 1691 }
whismanoid 53:3d5a3d241a5e 1692 if (cmdLine.parse_flag("CS", g_SPI_cs_state, 1))
whismanoid 53:3d5a3d241a5e 1693 {
whismanoid 53:3d5a3d241a5e 1694 isUpdatedSPIConfig = true;
whismanoid 53:3d5a3d241a5e 1695 }
whismanoid 53:3d5a3d241a5e 1696 // parse cmdLine arg (SCLK=\d+(kHZ|MHZ)?)? --> g_SPI_SCLK_Hz
whismanoid 53:3d5a3d241a5e 1697 if (cmdLine.parse_frequency_Hz("SCLK", g_SPI_SCLK_Hz))
whismanoid 53:3d5a3d241a5e 1698 {
whismanoid 53:3d5a3d241a5e 1699 isUpdatedSPIConfig = true;
whismanoid 53:3d5a3d241a5e 1700 // TODO1: validate g_SPI_SCLK_Hz against system clock frequency F_CPU
whismanoid 53:3d5a3d241a5e 1701 if (g_SPI_SCLK_Hz > limit_max_SPI_SCLK_Hz)
whismanoid 53:3d5a3d241a5e 1702 {
whismanoid 53:3d5a3d241a5e 1703 g_SPI_SCLK_Hz = limit_max_SPI_SCLK_Hz;
whismanoid 53:3d5a3d241a5e 1704 }
whismanoid 53:3d5a3d241a5e 1705 if (g_SPI_SCLK_Hz < limit_min_SPI_SCLK_Hz)
whismanoid 53:3d5a3d241a5e 1706 {
whismanoid 53:3d5a3d241a5e 1707 g_SPI_SCLK_Hz = limit_min_SPI_SCLK_Hz;
whismanoid 53:3d5a3d241a5e 1708 }
whismanoid 53:3d5a3d241a5e 1709 }
whismanoid 53:3d5a3d241a5e 1710 // Update SPI configuration
whismanoid 53:3d5a3d241a5e 1711 if (isUpdatedSPIConfig)
whismanoid 53:3d5a3d241a5e 1712 {
whismanoid 53:3d5a3d241a5e 1713 // %SC sclk=1Mhz -- SPI configure
whismanoid 53:3d5a3d241a5e 1714 spi_cs = g_SPI_cs_state;
whismanoid 53:3d5a3d241a5e 1715 spi.format(8,g_SPI_dataMode); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0
whismanoid 53:3d5a3d241a5e 1716 #if APPLICATION_MAX5715
whismanoid 53:3d5a3d241a5e 1717 g_MAX5715_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 53:3d5a3d241a5e 1718 #elif APPLICATION_MAX11131
whismanoid 53:3d5a3d241a5e 1719 g_MAX11131_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 53:3d5a3d241a5e 1720 #elif APPLICATION_MAX5171
whismanoid 53:3d5a3d241a5e 1721 g_MAX5171_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 53:3d5a3d241a5e 1722 #elif APPLICATION_MAX11410
whismanoid 53:3d5a3d241a5e 1723 g_MAX11410_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 53:3d5a3d241a5e 1724 #elif APPLICATION_MAX12345
whismanoid 53:3d5a3d241a5e 1725 g_MAX12345_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 53:3d5a3d241a5e 1726 #else
whismanoid 53:3d5a3d241a5e 1727 spi.frequency(g_SPI_SCLK_Hz); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 53:3d5a3d241a5e 1728 #endif
whismanoid 53:3d5a3d241a5e 1729 //
whismanoid 53:3d5a3d241a5e 1730 double ideal_divisor = ((double)SystemCoreClock) / g_SPI_SCLK_Hz;
whismanoid 53:3d5a3d241a5e 1731 int actual_divisor = (int)(ideal_divisor + 0.0); // frequency divisor truncate
whismanoid 53:3d5a3d241a5e 1732 double actual_SCLK_Hz = SystemCoreClock / actual_divisor;
whismanoid 53:3d5a3d241a5e 1733 //
whismanoid 53:3d5a3d241a5e 1734 // fixed: mbed-os-5.11: [Warning] format '%d' expects argument of type 'int', but argument 6 has type 'uint32_t {aka long unsigned int}' [-Wformat=]
whismanoid 53:3d5a3d241a5e 1735 cmdLine.serial().printf(
whismanoid 53:3d5a3d241a5e 1736 "\r\n %%SC CPOL=%d CPHA=%d CS=%d SCLK=%ld=%1.3fMHz (%1.1fMHz/%1.2f = actual %1.3fMHz) -- SPI config",
whismanoid 53:3d5a3d241a5e 1737 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 53:3d5a3d241a5e 1738 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0),
whismanoid 53:3d5a3d241a5e 1739 g_SPI_cs_state,
whismanoid 53:3d5a3d241a5e 1740 g_SPI_SCLK_Hz,
whismanoid 53:3d5a3d241a5e 1741 (g_SPI_SCLK_Hz / 1000000.),
whismanoid 53:3d5a3d241a5e 1742 ((double)(SystemCoreClock / 1000000.)),
whismanoid 53:3d5a3d241a5e 1743 ideal_divisor,
whismanoid 53:3d5a3d241a5e 1744 (actual_SCLK_Hz / 1000000.)
whismanoid 53:3d5a3d241a5e 1745 );
whismanoid 53:3d5a3d241a5e 1746 }
whismanoid 53:3d5a3d241a5e 1747 // get next character
whismanoid 53:3d5a3d241a5e 1748 switch (cmdLine[2])
whismanoid 53:3d5a3d241a5e 1749 {
whismanoid 53:3d5a3d241a5e 1750 case 'C': case 's':
whismanoid 53:3d5a3d241a5e 1751 // %SC sclk=1Mhz -- SPI configure
whismanoid 53:3d5a3d241a5e 1752 break;
whismanoid 55:75c249929a5e 1753 case 'D': case 'd':
whismanoid 55:75c249929a5e 1754 // %SD -- SPI diagnostic messages enable
whismanoid 55:75c249929a5e 1755 if (g_MAX11043_device.onSPIprint) {
whismanoid 55:75c249929a5e 1756 g_MAX11043_device.onSPIprint = NULL;
whismanoid 55:75c249929a5e 1757 }
whismanoid 55:75c249929a5e 1758 else {
whismanoid 55:75c249929a5e 1759 void onSPIprint_handler(size_t byteCount, uint8_t mosiData[], uint8_t misoData[]);
whismanoid 55:75c249929a5e 1760 g_MAX11043_device.onSPIprint = onSPIprint_handler;
whismanoid 55:75c249929a5e 1761 }
whismanoid 55:75c249929a5e 1762 break;
whismanoid 53:3d5a3d241a5e 1763 case 'W': case 'R': case 'w': case 'r':
whismanoid 53:3d5a3d241a5e 1764 {
whismanoid 53:3d5a3d241a5e 1765 // %SW -- write (write and read)
whismanoid 53:3d5a3d241a5e 1766 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 53:3d5a3d241a5e 1767 // parse cmdLine byte list --> int byteCount; int mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 53:3d5a3d241a5e 1768 #define MAX_SPI_BYTE_COUNT 32
whismanoid 53:3d5a3d241a5e 1769 size_t byteCount = byteCount;
whismanoid 53:3d5a3d241a5e 1770 static char mosiData[MAX_SPI_BYTE_COUNT];
whismanoid 53:3d5a3d241a5e 1771 static char misoData[MAX_SPI_BYTE_COUNT];
whismanoid 53:3d5a3d241a5e 1772 if (cmdLine.parse_byteCount_byteList_hex(byteCount, mosiData,
whismanoid 53:3d5a3d241a5e 1773 MAX_SPI_BYTE_COUNT))
whismanoid 53:3d5a3d241a5e 1774 {
whismanoid 53:3d5a3d241a5e 1775 // hex dump mosiData[0..byteCount-1]
whismanoid 53:3d5a3d241a5e 1776 cmdLine.serial().printf("\r\nSPI");
whismanoid 53:3d5a3d241a5e 1777 if (byteCount > 7) {
whismanoid 53:3d5a3d241a5e 1778 cmdLine.serial().printf(" byteCount:%d", byteCount);
whismanoid 53:3d5a3d241a5e 1779 }
whismanoid 53:3d5a3d241a5e 1780 cmdLine.serial().printf(" MOSI->");
whismanoid 53:3d5a3d241a5e 1781 for (unsigned int byteIndex = 0; byteIndex < byteCount; byteIndex++)
whismanoid 53:3d5a3d241a5e 1782 {
whismanoid 53:3d5a3d241a5e 1783 cmdLine.serial().printf(" 0x%2.2X", mosiData[byteIndex]);
whismanoid 53:3d5a3d241a5e 1784 }
whismanoid 53:3d5a3d241a5e 1785 spi_cs = 0;
whismanoid 53:3d5a3d241a5e 1786 unsigned int numBytesTransferred =
whismanoid 53:3d5a3d241a5e 1787 spi.write(mosiData, byteCount, misoData, byteCount);
whismanoid 53:3d5a3d241a5e 1788 spi_cs = 1;
whismanoid 53:3d5a3d241a5e 1789 // hex dump misoData[0..byteCount-1]
whismanoid 53:3d5a3d241a5e 1790 cmdLine.serial().printf(" MISO<-");
whismanoid 53:3d5a3d241a5e 1791 for (unsigned int byteIndex = 0; byteIndex < numBytesTransferred;
whismanoid 53:3d5a3d241a5e 1792 byteIndex++)
whismanoid 53:3d5a3d241a5e 1793 {
whismanoid 53:3d5a3d241a5e 1794 cmdLine.serial().printf(" 0x%2.2X", misoData[byteIndex]);
whismanoid 53:3d5a3d241a5e 1795 }
whismanoid 53:3d5a3d241a5e 1796 cmdLine.serial().printf(" ");
whismanoid 53:3d5a3d241a5e 1797 }
whismanoid 53:3d5a3d241a5e 1798 }
whismanoid 53:3d5a3d241a5e 1799 break;
whismanoid 53:3d5a3d241a5e 1800 } // switch(cmdLine[2])
whismanoid 53:3d5a3d241a5e 1801 } // case 'S': // %S... -- SPI diagnostics
whismanoid 53:3d5a3d241a5e 1802 break;
whismanoid 53:3d5a3d241a5e 1803 #endif
whismanoid 53:3d5a3d241a5e 1804 //
whismanoid 53:3d5a3d241a5e 1805 // A-Z,a-z,0-9 reserved for application use
whismanoid 53:3d5a3d241a5e 1806 } // switch(cmdLine[1])
whismanoid 53:3d5a3d241a5e 1807 } // end void pinsMonitor_submenu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 53:3d5a3d241a5e 1808
whismanoid 53:3d5a3d241a5e 1809
whismanoid 53:3d5a3d241a5e 1810 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1811 void main_menu_status(CmdLine & cmdLine)
whismanoid 53:3d5a3d241a5e 1812 {
whismanoid 53:3d5a3d241a5e 1813 cmdLine.serial().printf("\r\nMain menu");
whismanoid 53:3d5a3d241a5e 1814
whismanoid 53:3d5a3d241a5e 1815 cmdLine.serial().printf(" MAX11043 24-bit 200ksps Delta-Sigma ADC");
whismanoid 53:3d5a3d241a5e 1816
whismanoid 53:3d5a3d241a5e 1817 //cmdLine.serial().print(" %s", TARGET_NAME);
whismanoid 53:3d5a3d241a5e 1818 if (cmdLine.nameStr())
whismanoid 53:3d5a3d241a5e 1819 {
whismanoid 53:3d5a3d241a5e 1820 cmdLine.serial().printf(" [%s]", cmdLine.nameStr());
whismanoid 53:3d5a3d241a5e 1821
whismanoid 53:3d5a3d241a5e 1822 }
whismanoid 53:3d5a3d241a5e 1823 cmdLine.serial().printf("\r\n ? -- help");
whismanoid 53:3d5a3d241a5e 1824
whismanoid 53:3d5a3d241a5e 1825 }
whismanoid 53:3d5a3d241a5e 1826
whismanoid 53:3d5a3d241a5e 1827
whismanoid 53:3d5a3d241a5e 1828 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1829 void main_menu_help(CmdLine & cmdLine)
whismanoid 53:3d5a3d241a5e 1830 {
whismanoid 53:3d5a3d241a5e 1831 // ? -- help
whismanoid 53:3d5a3d241a5e 1832 //~ cmdLine.serial().print(F("\r\nMenu:"));
whismanoid 53:3d5a3d241a5e 1833 cmdLine.serial().printf("\r\n # -- lines beginning with # are comments");
whismanoid 53:3d5a3d241a5e 1834
whismanoid 53:3d5a3d241a5e 1835 cmdLine.serial().printf("\r\n . -- SelfTest");
whismanoid 53:3d5a3d241a5e 1836
whismanoid 53:3d5a3d241a5e 1837 //cmdLine.serial().print(F("\r\n ! -- Initial Configuration"));
whismanoid 53:3d5a3d241a5e 1838 //
whismanoid 53:3d5a3d241a5e 1839 // % standardize diagnostic commands
whismanoid 53:3d5a3d241a5e 1840 // %Hpin -- digital output high
whismanoid 53:3d5a3d241a5e 1841 // %Lpin -- digital output low
whismanoid 53:3d5a3d241a5e 1842 // %?pin -- digital input
whismanoid 53:3d5a3d241a5e 1843 // %A %Apin -- analog input
whismanoid 53:3d5a3d241a5e 1844 // %Ppin df=xx -- pwm output
whismanoid 53:3d5a3d241a5e 1845 // %Wpin -- measure high pulsewidth input in usec
whismanoid 53:3d5a3d241a5e 1846 // %wpin -- measure low pulsewidth input in usec
whismanoid 53:3d5a3d241a5e 1847 // %I... -- I2C diagnostics
whismanoid 53:3d5a3d241a5e 1848 // %IP -- I2C probe
whismanoid 53:3d5a3d241a5e 1849 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 53:3d5a3d241a5e 1850 // %IW ADDR=? cmd=? data,data,data -- write
whismanoid 53:3d5a3d241a5e 1851 // %IR ADDR=? RD=? -- read
whismanoid 53:3d5a3d241a5e 1852 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 53:3d5a3d241a5e 1853 // %S... -- SPI diagnostics
whismanoid 53:3d5a3d241a5e 1854 // %SC sclk=1Mhz -- SPI configure
whismanoid 53:3d5a3d241a5e 1855 // %SW -- write (write and read)
whismanoid 53:3d5a3d241a5e 1856 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 53:3d5a3d241a5e 1857 // A-Z,a-z,0-9 reserved for application use
whismanoid 53:3d5a3d241a5e 1858 //
whismanoid 53:3d5a3d241a5e 1859 #if HAS_digitalInOuts
whismanoid 53:3d5a3d241a5e 1860 // %Hpin -- digital output high
whismanoid 53:3d5a3d241a5e 1861 // %Lpin -- digital output low
whismanoid 53:3d5a3d241a5e 1862 // %?pin -- digital input
whismanoid 53:3d5a3d241a5e 1863 cmdLine.serial().printf("\r\n %%Hn {pin:");
whismanoid 53:3d5a3d241a5e 1864 list_digitalInOutPins(cmdLine.serial());
whismanoid 53:3d5a3d241a5e 1865 cmdLine.serial().printf("} -- High Output");
whismanoid 53:3d5a3d241a5e 1866 cmdLine.serial().printf("\r\n %%Ln {pin:");
whismanoid 53:3d5a3d241a5e 1867 list_digitalInOutPins(cmdLine.serial());
whismanoid 53:3d5a3d241a5e 1868 cmdLine.serial().printf("} -- Low Output");
whismanoid 53:3d5a3d241a5e 1869 cmdLine.serial().printf("\r\n %%?n {pin:");
whismanoid 53:3d5a3d241a5e 1870 list_digitalInOutPins(cmdLine.serial());
whismanoid 53:3d5a3d241a5e 1871 cmdLine.serial().printf("} -- Input");
whismanoid 53:3d5a3d241a5e 1872 #endif
whismanoid 53:3d5a3d241a5e 1873
whismanoid 53:3d5a3d241a5e 1874 #if HAS_analogIns
whismanoid 53:3d5a3d241a5e 1875 // Menu A) analogRead A0..7
whismanoid 53:3d5a3d241a5e 1876 // %A %Apin -- analog input
whismanoid 53:3d5a3d241a5e 1877 // analogRead(pinIndex) // analog input pins A0, A1, A2, A3, A4, A5; float voltage = analogRead(A0) * (5.0 / 1023.0)
whismanoid 53:3d5a3d241a5e 1878 cmdLine.serial().printf("\r\n %%A -- analogRead");
whismanoid 53:3d5a3d241a5e 1879 #endif
whismanoid 53:3d5a3d241a5e 1880
whismanoid 53:3d5a3d241a5e 1881 #if HAS_SPI2_MAX541
whismanoid 53:3d5a3d241a5e 1882 // TODO1: MAX541 max541(spi2_max541, spi2_max541_cs);
whismanoid 53:3d5a3d241a5e 1883 cmdLine.serial().printf("\r\n %%D -- DAC output MAX541 (SPI2)");
whismanoid 53:3d5a3d241a5e 1884 #endif
whismanoid 53:3d5a3d241a5e 1885
whismanoid 53:3d5a3d241a5e 1886 #if HAS_I2C // SUPPORT_I2C
whismanoid 53:3d5a3d241a5e 1887 // TODO: support I2C HAS_I2C // SUPPORT_I2C
whismanoid 53:3d5a3d241a5e 1888 // VERIFY: I2C utility commands SUPPORT_I2C
whismanoid 53:3d5a3d241a5e 1889 // VERIFY: report g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)) from last Wire_Sr.setClock(I2C_SCL_Hz);
whismanoid 53:3d5a3d241a5e 1890 // %I... -- I2C diagnostics
whismanoid 53:3d5a3d241a5e 1891 // %IP -- I2C probe
whismanoid 53:3d5a3d241a5e 1892 // %IC scl=100khz ADDR=? -- I2C configure
whismanoid 53:3d5a3d241a5e 1893 // %IW byte byte ... byte RD=? ADDR=0x -- write
whismanoid 53:3d5a3d241a5e 1894 // %IR ADDR=? RD=? -- read
whismanoid 53:3d5a3d241a5e 1895 // %I^ cmd=? -- i2c_smbus_read_word_data
whismanoid 53:3d5a3d241a5e 1896 //g_I2C_SCL_Hz = (F_CPU / ((TWBR * 2) + 16)); // 'F_CPU' 'TWBR' not declared in this scope
whismanoid 53:3d5a3d241a5e 1897 cmdLine.serial().printf("\r\n %%IC ADDR=0x%2.2x=(0x%2.2x>>1) SCL=%d=%1.3fkHz -- I2C config",
whismanoid 53:3d5a3d241a5e 1898 g_I2C_deviceAddress7, (g_I2C_deviceAddress7 << 1), g_I2C_SCL_Hz,
whismanoid 53:3d5a3d241a5e 1899 (g_I2C_SCL_Hz / 1000.));
whismanoid 53:3d5a3d241a5e 1900 cmdLine.serial().printf("\r\n %%IW byte byte ... byte RD=? ADDR=0x%2.2x -- I2C write/read",
whismanoid 53:3d5a3d241a5e 1901 g_I2C_deviceAddress7);
whismanoid 53:3d5a3d241a5e 1902 //
whismanoid 53:3d5a3d241a5e 1903 #if SUPPORT_I2C
whismanoid 53:3d5a3d241a5e 1904 // Menu ^ cmd=?) i2c_smbus_read_word_data
whismanoid 53:3d5a3d241a5e 1905 cmdLine.serial().printf("\r\n %%I^ cmd=? -- i2c_smbus_read_word_data");
whismanoid 53:3d5a3d241a5e 1906 // test low-level I2C i2c_smbus_read_word_data
whismanoid 53:3d5a3d241a5e 1907 #endif // SUPPORT_I2C
whismanoid 53:3d5a3d241a5e 1908 //cmdLine.serial().printf(" H) Hunt for attached I2C devices");
whismanoid 53:3d5a3d241a5e 1909 cmdLine.serial().printf("\r\n %%IP -- I2C Probe for attached devices");
whismanoid 53:3d5a3d241a5e 1910 // cmdLine.serial().printf(" s) search i2c address");
whismanoid 53:3d5a3d241a5e 1911 #endif // SUPPORT_I2C
whismanoid 53:3d5a3d241a5e 1912
whismanoid 53:3d5a3d241a5e 1913 #if HAS_SPI // SUPPORT_SPI
whismanoid 53:3d5a3d241a5e 1914 // TODO: support SPI HAS_SPI // SUPPORT_SPI
whismanoid 53:3d5a3d241a5e 1915 // SPI test command S (mosiData)+
whismanoid 53:3d5a3d241a5e 1916 // %S... -- SPI diagnostics
whismanoid 53:3d5a3d241a5e 1917 // %SC sclk=1Mhz -- SPI configure
whismanoid 53:3d5a3d241a5e 1918 // %SW -- write (write and read)
whismanoid 53:3d5a3d241a5e 1919 // %SR -- read (alias for %SW because SPI always write and read)
whismanoid 53:3d5a3d241a5e 1920 // spi.format(8,0); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=0 rising edge (initial default)
whismanoid 53:3d5a3d241a5e 1921 // spi.format(8,1); // int bits_must_be_8, int mode=0_3 CPOL=0,CPHA=1 falling edge (initial default)
whismanoid 53:3d5a3d241a5e 1922 // spi.format(8,2); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=0 falling edge (initial default)
whismanoid 53:3d5a3d241a5e 1923 // spi.format(8,3); // int bits_must_be_8, int mode=0_3 CPOL=1,CPHA=1 rising edge (initial default)
whismanoid 53:3d5a3d241a5e 1924 // spi.frequency(1000000); // int SCLK_Hz=1000000 = 1MHz (initial default)
whismanoid 53:3d5a3d241a5e 1925 // mode | POL PHA
whismanoid 53:3d5a3d241a5e 1926 // -----+--------
whismanoid 53:3d5a3d241a5e 1927 // 0 | 0 0
whismanoid 53:3d5a3d241a5e 1928 // 1 | 0 1
whismanoid 53:3d5a3d241a5e 1929 // 2 | 1 0
whismanoid 53:3d5a3d241a5e 1930 // 3 | 1 1
whismanoid 53:3d5a3d241a5e 1931 //cmdLine.serial().printf(" S) SPI mosi,mosi,...mosi hex bytes SCLK=1000000 CPOL=0 CPHA=0");
whismanoid 53:3d5a3d241a5e 1932 // fixed: mbed-os-5.11: [Warning] format '%d' expects argument of type 'int', but argument 3 has type 'uint32_t {aka long unsigned int}' [-Wformat=]
whismanoid 53:3d5a3d241a5e 1933 cmdLine.serial().printf("\r\n %%SC SCLK=%ld=%1.3fMHz CPOL=%d CPHA=%d -- SPI config",
whismanoid 53:3d5a3d241a5e 1934 g_SPI_SCLK_Hz, (g_SPI_SCLK_Hz / 1000000.),
whismanoid 53:3d5a3d241a5e 1935 ((g_SPI_dataMode & SPI_MODE2) ? 1 : 0),
whismanoid 53:3d5a3d241a5e 1936 ((g_SPI_dataMode & SPI_MODE1) ? 1 : 0));
whismanoid 53:3d5a3d241a5e 1937 cmdLine.serial().printf("\r\n %%SW mosi,mosi,...mosi -- SPI write hex bytes");
whismanoid 53:3d5a3d241a5e 1938 // VERIFY: parse new SPI settings parse_strCommandArgs() SCLK=1000000 CPOL=0 CPHA=0
whismanoid 53:3d5a3d241a5e 1939 #endif // SUPPORT_SPI
whismanoid 53:3d5a3d241a5e 1940 //
whismanoid 53:3d5a3d241a5e 1941 // Application-specific commands (help text) here
whismanoid 53:3d5a3d241a5e 1942 //
whismanoid 53:3d5a3d241a5e 1943 #if APPLICATION_ArduinoPinsMonitor
whismanoid 53:3d5a3d241a5e 1944 cmdLine.serial().printf("\r\n A-Z,a-z,0-9 -- reserved for application use"); // ArduinoPinsMonitor
whismanoid 53:3d5a3d241a5e 1945 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 53:3d5a3d241a5e 1946 //
whismanoid 53:3d5a3d241a5e 1947
whismanoid 53:3d5a3d241a5e 1948 extern bool MAX11043_menu_help(CmdLine & cmdLine); // defined in Test_Menu_MAX11043.cpp\n
whismanoid 53:3d5a3d241a5e 1949 MAX11043_menu_help(cmdLine);
whismanoid 53:3d5a3d241a5e 1950 }
whismanoid 53:3d5a3d241a5e 1951
whismanoid 53:3d5a3d241a5e 1952
whismanoid 53:3d5a3d241a5e 1953
whismanoid 53:3d5a3d241a5e 1954 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 1955 // main menu command-line parser
whismanoid 53:3d5a3d241a5e 1956 // invoked by CmdLine::append(char ch) or CmdLine::idleAppendIfReadable()
whismanoid 53:3d5a3d241a5e 1957 void main_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 53:3d5a3d241a5e 1958 {
whismanoid 53:3d5a3d241a5e 1959 // DIAGNOSTIC: print line buffer
whismanoid 53:3d5a3d241a5e 1960 //~ cmdLine.serial().printf("\r\nmain_menu_onEOLcommandParser: ~%s~\r\n", cmdLine.str());
whismanoid 53:3d5a3d241a5e 1961 //
whismanoid 53:3d5a3d241a5e 1962 switch (cmdLine[0])
whismanoid 53:3d5a3d241a5e 1963 {
whismanoid 53:3d5a3d241a5e 1964 case '?':
whismanoid 53:3d5a3d241a5e 1965 main_menu_status(cmdLine);
whismanoid 53:3d5a3d241a5e 1966 main_menu_help(cmdLine);
whismanoid 53:3d5a3d241a5e 1967 // print command prompt
whismanoid 53:3d5a3d241a5e 1968 //cmdLine.serial().printf("\r\n>");
whismanoid 53:3d5a3d241a5e 1969 break;
whismanoid 53:3d5a3d241a5e 1970 case '\r': case '\n': // ignore blank line
whismanoid 53:3d5a3d241a5e 1971 case '\0': // ignore empty line
whismanoid 53:3d5a3d241a5e 1972 case '#': // ignore comment line
whismanoid 53:3d5a3d241a5e 1973 // # -- lines beginning with # are comments
whismanoid 53:3d5a3d241a5e 1974 main_menu_status(cmdLine);
whismanoid 53:3d5a3d241a5e 1975 //~ main_menu_help(cmdLine);
whismanoid 53:3d5a3d241a5e 1976 // print command prompt
whismanoid 53:3d5a3d241a5e 1977 //cmdLine.serial().printf("\r\n>");
whismanoid 53:3d5a3d241a5e 1978 break;
whismanoid 53:3d5a3d241a5e 1979 #if ECHO_EOF_ON_EOL
whismanoid 53:3d5a3d241a5e 1980 case '\x04': // Unicode (U+0004) EOT END OF TRANSMISSION = CTRL+D as EOF end of file
whismanoid 53:3d5a3d241a5e 1981 cmdLine.serial().printf("\x04"); // immediately echo EOF for test scripting
whismanoid 53:3d5a3d241a5e 1982 diagnostic_led_EOF();
whismanoid 53:3d5a3d241a5e 1983 break;
whismanoid 53:3d5a3d241a5e 1984 case '\x1a': // Unicode (U+001A) SUB SUBSTITUTE = CTRL+Z as EOF end of file
whismanoid 53:3d5a3d241a5e 1985 cmdLine.serial().printf("\x1a"); // immediately echo EOF for test scripting
whismanoid 53:3d5a3d241a5e 1986 diagnostic_led_EOF();
whismanoid 53:3d5a3d241a5e 1987 break;
whismanoid 53:3d5a3d241a5e 1988 #endif
whismanoid 53:3d5a3d241a5e 1989 #if APPLICATION_ArduinoPinsMonitor
whismanoid 53:3d5a3d241a5e 1990 case '.':
whismanoid 53:3d5a3d241a5e 1991 {
whismanoid 53:3d5a3d241a5e 1992 // . -- SelfTest
whismanoid 53:3d5a3d241a5e 1993 cmdLine.serial().printf("SelfTest()");
whismanoid 53:3d5a3d241a5e 1994 SelfTest(cmdLine);
whismanoid 53:3d5a3d241a5e 1995 }
whismanoid 53:3d5a3d241a5e 1996 break;
whismanoid 53:3d5a3d241a5e 1997 case '%':
whismanoid 53:3d5a3d241a5e 1998 {
whismanoid 53:3d5a3d241a5e 1999 pinsMonitor_submenu_onEOLcommandParser(cmdLine);
whismanoid 53:3d5a3d241a5e 2000 }
whismanoid 53:3d5a3d241a5e 2001 break; // case '%'
whismanoid 53:3d5a3d241a5e 2002 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 53:3d5a3d241a5e 2003 //
whismanoid 53:3d5a3d241a5e 2004 // Application-specific commands here
whismanoid 53:3d5a3d241a5e 2005 // alphanumeric command codes A-Z,a-z,0-9 reserved for application use
whismanoid 53:3d5a3d241a5e 2006 //
whismanoid 53:3d5a3d241a5e 2007 #if APPLICATION_ArduinoPinsMonitor
whismanoid 53:3d5a3d241a5e 2008 #endif // APPLICATION_ArduinoPinsMonitor
whismanoid 53:3d5a3d241a5e 2009
whismanoid 53:3d5a3d241a5e 2010 //
whismanoid 53:3d5a3d241a5e 2011 // add new commands here
whismanoid 53:3d5a3d241a5e 2012 //
whismanoid 53:3d5a3d241a5e 2013 default:
whismanoid 53:3d5a3d241a5e 2014 extern bool MAX11043_menu_onEOLcommandParser(CmdLine & cmdLine); // defined in Test_Menu_MAX11043.cpp
whismanoid 53:3d5a3d241a5e 2015 if (!MAX11043_menu_onEOLcommandParser(cmdLine))
whismanoid 53:3d5a3d241a5e 2016 { // not_handled_by_device_submenu
whismanoid 53:3d5a3d241a5e 2017 cmdLine.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n", cmdLine.str()[0], cmdLine.str());
whismanoid 53:3d5a3d241a5e 2018
whismanoid 53:3d5a3d241a5e 2019 # if HAS_DAPLINK_SERIAL
whismanoid 53:3d5a3d241a5e 2020 cmdLine_DAPLINKserial.serial().printf("\r\n unknown command 0x%2.2x \"%s\"\r\n", cmdLine.str()[0], cmdLine.str());
whismanoid 53:3d5a3d241a5e 2021
whismanoid 53:3d5a3d241a5e 2022 # endif // HAS_DAPLINK_SERIAL
whismanoid 53:3d5a3d241a5e 2023 }
whismanoid 53:3d5a3d241a5e 2024 } // switch (cmdLine[0])
whismanoid 53:3d5a3d241a5e 2025 //
whismanoid 53:3d5a3d241a5e 2026 // print command prompt
whismanoid 53:3d5a3d241a5e 2027 cmdLine.serial().printf("\r\nMAX11043 > ");
whismanoid 53:3d5a3d241a5e 2028
whismanoid 53:3d5a3d241a5e 2029 } // end void main_menu_onEOLcommandParser(CmdLine & cmdLine)
whismanoid 53:3d5a3d241a5e 2030
whismanoid 53:3d5a3d241a5e 2031 //--------------------------------------------------
whismanoid 54:26a973c5dac4 2032 #if MAX11043_ONSPIPRINT
whismanoid 54:26a973c5dac4 2033 // Optional Diagnostic function to print SPI transactions
whismanoid 54:26a973c5dac4 2034 void onSPIprint_handler(size_t byteCount, uint8_t mosiData[], uint8_t misoData[])
whismanoid 54:26a973c5dac4 2035 {
whismanoid 54:26a973c5dac4 2036 cmdLine_serial.serial().printf("\r\nSPI MOSI->");
whismanoid 54:26a973c5dac4 2037 for (uint8_t index = 0; index < byteCount; index++) {
whismanoid 54:26a973c5dac4 2038 cmdLine_serial.serial().printf(" 0x%2.2X", mosiData[index]);
whismanoid 54:26a973c5dac4 2039 }
whismanoid 54:26a973c5dac4 2040 cmdLine_serial.serial().printf(" MISO<-");
whismanoid 54:26a973c5dac4 2041 for (uint8_t index = 0; index < byteCount; index++) {
whismanoid 54:26a973c5dac4 2042 cmdLine_serial.serial().printf(" 0x%2.2X", misoData[index]);
whismanoid 54:26a973c5dac4 2043 }
whismanoid 54:26a973c5dac4 2044 cmdLine_serial.serial().printf(" ");
whismanoid 54:26a973c5dac4 2045 }
whismanoid 54:26a973c5dac4 2046 #endif // MAX11043_ONSPIPRINT
whismanoid 54:26a973c5dac4 2047
whismanoid 54:26a973c5dac4 2048 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 2049 void InitializeConfiguration()
whismanoid 53:3d5a3d241a5e 2050 {
whismanoid 53:3d5a3d241a5e 2051 // CODE GENERATOR: example code: member function Init
whismanoid 53:3d5a3d241a5e 2052 # if HAS_DAPLINK_SERIAL
whismanoid 53:3d5a3d241a5e 2053 cmdLine_DAPLINKserial.serial().printf("\r\nMAX11043_Init()");
whismanoid 53:3d5a3d241a5e 2054
whismanoid 53:3d5a3d241a5e 2055 # endif
whismanoid 53:3d5a3d241a5e 2056 cmdLine_serial.serial().printf("\r\nMAX11043_Init()");
whismanoid 53:3d5a3d241a5e 2057
whismanoid 53:3d5a3d241a5e 2058 // Initialize MAX11043 and verify device ID
whismanoid 53:3d5a3d241a5e 2059 if (g_MAX11043_device.Init() == 0)
whismanoid 53:3d5a3d241a5e 2060 { // init failed; try "safe mode" SPI at slower SCLK rate
whismanoid 54:26a973c5dac4 2061 cmdLine_serial.serial().printf("\r\nMAX11043 Init failed; retry at SPI SCLK frequency 2000000 Hz\r\n");
whismanoid 54:26a973c5dac4 2062
whismanoid 53:3d5a3d241a5e 2063 g_SPI_SCLK_Hz = 2000000;
whismanoid 53:3d5a3d241a5e 2064 g_MAX11043_device.spi_frequency(2000000);
whismanoid 53:3d5a3d241a5e 2065 g_MAX11043_device.Init();
whismanoid 53:3d5a3d241a5e 2066 }
whismanoid 53:3d5a3d241a5e 2067 // CODE GENERATOR: get spi properties from device
whismanoid 53:3d5a3d241a5e 2068 if (g_SPI_SCLK_Hz > g_MAX11043_device.get_spi_frequency())
whismanoid 53:3d5a3d241a5e 2069 { // Device limits SPI SCLK frequency
whismanoid 53:3d5a3d241a5e 2070 g_SPI_SCLK_Hz = g_MAX11043_device.get_spi_frequency();
whismanoid 54:26a973c5dac4 2071 cmdLine_serial.serial().printf("\r\nMAX11043 limits SPI SCLK frequency to %d Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 54:26a973c5dac4 2072
whismanoid 53:3d5a3d241a5e 2073 g_MAX11043_device.Init();
whismanoid 53:3d5a3d241a5e 2074 }
whismanoid 53:3d5a3d241a5e 2075 if (g_MAX11043_device.get_spi_frequency() > g_SPI_SCLK_Hz)
whismanoid 53:3d5a3d241a5e 2076 { // Platform limits SPI SCLK frequency
whismanoid 53:3d5a3d241a5e 2077 g_MAX11043_device.spi_frequency(g_SPI_SCLK_Hz);
whismanoid 54:26a973c5dac4 2078 cmdLine_serial.serial().printf("\r\nPlatform limits MAX11043 SPI SCLK frequency to %d Hz\r\n", g_SPI_SCLK_Hz);
whismanoid 54:26a973c5dac4 2079
whismanoid 53:3d5a3d241a5e 2080 g_MAX11043_device.Init();
whismanoid 53:3d5a3d241a5e 2081 }
whismanoid 53:3d5a3d241a5e 2082 g_SPI_dataMode = g_MAX11043_device.get_spi_dataMode();
whismanoid 53:3d5a3d241a5e 2083
whismanoid 53:3d5a3d241a5e 2084 # if MAX11043_ONSPIPRINT
whismanoid 53:3d5a3d241a5e 2085 // Optional Diagnostic function to print SPI transactions
whismanoid 53:3d5a3d241a5e 2086 g_MAX11043_device.onSPIprint = onSPIprint_handler;
whismanoid 53:3d5a3d241a5e 2087 # endif
whismanoid 53:3d5a3d241a5e 2088 }
whismanoid 53:3d5a3d241a5e 2089
whismanoid 53:3d5a3d241a5e 2090 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 2091 // diagnostic rbg led GREEN
whismanoid 53:3d5a3d241a5e 2092 void diagnostic_led_EOF()
whismanoid 53:3d5a3d241a5e 2093 {
whismanoid 53:3d5a3d241a5e 2094 #if USE_LEDS
whismanoid 53:3d5a3d241a5e 2095 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 53:3d5a3d241a5e 2096 // TODO1: mbed-os-5.11: [Warning] 'static osStatus rtos::Thread::wait(uint32_t)' is deprecated: Static methods only affecting current thread cause confusion. Replaced by ThisThread::sleep_for. [since mbed-os-5.10] [-Wdeprecated-declarations]
whismanoid 53:3d5a3d241a5e 2097 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 53:3d5a3d241a5e 2098 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 53:3d5a3d241a5e 2099 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 53:3d5a3d241a5e 2100 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 53:3d5a3d241a5e 2101 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 53:3d5a3d241a5e 2102 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 53:3d5a3d241a5e 2103 ThisThread::sleep_for(250); // [since mbed-os-5.10] vs Thread::wait(250);
whismanoid 53:3d5a3d241a5e 2104 #endif // USE_LEDS
whismanoid 53:3d5a3d241a5e 2105 }
whismanoid 53:3d5a3d241a5e 2106
whismanoid 53:3d5a3d241a5e 2107 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 2108 // Support commands that get handled immediately w/o waiting for EOL
whismanoid 53:3d5a3d241a5e 2109 // handled as immediate command, do not append to buffer
whismanoid 53:3d5a3d241a5e 2110 void on_immediate_0x21() // Unicode (U+0021) ! EXCLAMATION MARK
whismanoid 53:3d5a3d241a5e 2111 {
whismanoid 53:3d5a3d241a5e 2112 #if USE_LEDS
whismanoid 53:3d5a3d241a5e 2113 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 53:3d5a3d241a5e 2114 #endif // USE_LEDS
whismanoid 53:3d5a3d241a5e 2115 InitializeConfiguration();
whismanoid 53:3d5a3d241a5e 2116 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2117 }
whismanoid 53:3d5a3d241a5e 2118
whismanoid 53:3d5a3d241a5e 2119 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 2120 // Support commands that get handled immediately w/o waiting for EOL
whismanoid 53:3d5a3d241a5e 2121 // handled as immediate command, do not append to buffer
whismanoid 53:3d5a3d241a5e 2122 void on_immediate_0x7b() // Unicode (U+007B) { LEFT CURLY BRACKET
whismanoid 53:3d5a3d241a5e 2123 {
whismanoid 53:3d5a3d241a5e 2124 #if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 2125 onButton2FallingEdge();
whismanoid 53:3d5a3d241a5e 2126 #endif
whismanoid 53:3d5a3d241a5e 2127 }
whismanoid 53:3d5a3d241a5e 2128
whismanoid 53:3d5a3d241a5e 2129 //--------------------------------------------------
whismanoid 53:3d5a3d241a5e 2130 // Support commands that get handled immediately w/o waiting for EOL
whismanoid 53:3d5a3d241a5e 2131 // handled as immediate command, do not append to buffer
whismanoid 53:3d5a3d241a5e 2132 void on_immediate_0x7d() // Unicode (U+007D) } RIGHT CURLY BRACKET
whismanoid 53:3d5a3d241a5e 2133 {
whismanoid 53:3d5a3d241a5e 2134 #if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 2135 onButton1FallingEdge();
whismanoid 53:3d5a3d241a5e 2136 #endif
whismanoid 53:3d5a3d241a5e 2137 }
whismanoid 53:3d5a3d241a5e 2138
whismanoid 53:3d5a3d241a5e 2139 //----------------------------------------
whismanoid 53:3d5a3d241a5e 2140 // example code main function
whismanoid 53:3d5a3d241a5e 2141 int main()
whismanoid 53:3d5a3d241a5e 2142 {
whismanoid 53:3d5a3d241a5e 2143 // Configure serial ports
whismanoid 53:3d5a3d241a5e 2144 cmdLine_serial.clear();
whismanoid 53:3d5a3d241a5e 2145 //~ cmdLine_serial.serial().printf("\r\n cmdLine_serial.serial().printf test\r\n");
whismanoid 53:3d5a3d241a5e 2146 cmdLine_serial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 53:3d5a3d241a5e 2147 cmdLine_serial.diagnostic_led_EOF = diagnostic_led_EOF;
whismanoid 53:3d5a3d241a5e 2148 /// CmdLine::set_immediate_handler(char, functionPointer_void_void_on_immediate_0x21);
whismanoid 53:3d5a3d241a5e 2149 cmdLine_serial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 53:3d5a3d241a5e 2150 cmdLine_serial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 53:3d5a3d241a5e 2151 cmdLine_serial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 53:3d5a3d241a5e 2152 # if HAS_DAPLINK_SERIAL
whismanoid 53:3d5a3d241a5e 2153 cmdLine_DAPLINKserial.clear();
whismanoid 53:3d5a3d241a5e 2154 //~ cmdLine_DAPLINKserial.serial().printf("\r\n cmdLine_DAPLINKserial.serial().printf test\r\n");
whismanoid 53:3d5a3d241a5e 2155 cmdLine_DAPLINKserial.onEOLcommandParser = main_menu_onEOLcommandParser;
whismanoid 53:3d5a3d241a5e 2156 /// @todo CmdLine::set_immediate_handler(char, functionPointer_void_void_on_immediate_0x21);
whismanoid 53:3d5a3d241a5e 2157 cmdLine_DAPLINKserial.on_immediate_0x21 = on_immediate_0x21;
whismanoid 53:3d5a3d241a5e 2158 cmdLine_DAPLINKserial.on_immediate_0x7b = on_immediate_0x7b;
whismanoid 53:3d5a3d241a5e 2159 cmdLine_DAPLINKserial.on_immediate_0x7d = on_immediate_0x7d;
whismanoid 53:3d5a3d241a5e 2160 # endif
whismanoid 53:3d5a3d241a5e 2161
whismanoid 53:3d5a3d241a5e 2162
whismanoid 53:3d5a3d241a5e 2163 //print_banner();
whismanoid 53:3d5a3d241a5e 2164
whismanoid 53:3d5a3d241a5e 2165
whismanoid 53:3d5a3d241a5e 2166
whismanoid 53:3d5a3d241a5e 2167 #if USE_LEDS
whismanoid 53:3d5a3d241a5e 2168 #if defined(TARGET_MAX32630)
whismanoid 53:3d5a3d241a5e 2169 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 53:3d5a3d241a5e 2170 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2171 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 53:3d5a3d241a5e 2172 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2173 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 53:3d5a3d241a5e 2174 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2175 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 53:3d5a3d241a5e 2176 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2177 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 53:3d5a3d241a5e 2178 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2179 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 53:3d5a3d241a5e 2180 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2181 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 53:3d5a3d241a5e 2182 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2183 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 53:3d5a3d241a5e 2184 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2185 #elif defined(TARGET_MAX32625MBED)
whismanoid 53:3d5a3d241a5e 2186 led1 = LED_ON; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led RED
whismanoid 53:3d5a3d241a5e 2187 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2188 led1 = LED_OFF; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led GREEN
whismanoid 53:3d5a3d241a5e 2189 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2190 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led BLUE
whismanoid 53:3d5a3d241a5e 2191 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2192 led1 = LED_ON; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 53:3d5a3d241a5e 2193 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2194 led1 = LED_OFF; led2 = LED_ON; led3 = LED_ON; // diagnostic rbg led GREEN+BLUE=CYAN
whismanoid 53:3d5a3d241a5e 2195 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2196 led1 = LED_ON; led2 = LED_OFF; led3 = LED_ON; // diagnostic rbg led RED+BLUE=MAGENTA
whismanoid 53:3d5a3d241a5e 2197 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2198 led1 = LED_ON; led2 = LED_ON; led3 = LED_OFF; // diagnostic rbg led RED+GREEN=YELLOW
whismanoid 53:3d5a3d241a5e 2199 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2200 led1 = LED_OFF; led2 = LED_OFF; led3 = LED_OFF; // diagnostic rbg led BLACK
whismanoid 53:3d5a3d241a5e 2201 ThisThread::sleep_for(125); // [since mbed-os-5.10] vs Thread::wait(125);
whismanoid 53:3d5a3d241a5e 2202 #else // not defined(TARGET_LPC1768 etc.)
whismanoid 53:3d5a3d241a5e 2203 led1 = LED_ON;
whismanoid 53:3d5a3d241a5e 2204 led2 = LED_OFF;
whismanoid 53:3d5a3d241a5e 2205 led3 = LED_OFF;
whismanoid 53:3d5a3d241a5e 2206 led4 = LED_OFF;
whismanoid 53:3d5a3d241a5e 2207 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 53:3d5a3d241a5e 2208 //led1 = LED_ON;
whismanoid 53:3d5a3d241a5e 2209 led2 = LED_ON;
whismanoid 53:3d5a3d241a5e 2210 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 53:3d5a3d241a5e 2211 led1 = LED_OFF;
whismanoid 53:3d5a3d241a5e 2212 //led2 = LED_ON;
whismanoid 53:3d5a3d241a5e 2213 led3 = LED_ON;
whismanoid 53:3d5a3d241a5e 2214 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 53:3d5a3d241a5e 2215 led2 = LED_OFF;
whismanoid 53:3d5a3d241a5e 2216 //led3 = LED_ON;
whismanoid 53:3d5a3d241a5e 2217 led4 = LED_ON;
whismanoid 53:3d5a3d241a5e 2218 ThisThread::sleep_for(75); // [since mbed-os-5.10] vs Thread::wait(75);
whismanoid 53:3d5a3d241a5e 2219 led3 = LED_OFF;
whismanoid 53:3d5a3d241a5e 2220 led4 = LED_ON;
whismanoid 53:3d5a3d241a5e 2221 //
whismanoid 53:3d5a3d241a5e 2222 #endif // target definition
whismanoid 53:3d5a3d241a5e 2223 #endif
whismanoid 53:3d5a3d241a5e 2224
whismanoid 53:3d5a3d241a5e 2225 // cmd_TE();
whismanoid 53:3d5a3d241a5e 2226
whismanoid 53:3d5a3d241a5e 2227 // #if USE_LEDS
whismanoid 53:3d5a3d241a5e 2228 // rgb_led.white(); // diagnostic rbg led RED+GREEN+BLUE=WHITE
whismanoid 53:3d5a3d241a5e 2229 // #endif // USE_LEDS
whismanoid 53:3d5a3d241a5e 2230 led1 = LED_ON;
whismanoid 53:3d5a3d241a5e 2231 led2 = LED_ON;
whismanoid 53:3d5a3d241a5e 2232 led3 = LED_ON;
whismanoid 53:3d5a3d241a5e 2233
whismanoid 53:3d5a3d241a5e 2234 InitializeConfiguration();
whismanoid 53:3d5a3d241a5e 2235 // CODE GENERATOR: example code: member function Init
whismanoid 53:3d5a3d241a5e 2236 g_MAX11043_device.Init();
whismanoid 53:3d5a3d241a5e 2237
whismanoid 53:3d5a3d241a5e 2238 // example code: serial port banner message
whismanoid 53:3d5a3d241a5e 2239 #if defined(TARGET_MAX32625MBED)
whismanoid 53:3d5a3d241a5e 2240 serial.printf("MAX32625MBED ");
whismanoid 53:3d5a3d241a5e 2241 #elif defined(TARGET_MAX32600MBED)
whismanoid 53:3d5a3d241a5e 2242 serial.printf("MAX32600MBED ");
whismanoid 53:3d5a3d241a5e 2243 #elif defined(TARGET_NUCLEO_F446RE)
whismanoid 53:3d5a3d241a5e 2244 serial.printf("NUCLEO_F446RE ");
whismanoid 53:3d5a3d241a5e 2245 #endif
whismanoid 53:3d5a3d241a5e 2246 serial.printf("MAX11043BOB\r\n");
whismanoid 53:3d5a3d241a5e 2247
whismanoid 53:3d5a3d241a5e 2248
whismanoid 53:3d5a3d241a5e 2249 while (1) {
whismanoid 53:3d5a3d241a5e 2250 #if HAS_BUTTON1_DEMO_INTERRUPT_POLLING
whismanoid 53:3d5a3d241a5e 2251 // avoid runtime error on button1 press [mbed-os-5.11]
whismanoid 53:3d5a3d241a5e 2252 // instead of using InterruptIn, use DigitalIn and poll in main while(1)
whismanoid 53:3d5a3d241a5e 2253 # if HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 2254 static int button1_value_prev = 1;
whismanoid 53:3d5a3d241a5e 2255 static int button1_value_now = 1;
whismanoid 53:3d5a3d241a5e 2256 button1_value_prev = button1_value_now;
whismanoid 53:3d5a3d241a5e 2257 button1_value_now = button1.read();
whismanoid 53:3d5a3d241a5e 2258 if ((button1_value_prev - button1_value_now) == 1)
whismanoid 53:3d5a3d241a5e 2259 {
whismanoid 53:3d5a3d241a5e 2260 // on button1 falling edge (button1 press)
whismanoid 53:3d5a3d241a5e 2261 onButton1FallingEdge();
whismanoid 53:3d5a3d241a5e 2262 }
whismanoid 53:3d5a3d241a5e 2263 # endif // HAS_BUTTON1_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 2264 # if HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 2265 static int button2_value_prev = 1;
whismanoid 53:3d5a3d241a5e 2266 static int button2_value_now = 1;
whismanoid 53:3d5a3d241a5e 2267 button2_value_prev = button2_value_now;
whismanoid 53:3d5a3d241a5e 2268 button2_value_now = button2.read();
whismanoid 53:3d5a3d241a5e 2269 if ((button2_value_prev - button2_value_now) == 1)
whismanoid 53:3d5a3d241a5e 2270 {
whismanoid 53:3d5a3d241a5e 2271 // on button2 falling edge (button2 press)
whismanoid 53:3d5a3d241a5e 2272 onButton2FallingEdge();
whismanoid 53:3d5a3d241a5e 2273 }
whismanoid 53:3d5a3d241a5e 2274 # endif // HAS_BUTTON2_DEMO_INTERRUPT
whismanoid 53:3d5a3d241a5e 2275 #endif
whismanoid 53:3d5a3d241a5e 2276 # if HAS_DAPLINK_SERIAL
whismanoid 53:3d5a3d241a5e 2277 if (DAPLINKserial.readable()) {
whismanoid 53:3d5a3d241a5e 2278 cmdLine_DAPLINKserial.append(DAPLINKserial.getc());
whismanoid 53:3d5a3d241a5e 2279 }
whismanoid 53:3d5a3d241a5e 2280 # endif // HAS_DAPLINK_SERIAL
whismanoid 53:3d5a3d241a5e 2281 if (serial.readable()) {
whismanoid 53:3d5a3d241a5e 2282 int c = serial.getc();
whismanoid 53:3d5a3d241a5e 2283 cmdLine_serial.append(c);
whismanoid 53:3d5a3d241a5e 2284 #if IGNORE_AT_COMMANDS
whismanoid 53:3d5a3d241a5e 2285 # if HAS_DAPLINK_SERIAL
whismanoid 53:3d5a3d241a5e 2286 cmdLine_DAPLINKserial.serial().printf("%c", c);
whismanoid 53:3d5a3d241a5e 2287 # endif // HAS_DAPLINK_SERIAL
whismanoid 53:3d5a3d241a5e 2288 #endif // IGNORE_AT_COMMANDS
whismanoid 53:3d5a3d241a5e 2289 //
whismanoid 53:3d5a3d241a5e 2290 }
whismanoid 53:3d5a3d241a5e 2291 } // while(1)
whismanoid 53:3d5a3d241a5e 2292 }
whismanoid 53:3d5a3d241a5e 2293 //---------- CODE GENERATOR: end testMainCppCodeList