【英飞凌XENSIV™PASCO25VSensor2Go套件】连接单片机

电子科技先知晓 2024-12-27 08:32:40

是使用的PAS CO2 5V Sensor2Go套件进行测试的,这次准备使用其它单片机直接对传感器进行测量。

根据文档中的要求将单片机和传感器的6个引脚按下图连接:

实物接好线后如下:

主要程序如下。

IIC地址定义:

#define CO2_READ_Addr 0X28#define CO2_WRITE_Addr 0X29

IIC初始化:

void IIC0_Init(void){struct bflb_device_s* gpio;gpio = bflb_device_get_by_name("gpio");/* I2C0_SCL */bflb_gpio_init(gpio, GPIO_PIN_0, GPIO_FUNC_I2C0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);/* I2C0_SDA */bflb_gpio_init(gpio, GPIO_PIN_1, GPIO_FUNC_I2C0 | GPIO_ALTERNATE | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_1);/* 通信速率400K */i2c = bflb_device_get_by_name("i2c0");bflb_i2c_init(i2c, 400000);}读取主要几个寄存器值:

while (1) {IIC_ReadReg(CO2_READ_Addr, 0x01, Buff, 1);printf("PASCO2 Reg 01: %d\r\n\r\n",Buff[0]);bflb_mtimer_delay_ms(50);IIC_ReadReg(CO2_READ_Addr, 0x02, Buff, 1);printf("PASCO2 Reg 02: %d\r\n\r\n",Buff[0]);bflb_mtimer_delay_ms(50);IIC_ReadReg(CO2_READ_Addr, 0x03, Buff, 1);printf("PASCO2 Reg 03: %d\r\n\r\n",Buff[0]);bflb_mtimer_delay_ms(50);IIC_ReadReg(CO2_READ_Addr, 0x04, Buff, 1);printf("PASCO2 Reg 04: %d\r\n\r\n",Buff[0]);bflb_mtimer_delay_ms(50);IIC_ReadReg(CO2_READ_Addr, 0x05, Buff, 1);printf("PASCO2 Reg 05: %d\r\n\r\n",Buff[0]);bflb_mtimer_delay_ms(50);IIC_ReadReg(CO2_READ_Addr, 0x06, Buff, 1);printf("PASCO2 Reg 06: %d\r\n\r\n",Buff[0]);

bflb_mtimer_delay_ms(30000);

}程序运行后,连续测量值如下:

具体分析下01-06寄存器值:

寄存器01:144,16进制:0x90.

根据文档描述:

按照上面的接线方式,ORVS位为何会报错?

寄存器02、03:60

这是缺省值,表示采集周期为60秒,也即一分钟采集一次。

寄存器04:38,16进制:0x26

根据文档描述:

04寄存器中缺省采集模式为空闲模式,之所以现在是连续采集模式,是因为PWM_DIS引脚接地了。

寄存器05、06:CO2浓度值。

根据文档描述:

浓度值为2个有符号补码短整型,从实际测量值来看,高字节为负数,和采用套件及配套软件测量值900ppm左右无法对应,后边将抽时间再继续研究下。原文

0 阅读:0
电子科技先知晓

电子科技先知晓

感谢大家的关注