CCS811编程和端口指南文档格式.docx

上传人:b****8 文档编号:22369301 上传时间:2023-02-03 格式:DOCX 页数:28 大小:268.37KB
下载 相关 举报
CCS811编程和端口指南文档格式.docx_第1页
第1页 / 共28页
CCS811编程和端口指南文档格式.docx_第2页
第2页 / 共28页
CCS811编程和端口指南文档格式.docx_第3页
第3页 / 共28页
CCS811编程和端口指南文档格式.docx_第4页
第4页 / 共28页
CCS811编程和端口指南文档格式.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

CCS811编程和端口指南文档格式.docx

《CCS811编程和端口指南文档格式.docx》由会员分享,可在线阅读,更多相关《CCS811编程和端口指南文档格式.docx(28页珍藏版)》请在冰豆网上搜索。

CCS811编程和端口指南文档格式.docx

0x02

3

ALG_RE$ULT_DATA

Algorithmresult.Themostsignificant2bytesaretheeCO2ppmtthe2bytesofsecondmostsignificancearetheTVOCppb.

0x03

2

RAW_DATA

RawdatafromtheADCreading.Formeinformationpleasecontactyourlocalsupportrepresentativw・

OxOS

4

ENV_DATA

Read/Write

Environmentdataregisterforholdingambienttemperatureandrelativehumiditydatafromexternalsenso「.U$«

fordynamiccompensation

0x06

NTC

Negativethermalcoefficientthe-rmistaProvidesthevoltageacrosstherefererresistorandthevoltageacrosstheNTCresistor一fromwhichtheambienttemperaturecanbedetermined.

0x10

5

THRESHOLDS

Thresholdregisters.TheCCS811suppexlowandhighthresholdwithprogrammablehysteresis.Crossingathresholdineitherdirectionresults-intnINTsignalbeingasserted・

Oxll

BASELINE

Encodedbaselinevaluethatcanberea«

andwrittenbytheapplicationsoftware

0x20

HW」D

HardwareID(value=0x81).

0x21

HW_VERSION

Hardwarerevision.RevisionnumberoftheCC5811.Formoreinformationpleaseseethedatasheet.

0x23

FWBootVersion

Bootversionnumber.

0x24

Applicationcodeversionnumber.

OxEO

ERRORJD

ErrorID.Whenthestatusregisterreportsanerroritssourceislocatedinthisregister

0xF4

APP.START

Applicationstart.

OxFF

SW.RESET

Softwarereset.Writingthesequence0xllr

OxES,0x72,0x8Atothismailbox,resetstheCCS811andplacesitinbootmode・

状态寄存器(0xOO)

下表简述了状态寄存器中的各位:

7

6

FW_MODE

-

APP_VALID

DATA_READY

ERROR

表3:

状态寄存器字段,叙述了寄存器中各位功能:

BITS

FIELD

DESCRIPTION

0:

固件处于引导模式,并允许新固件加载

1:

固件是在应用程序模式。

CCS811准备好ADC测量

6:

5

保留位

APP_VALID

没有应用程序固件加载

有效的应用程序加载固件

没有新数据样本已经准备好

1:

一个新的数据样本在ALG_RESULT_DATA,这位在

ALG_RESULT_DATA读I2C接口时清零。

2:

1

0:

没有错误发生在I2C或传感器

有错误发生在I2C或传感器,ERROR_ID寄存器包含在源错误里

表4:

测量模式寄存器,表示了在测量模式寄存器中的字段。

6:

DRIVEMODE

INTERRUPT

THRESH

F表详细描述了在测量模式寄存器各字段。

DESCIPTION

保留

DRIVE_MODE

000:

闲置,不开启测量,这是最低电平模式。

001:

IAQMode1-A每秒钟执行测量。

010:

IAQMode2,-每A10秒执行测量。

011:

IAQMode3,-每\60秒执行测量。

100:

IAQMode4-RawDataMo部算法,每隔250

毫秒测量,例如酒精检测。

一个新样值被放在ALG_RESULT_DAT和RAW_DATA

寄存器中。

状态寄存器中的DATA_READY位设定测量

