Fix esp32c3 build (#163)

This commit is contained in:
Ryan Butler
2022-07-03 18:28:12 -05:00
committed by GitHub
parent fcbd4ff911
commit 6886e11054
12 changed files with 74 additions and 98 deletions

View File

@@ -29,14 +29,6 @@ class DeviceConfiguration:
[env:{self.platformio_board}]
platform = {self.platform}
board = {self.platformio_board}""")
if self.platform == "espressif32 @ 3.5.0":
section += dedent("""
lib_deps =
${env.lib_deps}
lorol/LittleFS_esp32 @ 1.0.6
""")
return section
def filename(self) -> str:

View File

@@ -5,8 +5,13 @@
"board": "SLIMEVR"
},
{
"platform": "espressif32 @ 3.5.0",
"platform": "espressif32 @ 4.4.0",
"platformio_board": "esp32dev",
"board": "WROOM32"
},
{
"platform": "espressif32 @ 4.4.0",
"platformio_board": "lolin_c3_mini",
"board": "SLIMEVR"
}
]

View File

@@ -240,7 +240,7 @@ float ICM_20948::getGyrDPS(int16_t axis_val)
}
//Gyro Bias
ICM_20948_Status_e ICM_20948::SetBiasGyroX( int newValue)
ICM_20948_Status_e ICM_20948::SetBiasGyroX( int32_t newValue)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char gyro_bias_reg[4];
@@ -252,7 +252,7 @@ ICM_20948_Status_e ICM_20948::SetBiasGyroX( int newValue)
return result;
}
ICM_20948_Status_e ICM_20948::SetBiasGyroY( int newValue)
ICM_20948_Status_e ICM_20948::SetBiasGyroY( int32_t newValue)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char gyro_bias_reg[4];
@@ -264,7 +264,7 @@ ICM_20948_Status_e ICM_20948::SetBiasGyroY( int newValue)
return result;
}
ICM_20948_Status_e ICM_20948::SetBiasGyroZ( int newValue)
ICM_20948_Status_e ICM_20948::SetBiasGyroZ( int32_t newValue)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char gyro_bias_reg[4];
@@ -276,34 +276,34 @@ ICM_20948_Status_e ICM_20948::SetBiasGyroZ( int newValue)
return result;
}
ICM_20948_Status_e ICM_20948::GetBiasGyroX( int* bias)
ICM_20948_Status_e ICM_20948::GetBiasGyroX( int32_t* bias)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char bias_data[4] = { 0 };
result = inv_icm20948_read_mems(&_device, GYRO_BIAS_X, 4, bias_data);
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
return result;
}
ICM_20948_Status_e ICM_20948::GetBiasGyroY( int* bias)
ICM_20948_Status_e ICM_20948::GetBiasGyroY( int32_t* bias)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char bias_data[4] = { 0 };
result = inv_icm20948_read_mems(&_device, GYRO_BIAS_Y, 4, bias_data);
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
return result;
}
ICM_20948_Status_e ICM_20948::GetBiasGyroZ( int* bias)
ICM_20948_Status_e ICM_20948::GetBiasGyroZ( int32_t* bias)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char bias_data[4] = { 0 };
result = inv_icm20948_read_mems(&_device, GYRO_BIAS_Z, 4, bias_data);
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
return result;
}
//Accel Bias
ICM_20948_Status_e ICM_20948::SetBiasAccelX( int newValue)
ICM_20948_Status_e ICM_20948::SetBiasAccelX( int32_t newValue)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char accel_bias_reg[4];
@@ -315,7 +315,7 @@ ICM_20948_Status_e ICM_20948::SetBiasAccelX( int newValue)
return result;
}
ICM_20948_Status_e ICM_20948::SetBiasAccelY( int newValue)
ICM_20948_Status_e ICM_20948::SetBiasAccelY( int32_t newValue)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char accel_bias_reg[4];
@@ -327,7 +327,7 @@ ICM_20948_Status_e ICM_20948::SetBiasAccelY( int newValue)
return result;
}
ICM_20948_Status_e ICM_20948::SetBiasAccelZ( int newValue)
ICM_20948_Status_e ICM_20948::SetBiasAccelZ( int32_t newValue)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char accel_bias_reg[4];
@@ -339,34 +339,34 @@ ICM_20948_Status_e ICM_20948::SetBiasAccelZ( int newValue)
return result;
}
ICM_20948_Status_e ICM_20948::GetBiasAccelX( int* bias)
ICM_20948_Status_e ICM_20948::GetBiasAccelX( int32_t* bias)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char bias_data[4] = { 0 };
result = inv_icm20948_read_mems(&_device, ACCEL_BIAS_X, 4, bias_data);
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
return result;
}
ICM_20948_Status_e ICM_20948::GetBiasAccelY( int* bias)
ICM_20948_Status_e ICM_20948::GetBiasAccelY( int32_t* bias)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char bias_data[4] = { 0 };
result = inv_icm20948_read_mems(&_device, ACCEL_BIAS_Y, 4, bias_data);
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
return result;
}
ICM_20948_Status_e ICM_20948::GetBiasAccelZ( int* bias)
ICM_20948_Status_e ICM_20948::GetBiasAccelZ( int32_t* bias)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char bias_data[4] = { 0 };
result = inv_icm20948_read_mems(&_device, ACCEL_BIAS_Z, 4, bias_data);
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
return result;
}
//CPass Bias
ICM_20948_Status_e ICM_20948::SetBiasCPassX( int newValue)
ICM_20948_Status_e ICM_20948::SetBiasCPassX( int32_t newValue)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char cpass_bias_reg[4];
@@ -378,7 +378,7 @@ ICM_20948_Status_e ICM_20948::SetBiasCPassX( int newValue)
return result;
}
ICM_20948_Status_e ICM_20948::SetBiasCPassY( int newValue)
ICM_20948_Status_e ICM_20948::SetBiasCPassY( int32_t newValue)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char cpass_bias_reg[4];
@@ -390,7 +390,7 @@ ICM_20948_Status_e ICM_20948::SetBiasCPassY( int newValue)
return result;
}
ICM_20948_Status_e ICM_20948::SetBiasCPassZ( int newValue)
ICM_20948_Status_e ICM_20948::SetBiasCPassZ( int32_t newValue)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char cpass_bias_reg[4];
@@ -402,30 +402,30 @@ ICM_20948_Status_e ICM_20948::SetBiasCPassZ( int newValue)
return result;
}
ICM_20948_Status_e ICM_20948::GetBiasCPassX( int* bias)
ICM_20948_Status_e ICM_20948::GetBiasCPassX( int32_t* bias)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char bias_data[4] = { 0 };
result = inv_icm20948_read_mems(&_device, CPASS_BIAS_X, 4, bias_data);
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
return result;
}
ICM_20948_Status_e ICM_20948::GetBiasCPassY( int* bias)
ICM_20948_Status_e ICM_20948::GetBiasCPassY( int32_t* bias)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char bias_data[4] = { 0 };
result = inv_icm20948_read_mems(&_device, CPASS_BIAS_Y, 4, bias_data);
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
return result;
}
ICM_20948_Status_e ICM_20948::GetBiasCPassZ( int* bias)
ICM_20948_Status_e ICM_20948::GetBiasCPassZ( int32_t* bias)
{
ICM_20948_Status_e result = ICM_20948_Stat_Ok;
unsigned char bias_data[4] = { 0 };
result = inv_icm20948_read_mems(&_device, CPASS_BIAS_Z, 4, bias_data);
bias[0] = (int)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
bias[0] = (int32_t)(bias_data[0] << 24) | (bias_data[1] << 16) | (bias_data[2] << 8) | (bias_data[3]);
return result;
}

View File

@@ -174,26 +174,26 @@ public:
//DMP
//Gyro Bias
ICM_20948_Status_e SetBiasGyroX( int newValue);
ICM_20948_Status_e SetBiasGyroY( int newValue);
ICM_20948_Status_e SetBiasGyroZ( int newValue);
ICM_20948_Status_e GetBiasGyroX( int* bias);
ICM_20948_Status_e GetBiasGyroY( int* bias);
ICM_20948_Status_e GetBiasGyroZ( int* bias);
ICM_20948_Status_e SetBiasGyroX( int32_t newValue);
ICM_20948_Status_e SetBiasGyroY( int32_t newValue);
ICM_20948_Status_e SetBiasGyroZ( int32_t newValue);
ICM_20948_Status_e GetBiasGyroX( int32_t* bias);
ICM_20948_Status_e GetBiasGyroY( int32_t* bias);
ICM_20948_Status_e GetBiasGyroZ( int32_t* bias);
//Accel Bias
ICM_20948_Status_e SetBiasAccelX( int newValue);
ICM_20948_Status_e SetBiasAccelY( int newValue);
ICM_20948_Status_e SetBiasAccelZ( int newValue);
ICM_20948_Status_e GetBiasAccelX( int* bias);
ICM_20948_Status_e GetBiasAccelY( int* bias);
ICM_20948_Status_e GetBiasAccelZ( int* bias);
ICM_20948_Status_e SetBiasAccelX( int32_t newValue);
ICM_20948_Status_e SetBiasAccelY( int32_t newValue);
ICM_20948_Status_e SetBiasAccelZ( int32_t newValue);
ICM_20948_Status_e GetBiasAccelX( int32_t* bias);
ICM_20948_Status_e GetBiasAccelY( int32_t* bias);
ICM_20948_Status_e GetBiasAccelZ( int32_t* bias);
//CPass Bias
ICM_20948_Status_e SetBiasCPassX( int newValue);
ICM_20948_Status_e SetBiasCPassY( int newValue);
ICM_20948_Status_e SetBiasCPassZ( int newValue);
ICM_20948_Status_e GetBiasCPassX( int* bias);
ICM_20948_Status_e GetBiasCPassY( int* bias);
ICM_20948_Status_e GetBiasCPassZ( int* bias);
ICM_20948_Status_e SetBiasCPassX( int32_t newValue);
ICM_20948_Status_e SetBiasCPassY( int32_t newValue);
ICM_20948_Status_e SetBiasCPassZ( int32_t newValue);
ICM_20948_Status_e GetBiasCPassX( int32_t* bias);
ICM_20948_Status_e GetBiasCPassY( int32_t* bias);
ICM_20948_Status_e GetBiasCPassZ( int32_t* bias);
// Done:
// Configure DMP start address through PRGM_STRT_ADDRH/PRGM_STRT_ADDRL

View File

@@ -109,7 +109,6 @@ public:
void set_euler_zyx(const Vector3& p_euler);
Quat get_quat() const;
void set_quat(const Quat& p_quat);
Vector3 get_euler() const { return get_euler_yxz(); }
void set_euler(const Vector3& p_euler) { set_euler_yxz(p_euler); }
@@ -240,7 +239,6 @@ public:
operator Quat() const { return get_quat(); }
Basis(const Quat& p_quat) { set_quat(p_quat); };
Basis(const Quat& p_quat, const Vector3& p_scale) { set_quat_scale(p_quat, p_scale); }
Basis(const Vector3& p_euler) { set_euler(p_euler); }

View File

@@ -57,14 +57,6 @@ void Quat::set_euler_xyz(const Vector3& p_euler) {
-sin_a1 * sin_a2 * sin_a3 + cos_a1 * cos_a2 * cos_a3);
}
// get_euler_xyz returns a vector containing the Euler angles in the format
// (ax,ay,az), where ax is the angle of rotation around x axis,
// and similar for other axes.
// This implementation uses XYZ convention (Z is the first rotation).
Vector3 Quat::get_euler_xyz() const {
Basis m(*this);
return m.get_euler_xyz();
}
// set_euler_yxz expects a vector containing the Euler angles in the format
// (ax,ay,az), where ax is the angle of rotation around x axis,
@@ -92,18 +84,6 @@ void Quat::set_euler_yxz(const Vector3& p_euler) {
sin_a1 * sin_a2 * sin_a3 + cos_a1 * cos_a2 * cos_a3);
}
// get_euler_yxz returns a vector containing the Euler angles in the format
// (ax,ay,az), where ax is the angle of rotation around x axis,
// and similar for other axes.
// This implementation uses YXZ convention (Z is the first rotation).
Vector3 Quat::get_euler_yxz() const {
#ifdef MATH_CHECKS
ERR_FAIL_COND_V_MSG(!is_normalized(), Vector3(0, 0, 0), "The quaternion must be normalized.");
#endif
Basis m(*this);
return m.get_euler_yxz();
}
void Quat::operator*=(const Quat& q) {
set(w * q.x + x * q.w + y * q.z - z * q.y,
w * q.y + y * q.w + z * q.x - x * q.z,

View File

@@ -28,15 +28,13 @@ platform = espressif8266
board = esp12e
[env:BOARD_WROOM32]
lib_deps=
${env.lib_deps}
lorol/LittleFS_esp32@1.0.6
platform = espressif32@3.5.0
platform = espressif32@4.4.0
board = esp32dev
[env:BOARD_ESP01]
lib_deps=
${env.lib_deps}
lorol/LittleFS_esp32@1.0.6
platform = espressif32@3.5.0
platform = espressif32@4.4.0
board = esp32dev
[env:BOARD_LOLIN_C3_MINI]
platform = espressif32@4.4.0
board = lolin_c3_mini

View File

@@ -57,10 +57,12 @@ upload_speed = 921600
; Uncomment below if you want to build for esp32
; Check your board name at https://docs.platformio.org/en/latest/platforms/espressif32.html#boards
; [env:esp32]
; lib_deps =
; ${env.lib_deps}
; lorol/LittleFS_esp32 @ 1.0.6
; platform = espressif32 @ 3.5.0
; platform = espressif32 @ 4.4.0
; board = esp32dev
; Comment out this line below if you have any trouble uploading the firmware - and if it has a CP2102 on it (a square chip next to the usb port): change to 3000000 (3 million) for even faster upload speed
; upload_speed = 921600
; If you want to use a esp32c3, you can use this (experimental)
;[env:esp32c3]
;platform = espressif32 @ 4.4.0
;board = lolin_c3_mini

View File

@@ -21,15 +21,7 @@
THE SOFTWARE.
*/
#ifdef ESP32
// #define CONFIG_LITTLEFS_SPIFFS_COMPAT 1
// #define CONFIG_LITTLEFS_LFS_YES_TRACE
// #define LFS_YES_TRACE
#include <LITTLEFS.h>
#define LittleFS LITTLEFS
#else
#include <LittleFS.h>
#endif
#include <LittleFS.h>
#include "Configuration.h"
#include "consts.h"

View File

@@ -43,6 +43,7 @@
#define BOARD_TTGO_TBASE 7
#define BOARD_ESP01 8
#define BOARD_SLIMEVR 9
#define BOARD_LOLIN_C3_MINI 10
#define BAT_EXTERNAL 1
#define BAT_INTERNAL 2

View File

@@ -110,4 +110,12 @@
#define PIN_BATTERY_LEVEL 36
// #define LED_PIN 2
// #define LED_INVERTED false
#elif BOARD == BOARD_LOLIN_C3_MINI
#define PIN_IMU_SDA 10
#define PIN_IMU_SCL 8
#define PIN_IMU_INT 6
#define PIN_IMU_INT_2 7
#define PIN_BATTERY_LEVEL 3
// #define LED_PIN 2
// #define LED_INVERTED false
#endif

View File

@@ -121,7 +121,7 @@ void ICM20948Sensor::load_bias() {
imu.SetBiasCPassY(90);
imu.SetBiasCPassZ(90);
int bias_gyro[3], bias_accel[3], bias_compass[3];
int32_t bias_gyro[3], bias_accel[3], bias_compass[3];
// Reloads all bias from memory
imu.GetBiasGyroX(&bias_gyro[0]);