Dear nordic,
I tried to interface HMC5883L but i cant get proper data . can you help me what wrong i do?
/*Defines*/
#define HMC5883L_ADDR (0x3CU>>1)
#define HMC5883L_REG_CONF_A (0x00)
#define HMC5883L_REG_CONF_B (0x01)
#define HMC5883L_REG_MODE (0x02)
#define HMC5883L_REG_X_MSB (0x03)
#define HMC5883L_REG_X_LSB (0x04)
/* TWI initalization */
/**
* @brief UART initialization.
*/
void twi_init (void)
{
ret_code_t err_code;
const nrf_drv_twi_config_t twi_lm75b_config = {
.scl = ARDUINO_SCL_PIN,
.sda = ARDUINO_SDA_PIN,
.frequency = NRF_DRV_TWI_FREQ_400K,
.interrupt_priority = APP_IRQ_PRIORITY_HIGH,
.clear_bus_init = false
};
err_code = nrf_drv_twi_init(&m_twi, &twi_lm75b_config, twi_handler, NULL);
APP_ERROR_CHECK(err_code);
nrf_drv_twi_enable(&m_twi);
}
/******initalization HMC5883L*************************/
void HMC5883L_set_mode(void)
{
ret_code_t err_code;
uint8_t reg[5] = {HMC5883L_REG_CONF_A, 0x70,0xA0,0x00};
err_code = nrf_drv_twi_tx(&m_twi, HMC5883L_ADDR, reg, 4, false);
APP_ERROR_CHECK(err_code);
}
/**************************Read from register*******************/
static void read_sensor_data()
{
uint8_t reg[2] = { 0x00};
nrf_drv_twi_tx(&m_twi, HMC5883L_ADDR, reg, 1,false); // Point to register
nrf_drv_twi_rx(&m_twi, HMC5883L_ADDR, buff_t, 1); // just try to read configure register
}