S-35710

S-35710は、ABLIC製のウェイクアップ・タイマIC(1s~194日)です。S-35710のOSS-ECAL(電子部品抽象化レイヤのオープンソースソフトウェア:Open Source Software for Electronic Components Abstraction Layer)を提供致します。
MCUインタフェース:I2C、GPIO

ご注意:実際の設計などの前には、必ず最新版Datasheetをご参照くださいますようお願いいたします。

S-35710

概要

ウェイクアップタイマICは、定期的にシステムをウェイクアップすることでシステムの間欠動作を可能とします。S-35710Mは、タイマ値と内部レジスタに書き込みした値を比較し、値が一致したときにウェイクアップ信号 (割り込み信号)を出力します。S-35710Mのタイマは、24ビットのバイナリアップカウンタです。ユーザは、2ワイヤシリアルインタフェースを介し、内部レジスタのデータ値を自由に設定できます。したがって、ウェイクアップ信号 (割り込み信号) 発生までの時間を自由に設定可能です。S-35710Mは水晶振動子を内蔵しているため、ICと水晶振動子のマッチング評価が不要です。また、外付け部品点数を削減することも可能です。

特徴

  • 32.768 kHz水晶振動子内蔵
  • ウェイクアップ機能 (アラーム割り込み機能) : 1秒 ~ 194日 (およそ半年) まで1秒単位で設定可能
  • 低消費電流 : 0.25 μA typ. (VDD = 3.0 V、Ta = +25°C)
  • 広動作電圧範囲 : 1.8 V ~ 5.5 V
  • 2ワイヤ (I2C-bus) によるCPUインタフェース
  • 動作温度範囲 : Ta = −40°C ~ +85°C
  • 鉛フリー (Sn 100%)、ハロゲンフリ

用途

  • IoT通信機器
  • 監視機器
  • セキュリティ機器
  • 電池駆動システム
  • エナジーハーべスティングシステム

OSS-ECAL仕様

API関数

etSTS oS35710( etCMD cmd, uint32 wut, stS35710_O* rlt )

oS35710関数は、引数のコマンドcmdによってS-35710の処理を実行するAPI関数です。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_EXE実行中
eSTS_ERR_COMMAND_CODEコマンド選択エラー
eSTS_ERR_DIAG次のコマンドで診断結果NGの場合
eCMD_DIAG_WUR
eCMD_DIAG_TR
eCMD_DIAG_CLEAR
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
引数 INetCMD cmdOSS-ECALコマンドコード
eCMD_CLEAR/RST端子をLowとして、タイムレジスタおよびウェイクアップタイムレジスタをゼロクリアするコマンド

1. /RST端子 Low とする
2. 438ms経過するまで待機する(待機中は戻り値eSTS_EXE)

備考:
438ms経過時間は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD[ms]にThread周期を設定してください。
/RST端子はLowのままとなります。Wake-up時間カウントアップする場合は、コマンドeCMD_COUNTUPを実行してください。
eCMD_COUNTUP/RST端子をHiとして、タイムレジスタをカウントアップするコマンド

1. /RST端子 Hi とする
2. 438ms経過するまで待機する(待機中は戻り値eSTS_EXE)

備考:
438ms経過時間は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD[ms]にThread周期を設定してください。/RST端子はHiのままとなります。
eCMD_WRITE_WURウェイクアップタイムレジスタにwutの値(24bit)を書き込むコマンド

1. ウェイクアップタイムレジスタにwutの値(24bit)を書き込む

備考:
ライトモード時(/RST端子 Hi)に行ってください。
eCMD_READ_WURウェイクアップタイムレジスタ(24bit)の値を読み込み、rlt.wakeup_regに保存するコマンド

1. ウェイクアップタイムレジスタ(24bit)の値を読み込み、rlt.wakeup_regに保存する

備考:
ライトモード時(/RST端子 Hi)時に行ってください。
eCMD_READ_TRタイムレジスタ(24bit)の値を読み込み、rlt.timer_regに保存するコマンド

1. タイムレジスタ(24bit)の値を読み込み、rlt.timer_regに保存する

