06-27-2019 05:14 PM
I am writing drivers for the bmx160 for zephyr OS but haven't been able to successfully change the PMU for the accelerometer,gyroscope or magnetometer from suspended mode. The steps I take for initialization are:
1. Send REG_CMD(0x7E) with CMD_SOFT_RESET(0xB6)
2. Read REG_CHIPID(0x00) (successfully reads BMX160 id 0xD8)
3. Send REG_CMD(0x7E) with CMD_PMU_ACC_NORMAL(0x11)
4. Delay for 3.8ms as per table 29 from datasheet
5. Repeat steps 3 and 4 with CMD_PMU_GYRO_NORMAL(0x15) and 80ms
6. Repeat steps 3 and 4 with CMD_PMU_MAG_NORMAL(0x18) and 0.5ms
7. Read REG_PMU_STATUS(0x03)
8. PMU_STATUS remains at 0 and does not update accordingly
Are there any other steps I should be taking? Also, I am using I2C for communcation with the BMX160 and using a logic analyzer I can see that everything is being written and read correctly, its just that I am reading 0 from the BMX160 register
06-27-2019 05:47 PM
It looks like the problem is that when I write to any register it doesn't actually get updated. I wrote 0x2C to the ACC_CONF register but when i read it back it gave me the default 0x28 value. So reads seem to work properly but writes don't.
06-28-2019 09:27 AM