Написал программу для платы STM32F3Discovery, данные от LSM303DLHC принимает из регистров для оси Z: OUT_Z_L_A (2Ch) и OUT_Z_H_A (2Dh). Только одна ось для простоты. Не понятно то, что это за данные.
Настройки делаются в контрольных регистрах акселерометра CTRL_REG1_A (20h) , CTRL_REG4_A (23h) и они такие:
CTRL_REG1_A = 0x24
CTRL_REG4_A = 0x48
При этом имеем:
Measurement Range = [-2;+2]g (дефолтовое FS=0)
Linear axeleration sensitivity 1 mg/LSB (один бит равен 1mg, то есть когда плата на столе по Z д.б. 1000 mg по модулю)
Выставлен режим High Resolution
В регистрах акселерометра получаю такие данные (two's complements):
Плата диодами вверх: MSB=3С LSB=F0. Здесь я ожидал 1000 mg = 1g, но это почему-то не так.
Плата диодами вниз: MSB=BF LSB=F0.
Попробовал отключить High Resolution. pData получилось: FFE0 (диодами вверх), 7FE0 (перевернута), BFE0 (плата на боку - тут должно быть 0 по Z).
pData должно быть 1000 mg. Но оно 15344 или -16912 если перевернуть плату.
Даташит тут: http://www.st.com/resource/en/datasheet/lsm303dlhc.pdf.
Настройки делаются в контрольных регистрах акселерометра CTRL_REG1_A (20h) , CTRL_REG4_A (23h) и они такие:
CTRL_REG1_A = 0x24
CTRL_REG4_A = 0x48
При этом имеем:
Measurement Range = [-2;+2]g (дефолтовое FS=0)
Linear axeleration sensitivity 1 mg/LSB (один бит равен 1mg, то есть когда плата на столе по Z д.б. 1000 mg по модулю)
Выставлен режим High Resolution
В регистрах акселерометра получаю такие данные (two's complements):
Плата диодами вверх: MSB=3С LSB=F0. Здесь я ожидал 1000 mg = 1g, но это почему-то не так.
Плата диодами вниз: MSB=BF LSB=F0.
Попробовал отключить High Resolution. pData получилось: FFE0 (диодами вверх), 7FE0 (перевернута), BFE0 (плата на боку - тут должно быть 0 по Z).
Код: Выделить всё
// Get MSB first (BLE=1).
while (!(I2C1->ISR & I2C_ISR_RXNE) ){};
buffer[0] = I2C1->RXDR;
// Get LSB.
while (!(I2C1->ISR & I2C_ISR_RXNE) ){};
buffer[1] |= I2C1->RXDR;
pnRawDataZ = ((int16_t)((uint16_t)buffer[0] << 8) + buffer[1]);
pData =(pnRawDataZ * sensitivity);Даташит тут: http://www.st.com/resource/en/datasheet/lsm303dlhc.pdf.