This commit is contained in:
cfif 2024-12-09 13:40:18 +03:00
parent 55bcec9475
commit f77e76e909
2 changed files with 18 additions and 3 deletions

View File

@ -57,7 +57,11 @@ typedef enum {
ACCEL_QMA6100P_RANGE_REG_32G = 0b1111,
} eAccelQma6100pRangesReg;
typedef struct {
int32_t x;
int32_t y;
int32_t z;
} tAccelCoor;
typedef struct {
tSpiPortIO *port;
@ -66,6 +70,8 @@ typedef struct {
//только через setter
//private
eAccelQma6100pRanges range;
tAccelCoor xyz;
} tAccelQma6100P;
void AccelQma6100P_Init(tAccelQma6100P *env, tSpiPortIO *accelIO);

View File

@ -22,13 +22,12 @@ static bool vAccelWriteReg(tAccelQma6100P *env, uint8_t reg, uint8_t value, uint
QMA6100P_RINO(SpiPortTransmit(env->port, &value_reg, timeout))
QMA6100P_RINO(SpiPortChipRelease(env->port, timeout))
SystemDelayMs(50);
return true;
}
static bool vAccelReadReg(tAccelQma6100P *env, uint8_t reg, uint8_t *data, uint32_t timeout) {
uint16_t back;
uint16_t adr_reg = reg | 0x80;
@ -159,6 +158,7 @@ bool AccelQma6100P_ConfigureDefaults(tAccelQma6100P *env) {
//todo return on error, сделать вывод с ошибкой (false) в случае сбоя при записи конфигурации
SystemDelayMs(200);
return true;
}
@ -211,6 +211,15 @@ bool AccelQma6100P_ReadOne(tAccelQma6100P *env, uint8_t firstReg, float *value)
int32_t valueMicroG = rowValue * env->range;
if (firstReg == QMA6100P_REG_ACC_X_L)
env->xyz.x = valueMicroG;
if (firstReg == QMA6100P_REG_ACC_Y_L)
env->xyz.y = valueMicroG;
if (firstReg == QMA6100P_REG_ACC_Z_L)
env->xyz.z = valueMicroG;
*value = roundf(valueMicroG) / 1000000.f;
return true;