i2c配置是按官方文档配置的,将sensorTag里面的bsp_i2c.c只能拿来用了,写是没有问题,就是读取的时候跑飞,但有试过读取成功(大部分是跑飞了),程序没变过,why why why??i2c设备是hmc5983。
hmc5983初始化如下:
int hmc5983Init() { uint8_t buf[] = {HMC5983_R_CONFIG_A, 0x70, HMC5983_R_CONFIG_B, 0xA0,}; uint8_t *p_buf = buf; bspI2cSelect(BSP_I2C_INTERFACE_0, HMC5983_ADDR); for (uint8_t i = 0 ; i < 2; i++) { bspI2cWrite(p_buf, 2); p_buf = p_buf + 2; } }
读取测试代码如下:
while (1) { bool flag = FALSE; uint8_t write_buf[] = {HMC5983_R_MODE, 0x01}; uint8_t *re_buf; uint8_t addr = 0x00; flag = bspI2cWrite(write_buf, 2); if (!flag) flag = FALSE; delay_ms(6); flag = bspI2cWriteRead(&addr, 1, re_buf, 15); if (!flag) flag = FALSE; delay_ms(67); }
每次就是在 flag = bspI2cWriteRead(&addr, 1, re_buf, 15);跑飞,求大神指点,thanks!!