欧美日韩欧美,女人和拘做受大片免费看,麻花豆传媒剧国产mv免费版特色,欧美成人精品高清在线观看,麻豆产精国品一二三产区区

【E1119】CCS811調(diào)試指南

2021-09-12 16:21:12      索煒達(dá)電子      1035     

項(xiàng)目編號(hào):E1119

文件大?。?K

源碼說(shuō)明:帶中文注釋

開(kāi)發(fā)環(huán)境:C編譯器

簡(jiǎn)要概述:

前言

最近使用CCS811這一款集成環(huán)境參數(shù)測(cè)量芯片,由于CCS811本身的原因,導(dǎo)致調(diào)試頗為不順利?,F(xiàn)在已經(jīng)調(diào)試出來(lái),把自己的經(jīng)驗(yàn)分享給大家。主控芯片stm32f103。


問(wèn)題一:無(wú)法正常讀取硬件id及狀態(tài)

這個(gè)問(wèn)題有可能是:


1.進(jìn)行了某些誤操作,導(dǎo)致CCS811芯片本身跑飛,所以怎么復(fù)位都不能讀取。解決辦法是對(duì)芯片復(fù)位,即INT腳接地

2.IIC通訊本身有問(wèn)題,講IIC通訊的讀和寫(xiě)里的延遲加大,至少5us


問(wèn)題二:從boot模式轉(zhuǎn)換到測(cè)量模式失敗

當(dāng)上面的參數(shù)能讀取出來(lái)的時(shí)候,其實(shí)通訊本身已經(jīng)沒(méi)有問(wèn)題,但是由于CCS811內(nèi)部集成的MCU需要一定的時(shí)間轉(zhuǎn)換模式,即當(dāng)我們發(fā)送測(cè)量轉(zhuǎn)換指令后,必須等待至少180us時(shí)間,才能夠?qū)cs811進(jìn)行讀寫(xiě)操作,假如提前讀寫(xiě)便導(dǎo)致CCS811跑飛。

解決辦法,當(dāng)發(fā)送轉(zhuǎn)換指令時(shí)必須等待180us,代碼如下


//測(cè)量數(shù)據(jù)前必須開(kāi)啟

void app_Start(void)

{

nWAKE=0;

delay_us(50);

IIC_Start(); 

IIC_Send_Byte(WRIT);    //發(fā)送寫(xiě)命令

if(IIC_Wait_Ack()){

IIC_Stop();return;}

IIC_Send_Byte(0xF4);

delay_us(180); //必須等待180us以上才能夠收到應(yīng)答

if(IIC_Wait_Ack()){IIC_Stop();return;}

IIC_Stop();

nWAKE=1;


}

問(wèn)題三:進(jìn)入測(cè)量模式但無(wú)法讀取環(huán)境參數(shù)

這個(gè)問(wèn)題也是CCS811內(nèi)部集成的MCU的鍋,當(dāng)進(jìn)入測(cè)量模式后,CCS811的IIC通訊就變慢了,也就是說(shuō),IIC通訊必須變慢,否則CCS811反應(yīng)不過(guò)來(lái)。

解決辦法是調(diào)整IIC讀寫(xiě)速度,讀寫(xiě)延遲至少50us。

代碼如下:

//測(cè)量數(shù)據(jù)前必須開(kāi)啟

void IIC_Send_Byte(u8 txd)

{                        

    u8 t;   

SDA_OUT();     

    IIC_SCL=0;//拉低時(shí)鐘開(kāi)始數(shù)據(jù)傳輸

    for(t=0;t<8;t++)

    {              

if((txd&0x80)>>7)

IIC_SDA=1;

else

IIC_SDA=0;

txd<<=1;   

delay_us(50);   //對(duì)TEA5767這三個(gè)延時(shí)都是必須的

IIC_SCL=1;

delay_us(50); 

IIC_SCL=0;

delay_us(50); 

    }  


}     

//讀1個(gè)字節(jié),ack=1時(shí),發(fā)送ACK,ack=0,發(fā)送nACK   

u8 IIC_Read_Byte(unsigned char ack)

{

unsigned char i,receive=0;

SDA_IN();//SDA設(shè)置為輸入

    for(i=0;i<8;i++ )

{

        IIC_SCL=0; 

        delay_us(50);

IIC_SCL=1;

        receive<<=1;

        if(READ_SDA)receive++;   

delay_us(50); 

    }  

    if (!ack)

        IIC_NAck();//發(fā)送nACK

    else

        IIC_Ack(); //發(fā)送ACK   

    return receive;

}

其他問(wèn)題

按照器件手冊(cè)上的介紹都可以解決


結(jié)束語(yǔ)

調(diào)試一塊板子真的很不容易,尤其是官方文檔寫(xiě)的奇奇怪怪的。一開(kāi)始以為IIC有問(wèn)題,調(diào)了兩三天,后面才明白怎么回事,如果有一塊邏輯分析儀應(yīng)該不用這么久吧。附上我寫(xiě)的庫(kù),祝大家能夠早日調(diào)出來(lái)。

目錄│文件列表:

 └ HARDWARE.zip

TAGCCS811
  • 8 次
  • 1 分