低消費回路についての検討

TWEシリーズのスリープ時の消費を抑えるための回路についての検討事項です。

モジュールの外部回路について

最終回路が出来てからの電流抑制の検討は非常に困難です。必ず試作段階で確認するようにしてください。

 

モジュール自身を遮断する

回路例

DIOによる外部回路のスイッチ

DIOポートを電源として利用する簡易的な方法です。

 

起動制御+FETによる外部回路のスイッチ

リセットIC(IC1)による安定した起動を行い、起動後は IO の制御により外部回路の電源を投入する回路例を示します。

※ 必須ではありません。無線モジュールの半導体にも SVM というリセットICに似た仕組みがあります。以下に挙げる起動回路は、例えば、電圧降下のある電池を使用していて、より高い電圧で始動したい場合に有効です。

 

ソフトウェア上の対応

スリープ時の消費を抑えるために特別に特定のAPIを呼ぶと言った処理はありませんが、ペリフェラルやIO状態等により期待しない消費がある場合があります。原則として、ペリフェラルは停止手続きを行う、IO状態は上記のとおりプルアップ状態を正しく行う必要があります。

ToCoNet_vSleep (スリープ関数)

第3パラメータ (bRamOff) を TRUE にすると RAM の保持をしません。RAM の保持には約1uA消費します。

スリープの手続き例

スリープ手続きは、ペリフェラルの終了手続き(必須ではありません)、割り込みの停止、スリープ割り込みの設定、スリープ実行の順となります。

void vSleep(uint32 u32SleepDur_ms, bool_t bPeriodic, bool_t bDeep) {
	// ペリフェラルの終了
	vAHI_UartDisable(UART_PORT); // UART を解除してから(このコードは入っていなくても動作は同じ)

	// 他の割り込み源がある場合は停止しておく
	;

 // スリープ割り込みの設定
	vAHI_DioSetDirection(PORT_INPUT_MASK, 0); // 対象ポートを入力に設定する

	(void)u32AHI_DioInterruptStatus(); //割り込み情報のクリア
	vAHI_DioWakeEnable(PORT_INPUT_MASK, 0); // also use as DIO WAKE SOURCE
	// vAHI_DioWakeEdge(0, PORT_INPUT_MASK); // 割り込みエッジ(立下りに設定)
	vAHI_DioWakeEdge(PORT_INPUT_MASK, 0); // 割り込みエッジ(立上がりに設定)
	// vAHI_DioWakeEnable(0, PORT_INPUT_MASK); // DISABLE DIO WAKE SOURCE

	// スリープ実行
	ToCoNet_vSleep(E_AHI_WAKE_TIMER_0, u32SleepDur_ms, bPeriodic, bDeep);
}
    

※ ToCoNet_vSleep() では、スリープ前に状態遷移関数 (vProcessEvCore() など) に対して E_EVENT_TOCONET_ON_SLEEP を発生させます。状態遷移関数中からの呼び出しでは、自身がもう一度呼び出されるため、ToCoNet_vSleep() は一度だけ呼び出されるように記述します。

TWELITE
TWELITE
DIP
DIP
UART
UART
CUE
CUE
ARIA
ARIA
PAL
PAL
STICK
STICK
spot
SPOT
R3
R3
STARTER KIT
STARTER KIT
アンテナ
アンテナ
製品一覧
製品一覧

モノをつなぐ無線

モノをつなぐ無線
モノの無線
導入事例
導入事例
選び方
選び方
小型
小型
省電力
省電力
多数接続
多数接続
コントロール
コントロール
モニタリング
モニタリング
ソフトウエア
ソフトウエア
親機
親機
中継機
中継機
子機
子機
始め方
始め方

評価開発環境

STAGE
STAGE
STAGE APP
STAGE APP
interactive
アプリ設定
アプリ書換
アプリ書換
プログラミング
プログラミング