ccs 811デバッグガイド
前言
最近、CCS 811という集積環境パラメータ測定チップを使用しているが、CCS 811自体のせいでデバッグが非常にうまくいかない.今すでにデバッグして、自分の経験をみんなに分かち合います.マスタチップstm 32 f 103.
問題1:ハードウェアidおよびステータスを正常に読み取れない
この問題は次の可能性があります.
1.誤操作が行われ、CCS 811チップ自体が飛んでしまうため、どのようにリセットしても読み取れない.解決策はチップをリセットすること、すなわちINTピン接地2である.IIC通信自体に問題があり、IIC通信の読み取りと書き込みの遅延が大きくなり、少なくとも5 us
問題2:bootモードから測定モードへの変換に失敗
上記のパラメータが読み取れる場合、通信自体に問題はないが、CCS 811内部に集積されたMCUは、測定変換命令を送信した後、少なくとも180 usの時間を待たなければccs 811の読み書き操作ができず、読み書きが早ければCCS 811が飛ぶ時間変換モードが必要である.解決策は、変換命令を送信するときに180 us待たなければならない.コードは以下の通りである.
問題3:測定モードに入るが環境パラメータを読めない
この問題もCCS 811内部に集積されたMCUの鍋であり、測定モードに入るとCCS 811のIIC通信が遅くなり、すなわちIIC通信が遅くならなければならない.そうしないとCCS 811は反応しない.解決策はIICの読み書き速度を調整し,読み書き遅延は少なくとも50 usである.コードは次のとおりです.
その他の質問
デバイスマニュアルの説明に従って解決できます
終わりの言葉
板をデバッグするのは本当に容易ではありません.特に公式ドキュメントに書かれている奇妙なことです.最初はIICに問題があると思っていたが、2、3日調整してから、何が起こっているのかが分かった.論理分析器があればそんなに長くはかからないだろう.私が書いたライブラリを添付して、一日も早く呼び出してください.https://ltengy.github.io/2018/08/04/ccs811%E8%B0%83%E8%AF%95%E6%8C%87%E5%8D%97/
最近、CCS 811という集積環境パラメータ測定チップを使用しているが、CCS 811自体のせいでデバッグが非常にうまくいかない.今すでにデバッグして、自分の経験をみんなに分かち合います.マスタチップstm 32 f 103.
問題1:ハードウェアidおよびステータスを正常に読み取れない
この問題は次の可能性があります.
1.誤操作が行われ、CCS 811チップ自体が飛んでしまうため、どのようにリセットしても読み取れない.解決策はチップをリセットすること、すなわちINTピン接地2である.IIC通信自体に問題があり、IIC通信の読み取りと書き込みの遅延が大きくなり、少なくとも5 us
問題2:bootモードから測定モードへの変換に失敗
上記のパラメータが読み取れる場合、通信自体に問題はないが、CCS 811内部に集積されたMCUは、測定変換命令を送信した後、少なくとも180 usの時間を待たなければccs 811の読み書き操作ができず、読み書きが早ければCCS 811が飛ぶ時間変換モードが必要である.解決策は、変換命令を送信するときに180 us待たなければならない.コードは以下の通りである.
//
void app_Start(void)
{
nWAKE=0;
delay_us(50);
IIC_Start();
IIC_Send_Byte(WRIT); //
if(IIC_Wait_Ack()){
IIC_Stop();return;}
IIC_Send_Byte(0xF4);
delay_us(180); // 180us
if(IIC_Wait_Ack()){IIC_Stop();return;}
IIC_Stop();
nWAKE=1;
}
問題3:測定モードに入るが環境パラメータを読めない
この問題もCCS 811内部に集積されたMCUの鍋であり、測定モードに入るとCCS 811のIIC通信が遅くなり、すなわちIIC通信が遅くならなければならない.そうしないとCCS 811は反応しない.解決策はIICの読み書き速度を調整し,読み書き遅延は少なくとも50 usである.コードは次のとおりです.
//
void IIC_Send_Byte(u8 txd)
{
u8 t;
SDA_OUT();
IIC_SCL=0;//
for(t=0;t<8;t++)
{
if((txd&0x80)>>7)
IIC_SDA=1;
else
IIC_SDA=0;
txd<<=1;
delay_us(50); // TEA5767
IIC_SCL=1;
delay_us(50);
IIC_SCL=0;
delay_us(50);
}
}
// 1 ,ack=1 , ACK,ack=0, nACK
u8 IIC_Read_Byte(unsigned char ack)
{
unsigned char i,receive=0;
SDA_IN();//SDA
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();// nACK
else
IIC_Ack(); // ACK
return receive;
}
その他の質問
デバイスマニュアルの説明に従って解決できます
終わりの言葉
板をデバッグするのは本当に容易ではありません.特に公式ドキュメントに書かれている奇妙なことです.最初はIICに問題があると思っていたが、2、3日調整してから、何が起こっているのかが分かった.論理分析器があればそんなに長くはかからないだろう.私が書いたライブラリを添付して、一日も早く呼び出してください.https://ltengy.github.io/2018/08/04/ccs811%E8%B0%83%E8%AF%95%E6%8C%87%E5%8D%97/