的时间间隔。

0:

中断生成是禁用的。

当一个新信号已经存在ALG_RESULT_DATA中时,nINT

信号宣称低驱动。

当ALG_RESULT_DATA时,就会停止并置为低电平。

被I2C端口读数

中断方式是程序在MEAS—MODE中断。

女口果MEAS_MODE[INTERRUPT]=1,当

ALG_RESULT_DATAeCO2读取一个阈值的时候设置在THRESHOLDS寄存器,这位使得CCS811发出nINT信号,而不只是延迟。

表6:

错误ID寄存器,表示了错误ID寄存器的字段。

7:

HEATER

SUPPLY

FAULT

MAX

RESISTANCI

MEASMODE

三INVALID

READ_REG

INVALID

MSG

表7:

错误ID寄存器的原因和反应,描述了在错误ID寄存器中的字段和反应,当STATUS[ERROR]

=1时,寄存器是非0.

错误

潜在原因

推存行动

MSG」NVALID

CCS811收到一个I2C向本站的写请求,但是邮箱ID或者大小错误。

检查主机发送一个正确的序列

READ_REG_INVALID

CCS811收到一个I2C读请求,对应的邮箱ID是无效的。

检查主机发送目的序列

MEASMODE_INVALID

CCS811收到I2C对MEAS_MODE不

支持的写模式

检查主机写一个支持模式

MAX_RESISTANCE

氧化物材料不再正常运行,可能是:

*坏了*非常环境*加热器不操作

检查加热器故障标志

确保传感器在一个典型的大气和记

录任何传感器可能以前见过的环境

HEATER_FAULT

焊接,PCB或损坏问题

检查焊接。

在一个无源的板块上5和6之间应该有大约的38欧姆。

HEATER_SUPPLY

焊接或PCB的问题

错误ID寄存器在下列情况下将会清空:

•应用程序软件在I2C接口上执行读取错误寄存器操作。

•应用软件执行SW_RESET序列通过给SW_RESET邮箱编写相应的代码。

•触发复位功能

•发出nRESET信号

可能超过1错误标志设置在这个寄存器,因此每次读这个寄存器时应用软件应该单独检查每一位。

下面的例子将使用下面的伪代码来帮助说明CCS811所必需的功能和编程。

#defineSTATUS_REG0x00

#defineMEAS_MODE_REG0x01

#defineALG_RESULT_DATA0x02

#defineENV_DATA0x05

#defineNTC_REG0x06

#defineTHRESHOLDS0x10

#defineBASELINE0x11

#defineHW_ID_REG0x20

#defineERROR_ID_REG0xE0

#defineAPP_START_REG0xF4

#defineSW_RESET0xFF

#defineCCS_811_ADDRESS0x5A

#defineGPIO_WAKE0x5

#defineDRIVE_MODE_IDLE0x0

#defineDRIVE_MODE_1SEC0x10

#defineDRIVE_MODE_10SEC0x20

#defineDRIVE_MODE_60SEC0x30

#defineINTERRUPT_DRIVEN0x8

#defineTHRESHOLDS_ENABLED0x4

u8i2c_buff[8];

boolwake_gpio_enabled=true;

voidi2c_write(u8address,u8register,u8*tx_data_ptr,u8length);

voidi2c_read(u8address,u8*rx_data_ptr,u8length);

voidgpio_write(u8gpio_id,u8level);

伪代码使用全局数组,i2c_buff,来支持传输数据和接收数据。

为了便于说明,假设读事务之前不会自动执行设置写。

一些环境抽象这个API。

I2C功能原型基本是不言自明的:

•u8address:

这个参数的值是CCS811地址(CCS_811_ADDRESS)。

•u8register:

这个参数是邮箱ID

•u8rx_data_ptr/tx_data_ptr:

指向缓冲区的指针调用函数将在那里访问数据,写入CCS811或存储读取CCS811的数据,i2c_buff在下面大部分的例子中

gpio_write函数使用的主机写GPIO输出(输入CCS811)逻辑高或低电平。

其参数如下所述:

•u8gpio_id:

