diff --git a/software/firmware/source/SoftRF/SoftRF.h b/software/firmware/source/SoftRF/SoftRF.h index caaa2464d..e4a3188c0 100644 --- a/software/firmware/source/SoftRF/SoftRF.h +++ b/software/firmware/source/SoftRF/SoftRF.h @@ -225,6 +225,7 @@ enum SOFTRF_MODEL_MIDI, SOFTRF_MODEL_ECO, SOFTRF_MODEL_INK, + SOFTRF_MODEL_CARD, SOFTRF_MODEL_NEO, }; @@ -254,6 +255,7 @@ enum IMU_NONE, ACC_BMA423, ACC_ADXL362, + ACC_QMA6100P, IMU_MPU6886, IMU_MPU9250, IMU_BNO080, diff --git a/software/firmware/source/SoftRF/src/platform/nRF52.cpp b/software/firmware/source/SoftRF/src/platform/nRF52.cpp index a5810fc5f..6f2a7543a 100644 --- a/software/firmware/source/SoftRF/src/platform/nRF52.cpp +++ b/software/firmware/source/SoftRF/src/platform/nRF52.cpp @@ -698,6 +698,22 @@ static void nRF52_setup() // digitalWrite(OTG_ENABLE_PIN, HIGH); } else { Wire.end(); + +#if !defined(EXCLUDE_IMU) +#if !defined(ARDUINO_ARCH_MBED) + Wire.setPins(SOC_GPIO_PIN_T1000_SDA, SOC_GPIO_PIN_T1000_SCL); +#endif /* ARDUINO_ARCH_MBED */ + Wire.begin(); + Wire.beginTransmission(QMA6100P_ADDRESS); + nRF52_has_imu = (Wire.endTransmission() == 0); + if (nRF52_has_imu) { + nRF52_board = NRF52_SEEED_T1000; + hw_info.model = SOFTRF_MODEL_CARD; + hw_info.imu = ACC_QMA6100P; + nRF52_Device_Model = "Card Edition"; + } + Wire.end(); +#endif /* EXCLUDE_IMU */ } #endif /* EXCLUDE_PMU */ @@ -713,6 +729,9 @@ static void nRF52_setup() case NRF52_LILYGO_TULTIMA: /* TBD */ break; + case NRF52_SEEED_T1000: + Serial1.setPins(SOC_GPIO_PIN_CONS_T1000_RX, SOC_GPIO_PIN_CONS_T1000_TX); + break; case NRF52_LILYGO_TECHO_REV_0: case NRF52_LILYGO_TECHO_REV_1: case NRF52_LILYGO_TECHO_REV_2: @@ -750,6 +769,9 @@ static void nRF52_setup() case NRF52_LILYGO_TULTIMA: Wire.setPins(SOC_GPIO_PIN_TULTIMA_SDA, SOC_GPIO_PIN_TULTIMA_SCL); break; + case NRF52_SEEED_T1000: + Wire.setPins(SOC_GPIO_PIN_T1000_SDA, SOC_GPIO_PIN_T1000_SCL); + break; case NRF52_LILYGO_TECHO_REV_0: case NRF52_LILYGO_TECHO_REV_1: case NRF52_LILYGO_TECHO_REV_2: @@ -775,11 +797,13 @@ static void nRF52_setup() } #if !defined(EXCLUDE_IMU) - Wire.beginTransmission(MPU9250_ADDRESS); - nRF52_has_imu = (Wire.endTransmission() == 0); if (nRF52_has_imu == false) { - Wire.beginTransmission(ICM20948_ADDRESS); + Wire.beginTransmission(MPU9250_ADDRESS); nRF52_has_imu = (Wire.endTransmission() == 0); + if (nRF52_has_imu == false) { + Wire.beginTransmission(ICM20948_ADDRESS); + nRF52_has_imu = (Wire.endTransmission() == 0); + } } #endif /* EXCLUDE_IMU */ diff --git a/software/firmware/source/SoftRF/src/platform/nRF52.h b/software/firmware/source/SoftRF/src/platform/nRF52.h index ea8506250..f43debcb5 100644 --- a/software/firmware/source/SoftRF/src/platform/nRF52.h +++ b/software/firmware/source/SoftRF/src/platform/nRF52.h @@ -108,6 +108,7 @@ struct rst_info { #define BME280_ADDRESS (0x77) #define MPU9250_ADDRESS (0x68) #define ICM20948_ADDRESS (0x68) +#define QMA6100P_ADDRESS (0x12) // 0x13 when AD0 = HIGH #if defined(ARDUINO_ARCH_MBED) #define PCF8563_SLAVE_ADDRESS (0x51)