最近一个项目需要测量平面的旋转角度,考虑到成本问题选择了HMC5883电子罗盘来进行测向;
HMC5883采用I2C通信,地址默认为0x1E(7bit)
本案例采用nrf52832的硬件I2C库来进行通信,使用到的函数有
nrf_drv_twi_tx(nrf_drv_twi_t const * p_instance,uint8_t address, uint8_t const * p_data,uint8_t length,bool no_stop)
nrf_drv_twi_rx(nrf_drv_twi_t const * p_instance,uint8_t address, uint8_t * p_data,uint8_t length)
应注意,nrf52832的i2c通信函数内部已经对地址进行了加位处理,也就是说只需要传入7位的i2c地址0x1E即可,无需针对读写操作进行单独的加位处理
首先,我们需要对HMC5883进行初始化,查阅数据表:
我们需要首先设置好HMC5883的数据输出速率和采样平均数