BMA150例程Word文档下载推荐.docx
- 文档编号:17247340
- 上传时间:2022-11-29
- 格式:DOCX
- 页数:31
- 大小:175.46KB
BMA150例程Word文档下载推荐.docx
《BMA150例程Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《BMA150例程Word文档下载推荐.docx(31页珍藏版)》请在冰豆网上搜索。
#defineBMA150_HG_THRES0x0e
#defineBMA150_HG_DUR0x0f
#defineBMA150_ANY_MOTION0x10
#defineBMA150_CUSTOMER1_REG0x12
#defineBMA150_CUSTOMER2_REG0x13
#defineBMA150_RANGE_BWIDTH_REG0x14
#defineBMA150_CONF2_REG0x15
#defineBMA150_OFFS_GAIN_X_REG0x16
#defineBMA150_OFFS_GAIN_Y_REG0x17
#defineBMA150_OFFS_GAIN_Z_REG0x18
#defineBMA150_OFFS_GAIN_T_REG0x19
#defineBMA150_OFFSET_X_REG0x1a
#defineBMA150_OFFSET_Y_REG0x1b
#defineBMA150_OFFSET_Z_REG0x1c
#defineBMA150_OFFSET_T_REG0x1d
#defineBMA150_CHIP_ID__POS0
#defineBMA150_CHIP_ID__MSK0x07
#defineBMA150_CHIP_ID__LEN3
#defineBMA150_CHIP_ID__REGBMA150_CHIP_ID_REG
/*DATAREGISTERS*/
#defineBMA150_NEW_DATA_X__POS0
#defineBMA150_NEW_DATA_X__LEN1
#defineBMA150_NEW_DATA_X__MSK0x01
#defineBMA150_NEW_DATA_X__REGBMA150_X_AXIS_LSB_REG
#defineBMA150_ACC_X_LSB__POS6
#defineBMA150_ACC_X_LSB__LEN2
#defineBMA150_ACC_X_LSB__MSK0xC0
#defineBMA150_ACC_X_LSB__REGBMA150_X_AXIS_LSB_REG
#defineBMA150_ACC_X_MSB__POS0
#defineBMA150_ACC_X_MSB__LEN8
#defineBMA150_ACC_X_MSB__MSK0xFF
#defineBMA150_ACC_X_MSB__REGBMA150_X_AXIS_MSB_REG
#defineBMA150_ACC_Y_LSB__POS6
#defineBMA150_ACC_Y_LSB__LEN2
#defineBMA150_ACC_Y_LSB__MSK0xC0
#defineBMA150_ACC_Y_LSB__REGBMA150_Y_AXIS_LSB_REG
#defineBMA150_ACC_Y_MSB__POS0
#defineBMA150_ACC_Y_MSB__LEN8
#defineBMA150_ACC_Y_MSB__MSK0xFF
#defineBMA150_ACC_Y_MSB__REGBMA150_Y_AXIS_MSB_REG
#defineBMA150_ACC_Z_LSB__POS6
#defineBMA150_ACC_Z_LSB__LEN2
#defineBMA150_ACC_Z_LSB__MSK0xC0
#defineBMA150_ACC_Z_LSB__REGBMA150_Z_AXIS_LSB_REG
#defineBMA150_ACC_Z_MSB__POS0
#defineBMA150_ACC_Z_MSB__LEN8
#defineBMA150_ACC_Z_MSB__MSK0xFF
#defineBMA150_ACC_Z_MSB__REGBMA150_Z_AXIS_MSB_REG
/*CONTROLBITS*/
#defineBMA150_SLEEP__POS0
#defineBMA150_SLEEP__LEN1
#defineBMA150_SLEEP__MSK0x01
#defineBMA150_SLEEP__REGBMA150_CTRL_REG
#defineBMA150_SOFT_RESET__POS1
#defineBMA150_SOFT_RESET__LEN1
#defineBMA150_SOFT_RESET__MSK0x02
#defineBMA150_SOFT_RESET__REGBMA150_CTRL_REG
#defineBMA150_EE_W__POS4
#defineBMA150_EE_W__LEN1
#defineBMA150_EE_W__MSK0x10
#defineBMA150_EE_W__REGBMA150_CTRL_REG
#defineBMA150_UPDATE_IMAGE__POS5
#defineBMA150_UPDATE_IMAGE__LEN1
#defineBMA150_UPDATE_IMAGE__MSK0x20
#defineBMA150_UPDATE_IMAGE__REGBMA150_CTRL_REG
#defineBMA150_RESET_INT__POS6
#defineBMA150_RESET_INT__LEN1
#defineBMA150_RESET_INT__MSK0x40
#defineBMA150_RESET_INT__REGBMA150_CTRL_REG
/*BANDWIDTHdependenddefinitions*/
#defineBMA150_BANDWIDTH__POS0
#defineBMA150_BANDWIDTH__LEN3
#defineBMA150_BANDWIDTH__MSK0x07
#defineBMA150_BANDWIDTH__REGBMA150_RANGE_BWIDTH_REG
/*RANGE*/
#defineBMA150_RANGE__POS3
#defineBMA150_RANGE__LEN2
#defineBMA150_RANGE__MSK0x18
#defineBMA150_RANGE__REGBMA150_RANGE_BWIDTH_REG
/*WAKEUP*/
#defineBMA150_WAKE_UP__POS0
#defineBMA150_WAKE_UP__LEN1
#defineBMA150_WAKE_UP__MSK0x01
#defineBMA150_WAKE_UP__REGBMA150_CONF2_REG
#defineBMA150_WAKE_UP_PAUSE__POS1
#defineBMA150_WAKE_UP_PAUSE__LEN2
#defineBMA150_WAKE_UP_PAUSE__MSK0x06
#defineBMA150_WAKE_UP_PAUSE__REGBMA150_CONF2_REG
#defineBMA150_GET_BITSLICE(regvar,bitname)\
((regvar&
bitname##__MSK)>
>
bitname##__POS)
#defineBMA150_SET_BITSLICE(regvar,bitname,val)\
~bitname##__MSK)|((val<
<
bitname##__POS)&
bitname##__MSK))
/*rangeandbandwidth*/
#defineBMA150_RANGE_2G0
#defineBMA150_RANGE_4G1
#defineBMA150_RANGE_8G2
#defineBMA150_BW_25HZ0
#defineBMA150_BW_50HZ1
#defineBMA150_BW_100HZ2
#defineBMA150_BW_190HZ3
#defineBMA150_BW_375HZ4
#defineBMA150_BW_750HZ5
#defineBMA150_BW_1500HZ6
/*modesettings*/
#defineBMA150_MODE_NORMAL0
#defineBMA150_MODE_SLEEP2
#defineBMA150_MODE_WAKE_UP3
/*wake_up_pause*/
#defineBMA150_PAUSE_20MS0
#defineBMA150_PAUSE_80MS1
#defineBMA150_PAUSE_320MS2
#defineBMA150_PAUSE_2560MS3
/*中断类型*/
#defineBMA150_ENABLE_LG1
#defineBMA150_ENABLE_HG2
#defineBMA150_ENABLE_ANY_MOTION3
#defineBMA150_ENABLE_ALART4
structbma150acc{
s16x,
y,
z;
};
u8bma150_smbus_write_byte(u8reg_addr,u8data);
u8bma150_smbus_read_byte(u8reg_addr,u8*data,u8len);
u8bma150_get_chip_id(u8*chip_id);
u8bma150_read_accel_xyz(structbma150acc*acc);
u8bma150_set_mode(u8mode);
u8bma150_set_wake_up_pause(u8pause);
u8bma150_set_range(u8Range);
u8bma150_get_range(u8*Range);
u8bma150_set_bandwidth(u8BW);
u8bma150_get_bandwidth(u8*BW);
u8bma150_get_status(u8*status);
u8bma150_get_temp(u8*temp);
u8bma150_reset_int(void);
u8bma150_update_image(void);
u8bma150_ee_w(u8status);
u8bma150_self_test(u8status);
u8bma150_soft_reset(void);
u8bma150_set_int_mode(u8mode);
u8bma150_int_trig_mode(u8mode);
u8bma150_counter(u8counter);
u8bma150_set_thres(u8int_type,u8thres);
u8bma150_set_dur(u8int_type,u8dur);
u8bma150_set_hyst(u8hyst);
****************IIC通信低层**************************
voidI2C_IO_Init(void)
{
SetIoHi(bma_sda);
SetIoHi(bma_scl);
SetIoOut(bma_scl);
SetIoOut(bma_sda);
}
voidI2C_Start(void)
{
Delay();
SetIoLo(bma_sda);
SetIoLo(bma_scl);
voidI2C_Stop(void)
{
voidI2C_Ack(void)
voidI2C_NoAck(void)
u8Check_Acknowledge(void)
u8i=100;
SetIoIn(bma_sda);
SetIoHi(bma_scl);
while(GetIo(bma_sda))
{
if(--i==0)break;
}
returni;
/******************************************************
函数名:
I2C_SendByte
******************************************************/
voidI2C_SendByte(u8byte)
u8i;
for(i=0;
i<
8;
i++)
if((byte&
0x80))
{
SetIoHi(bma_sda);
}
else
{
SetIoLo(bma_sda);
}
Delay();
SetIoLo(bma_scl);
byte<
=1;
I2C_ReadByte
u8I2C_ReadByte(void)
u8byte=0;
byte<
if(GetIo(bma_sda))
byte|=1;
returnbyte;
***********************BMA150通信***********************
bma150_smbus_write_byte
功能:
bma150iic写单字节
参数:
写的寄存器地址,写的数据
返回:
1,写失败0,写成功
备注:
无
******************************************************/
u8bma150_smbus_write_byte(u8reg_addr,u8data)
I2C_Start();
I2C_SendByte(0x70);
//从机地址
if(!
Check_Acknowledge())
I2C_Stop();
return1;
//未响应
I2C_SendByte(reg_addr);
Check_Acknowledge())
}
I2C_SendByte(data);
I2C_Stop();
return0;
bma150_smbus_read_byte
bma150iic读多字节
读的寄存器地址,读的数据指针,读的长度
1,读失败0,读成功
u8bma150_smbus_read_byte(u8reg_addr,u8*data,u8len)
I2C_SendByte(0x71);
i<
len;
i++)
data[i]=I2C_ReadByte();
if(i<
(len-1))I2C_Ack();
elseI2C_NoAck();
bma150_get_chip_id
读取bma150芯片id
存放ID指针
1,失败0,成功
u8bma150_get_chip_id(u8*chip_id)
if(bma150_smbus_read_byte(BMA150_CHIP_ID_REG,chip_id,1))return1;
*chip_id&
=BMA150_CHIP_ID__MSK;
bma150_read_accel_xyz
获取XYZ加速度值
加速度值存放结构体
u8bma150_read_accel_xyz(structbma150acc*acc)
u8data[6];
if(bma150_smbus_read_byte(BMA150_ACC_X_LSB__REG,data,6))return1;
acc->
x=BMA150_GET_BITSLICE(data[0],BMA150_ACC_X_LSB)|
(BMA150_GET_BITSLICE(data[1],BMA150_ACC_X_MSB)<
BMA150_ACC_X_LSB__LEN);
x=acc->
x<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- BMA150 例程
![提示](https://static.bdocx.com/images/bang_tan.gif)