g-sensor调试
G-SENSOR芯片BMA250调试笔记
1、BMA250采用I2C通信,CLK设置为400K。
2、BMA250的INT1作为中断输出,接CPU的EINT25。主要用来做特定的中断使用,比如倾角(X、Y、Z角度)达到设定值时,将产生中断,通知CPU。这种功能主要做某些特定功能使用,比如翻车时,如果没有熄火,BMA250检测到垂直角度有变化,将提示是否自动报警,如果在规定时间内没有反应,就会自动报警,从而达到尽快救援的目的。
3、原厂提供了相应的Kernel和android 驱动,只需要按步骤添加即可。但原厂提供的kernel代码需要修正,即每次读取X、Y、Z数据完成后,会调用input_sync(bma250->input)函数告诉上层数据要刷新,这个函数会导致外部的其它设备数据也跟着刷新,产生的现象有:机器支持USB鼠标功能,但没插入鼠标,界面上也显示鼠标的光标。把input_sync(bma250->input)函数修改为input_mt_sync(bma250->input)即可解决。
4、测试方法:
(1)把kernel和android驱动都添加完成后,勾上“设置”---->“显示”---->“自动旋转屏幕”,旋转机器时,界面显示顺序也会跟着实际方向变化,若变化的角度与实际角度不符,需要修改android对X、Y、Z的数据处理。
(2)开机后,若把kernel中读X、Y、Z数据的函数bma250_read_accel_xyz相关LOG放开,会发现上层一直在不断的读取这些数据。翻转机器时,这些数据会相应的跟着改变。若在同一角度X、Y、Z数据无特别大的变化,说明数据读取正常。
(3)使能BMA250_ENABLE_INT1时,设置好BMA250_INT_ENABLE1_REG寄存器,则可以看到当翻转机器时,CPU的EINT25会检测到BMA250产生的中断,执行中断线程。