備考:
eCMD_DIAG_WURウェイクアップタイムレジスタの書込み診断するコマンド

1. /RST端子 Hi とする
2. 438ms経過するまで待機する(待機中は戻り値eSTS_EXE)
3. ウェイクアップタイムレジスタにwutの値(24bit)を書き込む
4. ウェイクアップタイムレジスタ(24bit)の値を読み込む
5. wutとウェイクアップタイムレジスタ値の比較結果を戻り値として返す
True … eSTS_FIN
False … eSTS_ERR_DIAG

備考:
438ms経過時間は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD[ms]にThread周期を設定してください。
eCMD_DIAG_TRタイムレジスタのカウントアップを診断するコマンド

1. /RST端子 Hi とする
2. S35710_DIAG_TIME[s]経過するまで待機する(待機中は戻り値eSTS_EXE)
3. タイムレジスタ(24bit)の値を読み込む
4. S35710_DIAG_TIME[s]とタイムレジスタ値の比較結果を戻り値として返す
True … eSTS_FIN
False … eSTS_ERR_DIAG

備考:
S35710_DIAG_TIME[s]は、1以上の値を設定してください。
S35710_DIAG_TIME[s]経過時間は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD [ms]にThread周期を設定してください。
eCMD_DIAG_CLEARタイムレジスタおよびウェイクアップタイムレジスタのゼロクリア診断するコマンド

1. /RST端子 Hi とする
2. S35710_DIAG_TIME[s]経過するまで待機する(待機中は戻り値eSTS_EXE)
3. ウェイクアップタイムレジスタにwutの値(24bit)を書き込む
4. /RST端子 Low とする
5. 438ms経過するまで待機する(待機中は戻り値eSTS_EXE)
6. タイムレジスタ(24bit)の値を読み込む
7. /RST端子 Hi とする
8. S35710_DIAG_TIME[s]経過するまで待機する(待機中は戻り値eSTS_EXE)
9. ウェイクアップタイムレジスタ(24bit)の値を読み込む
10. タイムレジスタ値とウェイクアップタイムレジスタ値のゼロチェック結果を戻り値として返す
True … eSTS_FIN
False … eSTS_ERR_DIAG

備考:
S35710_DIAG_TIME[s]および438ms経過時間は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD [ms]にThread周期を設定してください。
uint32 wutWake-upタイム [s]24bit
引数 OUTstS35710_O* rltS35710からの受信データ
uint32 timer_regTime register 値[s]
uint32 wakeup_regWake-up time register 値[s]
etSTS oS35710_CLEAR( void )

oS35710_CLEAR関数は、/RST端子をLowとして、タイムレジスタおよびウェイクアップタイムレジスタをゼロクリアするAPI関数です。

  1. /RST端子 Low とする
  2. 438ms経過するまで待機する(待機中は戻り値eSTS_EXE)

備考:
438ms経過時間は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD[ms]にThread周期を設定してください。
/RST端子はLowのままとなります。Wake-up時間カウントアップする場合は、oS35710関数のコマンドeCMD_COUNTUPまたはoS35710_COUNTUP関数を実行してください。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_EXE実行中
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
etSTS oS35710_COUNTUP( void )

oS35710_COUNTUP関数は、/RST端子をHiとして、タイムレジスタをカウントアップするAPI関数です。

  1. /RST端子 Hi とする
  2. 438ms経過するまで待機する(待機中は戻り値eSTS_EXE)

備考:
438ms経過時間は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD[ms]にThread周期を設定してください。/RST端子はHiのままとなります。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_EXE実行中
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
etSTS oS35710_WRITE_WUR( uint32 wut )

oS35710_WRITE_WUR関数は、ウェイクアップタイムレジスタにwutの値(24bit)を書き込むAPI関数です。

  1. ウェイクアップタイムレジスタにwutの値(24bit)を書き込む

備考:
ライトモード時(/RST端子 Hi)に行ってください。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
引数 INuint32 wutWake-upタイム [s]24bit
etSTS oS35710_READ_WUR( stS35710_O* rlt )

