TI的CC2530驱动三轴加速度ADX345成功

2019-07-25 14:33发布

已经调通ADXL345的I2C驱动,我的程序设置部分如下
void Init_ADXL345(void){  Single_Write_ADXL345(0x2D,0x00);   //开始设置前选择待机模式参考pdf24页  Single_Write_ADXL345(0x2E,0x00);   //中断INT_ENABLE,设置前先关中断  Single_Write_ADXL345(0x31,0x2B);   //0x0B测量范围,正负16g,右对齐,13位模式,INT_INVERT0x20中断低电平有效  Single_Write_ADXL345(0x2C,0x0F);   //速率设定为3200HZ 参考pdf13页
  Single_Write_ADXL345(0x1E,0x00);   //X 偏移量 根据测试传感器的状态写入pdf29页  Single_Write_ADXL345(0x1F,0x00);   //Y 偏移量 根据测试传感器的状态写入pdf29页  Single_Write_ADXL345(0x20,0x05);   //Z 偏移量 根据测试传感器的状态写入pdf29页
  Single_Write_ADXL345(0x24,0x02);   //THRESH_ACT保存检测活动阀值; (62.5mg/LSB)*0xxx  Single_Write_ADXL345(0x25,0x02);   //THRESH_INACT保存检测静止阀值; (62.5mg/LSB)*0xxx  Single_Write_ADXL345(0x26,0x01);   //TIME_INACT检测静止时间阀值; (1s/LSB)*0xxx  Single_Write_ADXL345(0x27,0xEE);   //ACT_INACT_CTL检轴使能控制活动和静止检测:高位0直流和门限比较,1与前值的差值和门限值比较
  Single_Write_ADXL345(0x2F,0x10);   //中断映射INT_MAP,1发送到INT2  Single_Write_ADXL345(0x2E,0x18);   //中断INT_ENABLE,使能Activity
  Single_Write_ADXL345(0x2D,0x08);   //选择电源模式 测量模式 参考pdf24页
  Single_Read_ADXL345(0x2B);         //中断清零前,应读取ACT_TAP_STATUS寄存器  Single_Read_ADXL345(0x30);         //清中断标志}
然后我把中断1连接到单片机的IO口,在单片机的IO口中断中清中断,中断函数代码如下
HAL_ISR_FUNCTION( halKeyPort0Isr, P0INT_VECTOR ){  HAL_ENTER_ISR();
  if (HAL_KEY_SW_X_PXIFG & HAL_KEY_SW_6_BIT)//中断1接到IO口P06  {    halProcessKeyInterrupt();    Single_Read_ADXL345(0x2B);         //清中断前需读取只读寄存器器0x2B ACT_TAP_STATUS来判断事件触发的第一轴    Single_Read_ADXL345(0x30);         //清中断标志  }
  if (HAL_KEY_SW_X_PXIFG & HAL_KEY_SW_7_BIT)//中断2接到IO口P07  {    halProcessKeyInterrupt();    Single_Read_ADXL345(0x2B);         //清中断前需读取只读寄存器器0x2B ACT_TAP_STATUS来判断事件触发的第一轴    Single_Read_ADXL345(0x30);         //清中断标志     }
  HAL_KEY_SW_X_PXIFG = 0;  HAL_KEY_CPU_PORT_0_IF = 0;
  CLEAR_SLEEP_MODE();  HAL_EXIT_ISR();}
中断INT输出引脚都是用4.7K电阻上拉的,然后才连接到单片机的IO口,我的单片机是CC2530
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。