rohm社区举办活动的时候拿到了评估的传感器,在arduino上面跑过一次,今天再次拿出来用其他mcu跑一次,顺带总结一下。正品现货可以找rohm原厂代理代理唯样,新人还有活动。
1、基本特性
压阻式气压传感器 内置温度补偿 i2c接口 压力范围:300hpa~1100hpa 平均功耗:3ua 运行温度:-40℃~85℃ 小封装 :2.50mm 2.50mm1.0mm 相对精度:±0.12hpa 绝对精度:±1hpa 主要应用:智能手机、医疗保健、移动设备等 2、引脚描述
dreg和vss之间需要接一个旁路电容,大小为0.22uf;
vdd电源供电,vss接gnd,scl、sda用于i2c通讯,drdy引脚一般用于触发mcu外部中断。
3、寄存器描述
4、软件设计
4.1、寄存器定义以及参数设置定义
#define bm1383aglv_i2c_addr 0x5d
#define bm1383aglv_id1 0x0f
#define bm1383aglv_id2 0x10
#define bm1383aglv_pwr_down 0x12
//pwr_down[0]
#define power_down 0x00
#define active 0x01
//reserved[7:1]
#define bm1383aglv_reset 0x13
//rstb[0]
#define measurement_reset 0x00
#define measurement_active 0x01
//reserved[7:1]
#define bm1383aglv_mode_control 0x14
//mode [1:0]
#define mode_stand_by 0x00
#define mode_one_shot 0x01
#define mode_continuous 0x02
#define mode_prohibition 0x03
//reserved[2]
//reserved[3]
#define default_1 0x08
//drdy pin enable[4]
#define drdy_pin_enable 0x10
#define drdy_pin_disable 0x00
//set the average number of measurement data[7:5]
#define ave_num_1 0x00
#define ave_num_2 0x20
#define ave_num_4 0x40
#define ave_num_8 0x60
#define ave_num_16 0x80
#define ave_num_32 0xa0
#define ave_num_64 0xc0
#define ave_num_inhibit 0xe0
#define bm1383aglv_status 0x19
//pressure and temperature measurement data ready bit[0]
#define data_output_available 0x01
#define data_output_not_available 0x00
//reserved[7:1]
#define bm1383aglv_pressure_msb 0x1a
#define bm1383aglv_pressure_lsb 0x1b
#define bm1383aglv_pressure_dec 0x1c
//pressure data output (decimal extension 6bit)[7:2]
//reserved[1:0]
#define bm1383aglv_temperature_msb 0x1d
#define bm1383aglv_temperature_lsb 0x1e
4.2、读取芯片id
设备id一般都是一个固定值,芯片出厂的时候已经固化在芯片里面了,只读,可用于检测i2c通信是否正常、检测芯片是否存在。
bool bm1383aglvcheck(void)
{
uint16 chip_id=0;
chip_id=bm1383aglv_readregu16(bm1383aglv_id1);
if(chip_id==0x32e0)
{
return true;
}
else
{
return false;
}
}
4.3、芯片初始化设置
主要是3个寄存器power_down(12h)、reset(13h) 、mode_control(14h),其中
power_down(12h)主要是设置芯片上电启动:
reset(13h)主要设置芯片启动测量控制功能:
mode_control(14h)主要用于设置芯片测量模式、测量次数、以及是否使用drdy引脚:
芯片手册中也给了启动流程,先是往寄存器12h中写入0x01,延时至少2ms之后,往寄存器13h中写入0x01即可:
void bm1383aglvinit(void)
{
bm1383aglv_writeregu8(bm1383aglv_pwr_down,active);
//设置芯片上电
_delay_ms(5);//延时必须大于2ms
bm1383aglv_writeregu8(bm1383aglv_reset,measurement_active);
//启动测量功能
bm1383aglv_writeregu8(bm1383aglv_mode_control,mode_continuous|default_1|
drdy_pin_disable|ave_num_8);
//持续测量模式、每次测量8次、不使能drdy引脚
}
4.4、读取数据
读取数据之前,我们要先判断一下是否采样完成,涉及到寄存器status(19h),当bit[0]为1的时候,表示采样完成,可以读取数据:
寄存器pressure_msb(1ah) 、pressure_lsb(1bh)、pressure_lsb(least 6bit) ( 1ch ) 就是采样出的压力值,需要转换为实际的压力值:
寄存器temperature_msb(1dh) 、temperature_lsb(1eh)是采样出的温度值,同样的需要转化为实际温度:
void bm1383aglvread(void)
{
uint32 pressure_count=0;
uint8 pressure_m , pressure_l,pressure_d;
float pressure;
uint32 temperture_count=0;
uint8 temperture_m , temperture_l;
float temperture;
while(bm1383aglv_readregu8(bm1383aglv_status)&data_output_available
!=data_output_available);//等待当前测量完成
pressure_m=bm1383aglv_readregu8(bm1383aglv_pressure_msb);
pressure_l=bm1383aglv_readregu8(bm1383aglv_pressure_lsb);
pressure_d=bm1383aglv_readregu8(bm1383aglv_pressure_dec);
pressure_d=pressure_d>>2;//高6位有效
pressure_count=pressure_m<<14;
pressure_count+=pressure_l<<6;
pressure_count+=pressure_d;
pressure=pressure_count/2048.0;
printf(“pressure:%.2f hpa\r\n”,pressure);
temperture_m=bm1383aglv_readregu8(bm1383aglv_temperature_msb);
temperture_l=bm1383aglv_readregu8(bm1383aglv_temperature_lsb);
temperture_count=temperture_m<<8;
temperture_count+=temperture_l;
temperture=temperture_count/32.0;
printf(“temperture:%f ℃\r\n”,temperture);
}
4.5、测试读取数据
4.6、进入休眠
void bm1383aglvsleep(void)
{
bm1383aglv_writeregu8(bm1383aglv_reset,measurement_reset);
_delay_ms(5);
bm1383aglv_writeregu8(bm1383aglv_pwr_down,power_down);
}
边缘控制器在边缘计算中的作用是什么
HT与OKB的通证销毁在区块链业界中产生了哪些影响
CVPR 2019竞赛第一解决方案分享
大唐电信1.72亿美元收购中芯国际16.6%股权
电镀工艺对人体有害吗
低功耗气压传感器BM1383AGLV
家庭电路的组成及作用
秘密收购室内定位公司 苹果要闷声搞事情?
2035年5G在全球创造的潜在销售活动将达12.3万亿美元
iPhone 8最新消息:iphone8中国市场遇冷!首销半小时还没卖完,小米MIX2却58秒售罄
MSN搜索测试版现身 结束与雅虎合作为时不远
三菱PLC和昆仑通态之间无线通信(通信口)
剖析AI芯片市场:为什么要加强深度学习
什么是边缘计算网关,它对工业联网的作用是什么
知用近场探头在辐射干扰源定位测试的应用
基于5G网络的确定化网络实现架构和关键技术分析
如何将220V交流电转化成12V直流电呢?有哪些方法?
骨传导耳机什么牌子的好、骨传导蓝牙耳机品牌推荐
31日首款WP手机lumia800c开售 提供黑白双版本
高通:高集成解决方案产品优势