GPIO数写到逻辑高或低。

•u8gpio_id:

0为逻辑低,1用于逻辑高。

更多信息可参考如何使用它,可参考HandlingnWAKEUsingaGPIO文档。

为简单起见,这例子不显任何物理层的处理操作,例如I2C中止和超时。

CCS811I2C数据字节顺序

当读写多个字节的用户必须注意CCS811使用的字节顺序。

CCS811假定最重要级别的字节排在较小的重要性字节的前面。

例如阅读一个16位标量值为0x11aa,总线上值为0x11的字节出现在字节0xaa之前。

I2C写事务

在预期的操作模式,主机必须执行I2C写事务来使能和配置传感器。

当编写一个邮箱时,例如

MEAS_MODE寄存器1s驱动模式和中断启用时,用户软件将以类似的方式执行下面的代码示例:

i2c_buff[0]=DRIVE_MODE_1SEC|INTERRUPT_DRIVEN;

i2c_write(CCS_811_ADDRESS,MEAS_MODE_REG,i2c_buff,1);

如果这事务在协议分析仪看起来类似图2所示:

awvnte醉axu1

1-1厂

Figure2:

1乂’rifeiucituMEAS_MOD]SecondDri^eMiuk,[urerruplhEnahlcd

注意,I2C的地址占据了最重要的7位的第一个字节传输。

最不重要的比特表明分别写或读一个逻辑0

或逻辑1。

这是一个写,因此为什么这样的字节为0xb4(i.e.0x5A<

<

1=0xB4)。

下一个字节的是邮箱

MEAS_MODE的ID,最后的数据0x18(DRIVE_MODE=1s,中断使能)是用来写到MEAS_MODE邮箱

寄存器的。

I2C读事务

I2C读事务在读之前必须设置写,启用目标邮箱。

这最好用一个例子来说明。

假设用户需要读取状态寄存器,示例代码如下:

i2c_write(CCS_811_ADDRESS,STATUS_REG,i2c_buff,0);

i2c_read(CCS_811_ADDRESS,i2c_buff,1);

查看这个协议分析仪:

图3表示了设置写入邮箱0x00确保以后所有读事务确定目标状态寄存器。

注意在这个实例中写入数

据的大小为0字节,因此i2c_buff数组不需要写入任何数据。

读取命令中包含的数据的大小在这个邮箱的寄存器中,在这里为1字节。

i2c_read函数将存储i2c_buff[0]状态寄存器的值即0x98,根据状态寄存器中字段的数值,用户软件可以做岀相应的反应。

硬件ID(0x20)寄存器处理

硬件ID寄存器,有时成为“我是谁”寄存器,可以在CCS811初始化时被读取以确保这设备确实是CCS811。

当这个邮箱为读取的目标,其代理的寄存器将返回值0x81。

读这个寄存器的主机软件将执行以

下:

i2c_write(CCS_811_ADDRESS,HW_ID_REG,i2c_buff,0);

i2c_read(CCS_811_ADDRESS,i2c_buff,1);

if(i2c_buff[0]!

=0x81)

returnERROR_NOT_A_CCS811;

设置写邮箱HW_ID先于实际阅读代理寄存器。

每次读字节长度为1字节,它必须返回0x81i2c_buff

数组,否则设备将不会被主机的软件配置。

由此产生的事务在I2C会出现如下协议分析仪截图如图4所示:

StfupWhCeIDIO3C04I+ACKKZD由AOE

Fijiurv4;

IR»

dTrankactiiintoKTWID

APP_START(0xf4)处理:

邮箱ID为0xF4,APP_START,用于CCS811从启动过渡到应用程序模式状态。

请注意这个邮箱

的代理寄存器大小为0字节。

因此触发状态转换设置所需要的是不写数据。

一个典型的流程如下:

if(!

(i2c_buff[0]&

0x10))

returnERROR_NO_VALID_APP;

i2c_write(CCS_811_ADDRESS,APP_START_REG,i2c_buff,0);

首先读取状态寄存器和APP_VALID标志检查。

如果没有设置一个错误条件返回和有效应用程序

固件应该下载到CCS811o如果有有效的固件,然后设置写APP_START邮箱,将CCS811从引导状态过渡到应用程序模式。

逻辑分析仪捕获说明了应用程序已经启动之前传感器的状态:

Figure5:

StatusRtfikTefFrtarTcATTSTARTSetupWrite

图5显示了状态寄存器返回值0x10,这表明存在一个有效的应用程序但传感器还在启动模式。

I2C总

线的下一个事务是一个设置写邮箱0xf4,注意因为APP_START邮箱没有底层寄存器所以大小为零。

续读取状态寄存器的返回值为0x90,即这有一个有效的应用程序和传感器是应用程序模式。

DATA_READY

标志将保持零到一个有效的驱动模式写入MEAS_MODE寄存器。

下载固件到CCS811的信息,请参阅cc-000922执行应用程序二进制代码文件下载。

主机软件轮询方式

传感器的一个操作方式是轮询模式。

在这种模式下所需的主机软件是周期性,在同一时期从传感器读

取数据的程序驱动模式。

一个定时器中断在主机应用程序可以用来读取传感器的eCO2和TVOC的值。

下面可以看到一个典型的例子:

u8*timer_routine_read_data(){

if(i2c_buff&

0x8)//checkifdataready

{

i2c_write(CCS_811_ADDRESS,ALG_RESULT_DATA,i2c_buff,0);

i2c_read(CCS_811_ADDRESS,i2c_buff,4);

}

returni2c_buff;

读取状态寄存器监察数据是否准备好了,如果数据已经准备好了,eCO2和TVOC结果被通过执行一

个4字节数据读取ALG_RESULT_DATA阅读。

该软件可以根据i2c_buff位置的eCO2和TVOC的结果

处理数据。

协议分析器将显示类似于图6的图像:

niMMiinhiMiiimmi

Kijure6:

FnllinuModeforCCSN]1DataSnntpks

接下来设置写到邮箱0

基本地设置写和后续读1个字节到邮箱0x0去检查数据的状态是否准备好

i2c_buff具体过程如下:

x2和一个4字节读取。

数据将存储在

i2c_buff[0]=0x01

i2c_buff[1]=0x90

i2c_buff[2]=0x00

i2c_buff[3]=0x32

注意,i2c_buff[0]和i2c_buff[1]值应该转换为16位0X0190类型字段的值(10进制400),这是当前eCO2读取传感器.。

同样的字节值i2c_buff[2]和i2c_buff[3]应该转换为16位值0X0032这是TVOC,相当于10进制50。

这个例子假定从ALG_RESULT_DATA读取4个字节的数据。

从ALG_RESULT_DATA可以读到八个字节。

表8所示的格式:

ALG_RESULT_DATA格式。

Byte:

2:

Parameter:

ECO2

TVOC

ERRORID

用户可以定义一个结构来保存这些数据具体如下:

typedefstruct{

u16eco2;

u16tvoc;

u8status;

u8error_id;

u16raw_data;

}ccs811_measurement_t;

这种结构的基地址可以通过一个字符指针作为地址,由i2c_read常规从传感器读取数据作为地址。

或者数据可以以当前i2c_buff复制到这个结构里。

当用i2c_read函数访问数据写入i2c_buff时,必须注意与处理器字节顺序。

禁用中断阈值读取数据

只要新数据准备和MEAS_MODE(中断)字节设置好,nINT信号被CCS811置为低电平。

主机的CSS811驱动器可以给主机应用程序的0/S提供一个回调函数,这回调函数是反应与nINT输出信号相

连接的GPIO信号。

当nINT信号宣称回调函数是需要的,然后从CCS811的ALG_RESULT_DATA

读取:

u8*ccs811_read_data_callback(){

这不需要检查数据是否准备好。

中断的发布表明新的数据样本已经准备好了。

协议分析器将显示类

似的I2C事务具体如图7所示:

l-i<

fUF?

7:

Interrupt1riu^riofCCSit11DjuSanipleii

nINT线路由CCS811定义,短时间之后主机应用程序执行一个设置写

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 天文地理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1