|
发表于 2015-8-5 17:51:56
|
显示全部楼层
整了个9150的计步的算法,再结合9150的磁力计就可以导航;
主mcu用msp430的话用软件模拟i2c跑的很好,走30步差3步以内;
为了节约电量把430去掉,直接用cc2541控制,这时候软件模拟明显
采集数据不够快,于是想到了硬件i2c,问题来了硬件i2c读取磁力计读不出来,
可是软件是可以的呀;
一路追踪问题,发现有个地方不对,
static int setup_compass(void);
这个函数中
/* Find compass. Possible addresses range from 0x0C to 0x0F. */
for (akm_addr = 0x0C; akm_addr <= 0x0F; akm_addr++) {
int result;
result = i2c_read(akm_addr, AKM_REG_WHOAMI, 1, data);
if (!result && (data[0] == AKM_WHOAMI))
break;
}
if (akm_addr > 0x0F) {
/* TODO: Handle this case in all compass-related functions. */
log_e("Compass not found.\n");
return -1;
}
st.chip_cfg.compass_addr = akm_addr;
这个部分的akm_addr跟软件i2c运行后不一样,请教大家这个属于什么问题呢!
|
|