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