oS35710_READ_WUR関数は、ウェイクアップタイムレジスタ(24bit)の値を読み込み、rlt.wakeup_regに保存するAPI関数です。

  1. ウェイクアップタイムレジスタ(24bit)の値を読み込み、rlt.wakeup_regに保存する

備考:
ライトモード時(/RST端子 Hi)時に行ってください。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
引数 OUTstS35710_O* rltS-35710からの受信データ
uint32 timer_regTime register 値[s](未更新)
uint32 wakeup_regWake-up time register 値[s]
etSTS oS35710_READ_TR( stS35710M_O* rlt )

oS35710_READ_TR関数は、タイムレジスタ(24bit)の値を読み込み、rlt.timer_regに保存するAPI関数です。

  1. タイムレジスタ(24bit)の値を読み込み、rlt.timer_regに保存する

備考:

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
引数 OUTstS35710_O* rltS-35710からの受信データ
uint32 timer_regTime register 値[s]
uint32 wakeup_regWake-up time register 値[s](未更新)
etSTS oS35710_DIAG_WUR( uint32 wut )

oS35710_DIAG_WUR関数は、ウェイクアップタイムレジスタの書込み診断するAPI関数です。

  1. /RST端子 Hi とする
  2. 438ms経過するまで待機する(待機中は戻り値eSTS_EXE)
  3. ウェイクアップタイムレジスタにwutの値(24bit)を書き込む
  4. ウェイクアップタイムレジスタ(24bit)の値を読み込む
  5. wutとウェイクアップタイムレジスタ値の比較結果を戻り値として返す
    True … eSTS_FIN
    False … eSTS_ERR_DIAG

備考:
438ms経過時間は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD[ms]にThread周期を設定してください。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_EXE実行中
eSTS_ERR_DIAGウェイクアップタイムレジスタの書込み診断NG
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
引数 INuint32 wutWake-upタイム [s]24bit
etSTS oS35710_DIAG_TR( void )

oS35710_DIAG_TR関数は、タイムレジスタのカウントアップを診断するAPI関数です。

  1. /RST端子 Hi とする
  2. S35710_DIAG_TIME[s]経過するまで待機する(待機中は戻り値eSTS_EXE)
  3. タイムレジスタ(24bit)の値を読み込む
  4. S35710_DIAG_TIME[s]とタイムレジスタ値の比較結果を戻り値として返す
    True … eSTS_FIN
    False … eSTS_ERR_DIAG

備考:
S35710_DIAG_TIME[s]は、1以上の値を設定してください。
S35710_DIAG_TIME[s]経過時間は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD[ms]にThread周期を設定してください。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_EXE実行中
eSTS_ERR_DIAGタイムレジスタのカウントアップ診断NG
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他のコンポーネントが処理実行中
eSTS_ERR_HAL_OTHERS_RUN他のアプリケーションがHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
etSTS oS35710_DIAG_CLEAR( uint32 wut )

oS35710_DIAG_CLEAR関数は、タイムレジスタおよびウェイクアップタイムレジスタのゼロクリア診断するAPI関数です。

  1. /RST端子 Hi とする
  2. S35710_DIAG_TIME[s]経過するまで待機する(待機中は戻り値eSTS_EXE)
  3. ウェイクアップタイムレジスタにwutの値(24bit)を書き込む
  4. /RST端子 Low とする
  5. 438ms経過するまで待機する(待機中は戻り値eSTS_EXE)
  6. タイムレジスタ(24bit)の値を読み込む
  7. /RST端子 Hi とする
  8. S35710_DIAG_TIME[s]経過するまで待機する(待機中は戻り値eSTS_EXE)
  9. ウェイクアップタイムレジスタ(24bit)の値を読み込む
  10. タイムレジスタ値とウェイクアップタイムレジスタ値のゼロチェック結果を戻り値として返す
    True … eSTS_FIN
    False … eSTS_ERR_DIAG

備考:
S35710_DIAG_TIME[s]および438ms経過時間は、本API関数をコールするThread周期から計算するので、THREAD_OSS_ECAL_PERIOD[ms]にThread周期を設定してください。

