新手上路
- 积分
- 23
- 金钱
- 23
- 注册时间
- 2016-12-4
- 在线时间
- 2 小时
|
发表于 2016-12-12 15:00:26
|
显示全部楼层
问题解决了,给自己回复一下吧,事实上所有的设置都是对的,问题就出在一旦有数据,STATUS_REG(7)标志就为溢出,不论准循环有多快可以轮询到读取函数,哪怕主循环里就只有数据读取并且ODR设置为1Hz也照样解决不了,不过通过这几天的来回尝试,找到了一个解决方法,我的解决方式是在读取status之前先读一遍数据输出寄存器。现在把读取数据的代码贴出来,希望可以给以后遇到此类问题的朋友一定的帮助。
u8_t LIS3DH_read_processing_xyz()
{
u8_t status;
u16_t xtemp,ytemp,ztemp;
xtemp = LIS3DH_read_x();
ytemp = LIS3DH_read_y();
ztemp = LIS3DH_read_z();
do
{
status = SPI_Mems_Read_Reg(0x27);
}while(!(status&0x08));//waitting for data ready
if(status&0x80)//check the data overwitten or not
{
return 0;//overwritten
}
// LIS3DH_GetAccAxesRaw(buff);
xtemp = LIS3DH_read_x();
ytemp = LIS3DH_read_y();
ztemp = LIS3DH_read_z();
xmg = LIS3DH_processinggg(xtemp);
ymg = LIS3DH_processinggg(ytemp);
zmg = LIS3DH_processinggg(ztemp);
return 1;
} |
|