在调试QMA7981的过程遇到的问题;
首先,根据嘉立创的数据书册的介绍,我的AD0接的GND,判断地址为0X12
在经过一系列排查(硬件I2C有问题,焊接出现虚焊),偶然在网上看到其他博主的示例程序,地址改为0x24,立马读取0x00寄存器的设备ID为0xe7,真的是无语。
下面:关于QMA初始化的代码:设置震动唤醒的配置,希望对大家有所帮助:
/* USER CODE END 0 */
/*HAL库硬件I2C读写接口*/
uint8_t qma_Read_Reg(uint8_t addr)
{
uint8_t data;
HAL_I2C_Mem_Read(&hi2c1,0x24,addr,I2C_MEMADD_SIZE_8BIT,&data,1,100);
return data;
}
void qma_Write_Reg(uint8_t addr, uint8_t data)
{
HAL_I2C_Mem_Write(&hi2c1,0x24,addr,I2C_MEMADD_SIZE_8BIT,&data,1,100);
}
/*
*QMA7981加速度初始化
*
*
*/
void QMA7981_Init()
{
qma_Write_Reg(MODE,0xC0); //将设备设置为活动模式,睡眠时间为0
qma_Write_Reg(0x12,0x8c); //使能计步器
/*设置计步器中断,当计步器计数时,IN1电平为1*/
qma_Write_Reg(0x18,0x1F); //使能唤醒中断
qma_Write_Reg(0x1A,0x73); //使能运动中断映射到IN1
qma_Write_Reg(0X2C,0xF1); //设置计步器计数中断阈值
qma_Write_Reg(0X2E,0x40); //设置计步器计数中断阈值
HAL_Delay(10);
}