戻り値etSTSOSS-ECALステータスコード
eSTS_FIN正常終了
eSTS_EXE実行中
eSTS_ERR_DIAGウェイクアップタイムレジスタのゼロクリア診断NG
eSTS_ERR_I2C_OBJECTI2Cオブジェクト選択エラー
eSTS_ERR_OTHERS_RUN他コンポーネント実行中エラー
eSTS_ERR_HAL_OTHERS_RUN他アプリケーションでHAL実行中
eSTS_ERR_HAL_I2CHAL I2Cエラー
引数 INuint32 wutWake-upタイム [s]24bit

ご注意

S-3571のINT端子出力は、別途対応してください。

File構成

フォルダ*ファイル概要
S35710_HALNAME_VERSION/samplesample.c (.cpp)サンプル・アプリケーション・プログラム
sample.hサンプル・アプリケーション・ヘッダ
S35710_HALNAME_VERSIONoS35710.c (.cpp)S-35710用OSS-ECALプログラム
oS35710.hS-35710用OSS-ECALヘッダ
S35710_ARDUINO.inoArduino用サンプル・アプリケーション・プログラム
oss_ecal.hOSS-ECAL 共通ヘッダ (Ver 01.00.00以降、AUTOSARはVer01.01.07以降)
user_setting.c (.cpp)ユーザ設定定数・テーブル
user_setting.hユーザ設定ヘッダ
oHAL_i2c_stm32f4.cSTM32Cube FW_F4用HALプログラム
oHAL_i2c_stm32f4.hSTM32Cube FW_F4用HALヘッダ
readme.mdReadme
OSS-ECAL Terms of Use.txtOSS-ECAL利用条件

* HALNAMEはHAL対応表を参照してください。

HAL対応表

HALMCU*開発環境*HALNAME
Arduino 1.8.6ATmega2560
ATmega328P
Mega 2560 Rev3
Arduino Pro Mini 3.3V
ARDUINO
ARM Mbed 6.17.0STM32F401RESTM32 Nucleo-64 boardsMBED
Infineon ModusToolbox HAL Cat1 2.4.3CYBLE-416045-02CY8CPROTO-063-BLE PSoC 6 BLE Prototyping KitModusToolbox
NXP MCUXpresso SDK
iMXRT1051B_1052B
ksdk2_0
MIMXRT1052DVL6AIMXRT1050-EVKBiMXRT1051B1052B
Renesas SSP 2.4.0R7FS7G27H3A01CFCS7G2 SKSSP
STM STM32Cube FW_F4 V1.27.1STM32F401RESTM32 Nucleo-64 boardsSTM32F4
Debian(Linux) v2022.04TI AM335xBeagleBone Black – Rev CLinux

* 開発時のMCUおよび開発環境。
  同じHALであってもMCUや開発環境が異なると動作が合わない場合があります。

OSS-ECAL ダウンロード

OSS-ECALのダウンロードは、英語版OSS-ECALサイトからお願いいたします。なお、ダウンロードを行う際は、英語版OSS-ECALサイトにログインしてから操作してください。

組込み方法

ユーザプログラムにOSS-ECALを組み込む方法

ユーザプログラムに複数のOSS-ECAL(同じMCU機能の電子部品)を組み込む方法

ユーザプログラムに複数のOSS-ECAL(異なるMCU機能の電子部品)を組み込む方法

ユーザプログラムに複数同じ電子部品を組み込む方法

電子部品の入れ替えによるユーザプログラムへの影響低減方法

注意事項

サンプル版OSS-ECALは、優先順位の異なるThread(Task)や割込みで用いることを前提としていません。下記の例のような使い方はしないでください。

例)同じADCグループに各センサーが割り当てられ、優先順位が異なる処理でOSS-ECAL APIを実行すると、正しい値を取得できない場合があります。
ADC Gr0 Ch0 温度センサ AD22100A 100ms周期 Thread(優先順位低)で温度取込み
ADC Gr0 Ch1 圧力センサ MPX5999D イベント割込み(優先順位高)で圧力取込み

OSS-ECAL Japanese
error: コンテンツは保護されている