基于MSP430FR6889的BMI160外部中断唤醒功能调试求助
MSP430FR6889无法通过BMI160中断唤醒休眠模式的排查方案
一、BMI160中断配置验证
- 确认运动检测中断已启用:检查
INT_EN_0(0x11)和INT_EN_1(0x12)寄存器,确保运动检测相关中断位已置1(参考BMI160手册第12章中断配置)。 - 匹配中断触发方式:MSP430FR6889外部中断支持边沿触发(上升/下降),需确保BMI160的
INT_OUT_CTRL(0x15)寄存器配置的中断输出极性(电平/边沿)与MSP430侧一致。比如MSP430设为下降沿触发时,BMI160需配置为低电平或下降沿输出中断。 - 确认中断引脚功能:检查BMI160的
INT_LATCH(0x14)寄存器,确保中断信号为脉冲或锁存模式,避免MSP430无法检测到触发信号。
二、MSP430FR6889侧配置检查
- 外部中断引脚初始化:
- 配置引脚为输入模式:
PxDIR &= ~BITx - 设置中断触发边沿:
PxIES |= BITx(下降沿)或PxIES &= ~BITx(上升沿),需与BMI160输出极性匹配 - 使能引脚中断:
PxIE |= BITx - 清除中断标志位:
PxIFG &= ~BITx
- 配置引脚为输入模式:
- 休眠模式与中断唤醒兼容性:MSP430FR6889的LPM3/LPM4模式下外部中断可唤醒,需确保全局中断已启用:进入休眠前执行
__bis_SR_register(LPM3_bits + GIE)(以LPM3为例),避免GIE未开启导致无法唤醒。 - 中断服务函数(ISR)正确性:ISR中需先清除中断标志位
PxIFG &= ~BITx,避免重复触发;若使用FR系列端口锁存,需确保解锁相关配置。
三、硬件与信号验证
- 检查物理连接:确认BMI160的INT引脚与MSP430的外部中断引脚连接牢固,无虚焊或断路。
- 用示波器检测中断信号:移动加速度计时,观察INT引脚是否产生符合配置的电平变化或边沿信号,排除BMI160未输出中断的硬件问题。
常见代码错误示例
- 遗漏全局中断使能:进入休眠前未设置
GIE位,导致中断无法唤醒MCU。 - BMI160中断配置未生效:初始化时未正确写入中断寄存器(比如I2C/SPI写操作失败,未校验寄存器值)。
- 中断标志位未清除:ISR中未清除
PxIFG,导致MCU持续触发中断或无法进入休眠。
内容的提问来源于stack exchange,提问作者Lalith Gv
相关产品推荐
相关产品推荐

