13章:Samp_I2C(大気圧センサー)の動作試験

    作成2014.08.22

     Samp_I2C(大気圧センサー)について検討します。

  1. Samp_I2C(大気圧センサー)評価回路図
     Samp_I2C(大気圧センサー)評価回路図を図13-1に示します。

    ZigBeeワイヤレスモジュール TWE−LiteをUSBアダプター TWE−Lite R(トワイ・ライター)に 取付けて評価します。
    品名単価個数小計購入先
    ZigBeeワイヤレスモジュール TWE−Lite Dip−WA (半完成品セミキット)162011620秋月電子通商
    USBアダプター TWE−Lite R(トワイ・ライター)189011890秋月電子通商
    分割ロングピンソケット 1x42 (42P)80180秋月電子通商
    LPS331使用 高精度大気圧センサーモジュール6501650秋月電子通商


  2. Samp_I2C(大気圧センサー)評価回路外観
      Samp_I2C(大気圧センサー)評価回路外観を以下に示します。



  3. Samp_I2C
    ToCoNet SDKは下記のアドレスからダウンロードします。
    http://tocos-wireless.com/jp/products/ToCoNet/TWESDK.html
     ダウンロード
    Windows 版 2014/8月号 SDK SDK 全部入り (582MiB, ZIP)をダウンロードします。


  4. 動作試験用プログラムのダウンロード
     動作試験用プログラムは「40-13.zip」ファイルをダウンロードしてください。
    [40-13.zip]をダウンロードする。

     解凍するとフォルダー内に
    Samp_I2Cフォルダー(Samp_I2Cソースファイル)
    Win-PingPong.exe(10章と同じ)
    AE-LPS331.pdf(大気圧センサー説明書)
    があります。
     Samp_I2Cフォルダー内の\Samp_I2C\Main\Build\Samp_I2C_Main_JN5164_0_2_0.binが実行ファイルです。


  5. 基本操作方法
    (1)\Samp_I2C\Main\Build\Samp_I2C_Main_JN5164_0_2_0.binを無線マイコンTWE-Lite DIP (トワイライト・ディップ)に書込みます。(方法は7章:ToCoNet(トコネット)のソフトウエア開発環境(SDK) とPingPongの実行プログラムの書込みを参照願います。

    (2)TWE-Lite R(トワイ・ライター)に無線マイコンTWE-Lite DIP (トワイライト・ディップ)をセットしてUSBをパソコンに接続します。
    (3)「Win-PingPong.exe」をダブルクリックで起動します。
    (4)画面の左側を「COM9」にセットして、「Conect」ボタンを押します。
    (5)TWE-Lite R(トワイ・ライター)のリセットボタンを押します。
    (6)以下の画面から「COM9」がTWE-Lite R(トワイ・ライター)に接続されていることが確認できます。

    (7)左側のSend Dataに「f」を入力し「Send Data vbCrLf無し」ボタンを押と測定を実行します。



  6. Samp_I2Cのソース変更部分
    大気圧センサー対応のための追加部分を以下に示します。
    static void vHandleSerialInput(void)
    case 'f':				
    	vfPrintf(&sSerStream, "LPS331A-TEST\r\n");			
    	uint8 u8Address=0x0f;			
    	uint8 pu8Dest[8];			
    	uint8 u8Length=1;			
    	bool_t bOk = TRUE;			
    				
    	bOk &= bSMBusWrite(0x5D, u8Address, 0, NULL);			
    	bOk &= bSMBusSequentialRead(0x5D, u8Length, pu8Dest);			
    	vfPrintf(&sSerStream, "0x0F=%x ",pu8Dest[0]);			
    				
    	uint8 pu8Data[8];			
    	volatile long x;			
    				
    	pu8Data[0]=0x90;			
    	u8Length=1;			
    	u8Address=0x20;			
    	bOk &= bSMBusWrite(0x5D, u8Address, 1, pu8Data);			
    	for(x = 0; x < 160000; x++){;}			
    				
    	bOk &= bSMBusWrite(0x5D, u8Address, 0, NULL);			
    	bOk &= bSMBusSequentialRead(0x5D, u8Length, pu8Dest);			
    	vfPrintf(&sSerStream, "0x20=%x\r\n",pu8Dest[0]);			
    				
    	u8Address=0x28;			
    	u8Length=1;			
    	bOk &= bSMBusWrite(0x5D, u8Address, 0, NULL);			
    	bOk &= bSMBusSequentialRead(0x5D, u8Length, pu8Dest);			
    	vfPrintf(&sSerStream, "%x ",pu8Dest[0]);			
    	pu8Dest[1]=pu8Dest[0];			
    				
    	u8Address=0x29;			
    	bOk &= bSMBusWrite(0x5D, u8Address, 0, NULL);			
    	bOk &= bSMBusSequentialRead(0x5D, u8Length, pu8Dest);			
    	vfPrintf(&sSerStream, "%x ",pu8Dest[0]);			
    	pu8Dest[2]=pu8Dest[0];			
    				
    	u8Address=0x2A;			
    	bOk &= bSMBusWrite(0x5D, u8Address, 0, NULL);			
    	bOk &= bSMBusSequentialRead(0x5D, u8Length, pu8Dest);			
    	vfPrintf(&sSerStream, "%x ",pu8Dest[0]);			
    	pu8Dest[3]=pu8Dest[0];			
    				
    	u8Address=0x2B;			
    	bOk &= bSMBusWrite(0x5D, u8Address, 0, NULL);			
    	bOk &= bSMBusSequentialRead(0x5D, u8Length, pu8Dest);			
    	vfPrintf(&sSerStream, "%x ",pu8Dest[0]);			
    	pu8Dest[4]=pu8Dest[0];			
    				
    	u8Address=0x2C;			
    	bOk &= bSMBusWrite(0x5D, u8Address, 0, NULL);			
    	bOk &= bSMBusSequentialRead(0x5D, u8Length, pu8Dest);			
    	vfPrintf(&sSerStream, "%x\r\n",pu8Dest[0]);			
    	pu8Dest[5]=pu8Dest[0];			
    				
    	long PD=(pu8Dest[3]*256*256+pu8Dest[2]*256+pu8Dest[1])*10/4096;			
    	long TD=pu8Dest[5]*256+pu8Dest[4];			
    				
    	if(TD >= 128)			
    	{			
    		TD=425+((double)TD-256*256)/48;		
    	}			
    	else			
    	{			
    		TD=425+(double)TD/48;		
    	}			
    	vfPrintf(&sSerStream, "Pressure(x0.1hPa)=%d\r\n",PD);			
    	vfPrintf(&sSerStream, "Temperature(x0.1Degree)=%d\r\n",TD);			
    	break;				
    


  7. 結果の検討
    (1)I2Cの詳細の通信手順はデバイス毎に異なるため、Samp_I2Cをそのままで動作試験できない。
    (2)I2C通信用関数の使用方法を理解し、個々のデバイスの通信手順をあわせる必要がある。
    (3)大気圧センサーのI2C通信プログラムでは主に
    bool_t bSMBusWrite(uint8 u8Address, uint8 u8Command, uint8 u8Length, uint8* pu8Data)
    PUBLIC bool_t bSMBusSequentialRead(uint8 u8Address, uint8 u8Length, uint8* pu8Data)
    を使用した。
    (4)Win-PingPong.exe(10章と同じ)はデバッグ目的のプログラムですが変更の必要はありませんでした。




14章:Samp_I2C(温湿度センサー)の動作試験に行く。

トップページに戻る。