OSS-ECALとは、電子部品抽象化レイヤのオープンソースソフトウェア( Open Source Software for Electronic Components Abstraction Layer)の略称です。OSS-ECALは、電子部品のソフトウェア開発の効率化および電子部品の利用性向上を目的としたソフトウェアレイヤであり、電子部品の特徴に合わせたソフトウェアインタフェースを有しています。
OSS-ECALのプログラム言語は、C言語です。
用語の定義
用語 | 意味 |
---|---|
ABC | 電子部品の仮称 |
API | アプリケーション・インタフェース |
COMMAND | コマンドの仮称 etCMDにて宣言した名称”eCMD_”以降の名称 電子部品に合わせてメンバー名をリネーム |
e(接頭語) | 列挙型enum メンバー名 |
et(接頭語) | 列挙型enum タグ名 |
etCMD | コマンドの列挙型(enum)型定義 電子部品に合わせてメンバー名をリネームすると使いやすい |
etSTS | ステータスの列挙型(enum)型定義 |
f | 浮動小数点 |
HAL | Hardware Abstraction Layer, AUTOSAR MCAL |
HALNAME | HALの仮称 HALNAMEはHAL対応表を参照してください |
i | 整数 固定小数点 接頭語 #define immediate |
oABC | ABC用API関数名(引数にコマンド渡す) 電子部品に合わせてメンバー名をリネームすると使いやすい |
oABC_COMMAND | ABC用API関数名 電子部品に合わせてメンバー名をリネームすると使いやすい |
OSS-ECAL | Open Source Software for Electronic Components Abstraction Layer |
READ | 電子部品から読込み(通信の場合、受信) |
st(接頭語) | 構造体の型struct タグ名 |
stABC_I | API関数のインプットの引数型の仮称 |
stABC_O | API関数のアウトプットの引数型の仮称 |
WRITE | 電子部品への書込み(送信) |
WRITE_READ | 1. 電子部品への書込み(送信) 2. 電子部品から読込み(通信の場合、受信) |
API
電子部品の標準インタフェースおよび各電子部品の特徴に合わせたインタフェースを実現するため、APIには次の2つのタイプのAPI関数を用意しています。
etSTS oABC( etCMD cmd, stABC_I dat, stABC_O* rlt )
このAPI関数タイプは、引数にコマンドを渡すタイプです。
関数名 | oABC | ABC用API関数 |
戻り値 | etSTS | OSS-ECALステータスコード |
引数 IN | etCMD cmd | OSS-ECALコマンドコード |
stABC_I dat | ABC用 API関数入力値 | |
引数 OUT | float32* rlt | ABC用 API関数出力値 |
例 : Analog Devices社製 温度センサ AD22100A ADC type
etSTS oAD22100A( etCMD, float32* );
void function(void)
{
float32 rlt; // Temperature[degrees Celsius]
// Output voltage of AD22100A is converted to AD and the result of temperature conversion is
// read into vgPHY (READ command)
etSTS sts = oAD22100A( eCMD_START_READ, &rlt );
}
etSTS oAD22100A( etCMD cmd, float32* rlt )
oAD22100A関数は、引数のコマンドによってAD22100Aの処理を実行するAPI関数です。
戻り値 | etSTS | OSS-ECALステータスコード | |
eSTS_FIN | 正常終了 | ||
eSTS_ERR_MIN | 最小温度エラー(rltは最小温度) | ||
eSTS_ERR_MAX | 最大温度エラー(rltは最大温度) | ||
eSTS_ERR_HAL_ADC | HAL ADCエラー | ||
eSTS_ERR_COMMAND_CODE | コマンド選択エラー | ||
eSTS_ERR_OTHERS_RUN | 他のコンポーネントが処理実行中 | ||
eSTS_ERR_HAL_OTHERS_RUN | 他のアプリケーションがHAL実行中 | ||
eSTS_ERR_ADC_OBJECT | AD変換オブジェクト選択エラー | ||
引数 IN | etCMD cmd | OSS-ECALコマンドコード | |
eCMD_START | AD変換をスタートするコマンド | ||
eCMD_READ | AD変換値を読込み、AD変換値を温度に変換するコマンド AD変換値から温度変換式 電圧値=(AD変換値×VDD)/(2AD bit) 温度=((電圧値-電圧オフセット値)/ゲイン係数)+温度オフセット値 (Min, Max Limit) | ||
eCMD_START_READ | AD変換をスタートし、AD変換値を読込み、AD変換値を温度に変換するコマンド AD変換値から温度変換式 電圧値=(AD変換値×VDD)/(2AD bit) 温度=((電圧値-電圧オフセット値)/ゲイン係数)+温度オフセット値 (Min, Max Limit) | ||
引数 OUT | float32* rlt | 温度 -40.0~85.0 [℃] |
HAL別コマンド対応表
Arduino | eCMD_START_READ |
ARM Mbed | eCMD_START_READ |
AUTOSAR | – |
Debian(Linux) | eCMD_START_READ |
Infineon ModusToolbox | eCMD_START_READ |
NXP MCUXpresso MXRT1051B_1052B | eCMD_START eCMD_READ eCMD_START_READ |
Renesas SSP | eCMD_START eCMD_READ eCMD_START_READ |
STM STM32Cube FW_F4 | eCMD_START eCMD_READ eCMD_START_READ |
etSTS oABC_COMMAND( stABC_I dat, stABC_O* rlt )
このAPI関数タイプは、関数名でコマンドを指定するタイプです。(コマンドAPI関数)
関数名 | oABC | ABC用API関数 |
戻り値 | etSTS | OSS-ECALステータスコード |
引数 IN | stABC_I dat | ABC用 API関数入力値 |
引数 OUT | float32* rlt | ABC用 API関数出力値 |
例 : Analog Devices社製 温度センサ AD22100A ADC type
etSTS oAD22100A_READ( float32* );
void function(void)
{
float32 rlt; // Temperature[degrees Celsius]
// Output voltage of AD22100A is converted to AD and the result of temperature conversion is
// read into vgPHY (READ command)
etSTS sts = oAD22100A_READ( &rlt );
}
etSTS oAD22100A_READ( float32* rlt )
oAD22100A_READ関数は、AD変換の終了を確認し、AD変換値を読み込み、そのAD変換値を温度に特性変換して、その温度をrltに保存するAPI関数です。
AD変換値から温度変換式
電圧値=(AD変換値×VDD)/(2AD bit)
温度=((電圧値-電圧オフセット値)/ゲイン係数)+温度オフセット値 (Min, Max Limit)
戻り値 | etSTS | OSS-ECALステータスコード | |
eSTS_FIN | 正常終了 | ||
eSTS_ERR_MIN | 最小温度エラー(rltは最小温度) | ||
eSTS_ERR_MAX | 最大温度エラー(rltは最大温度) | ||
eSTS_ERR_HAL_ADC | HAL ADCエラー | ||
eSTS_ERR_TIMEOUT | ADC Timeoutエラー(AUTOSARのみ) | ||
eSTS_ERR_OTHERS_RUN | 他のコンポーネントが処理実行中 | ||
eSTS_ERR_ADC_OBJECT | AD変換オブジェクト選択エラー | ||
引数 OUT | float32* rlt | 温度 -40.0~85.0 [℃] |
HAL別関数対応表
Arduino | – | |
ARM Mbed | – | |
AUTOSAR | X | Time-out時間 ADC_TIMEOUT [us]設定 |
Debian(Linux) | – | |
Infineon ModusToolbox | – | |
NXP MCUXpresso MXRT1051B_1052B | X | |
Renesas SSP | X | |
STM STM32Cube FW_F4 | X | Time-out時間 HAL_MAX_DELAY |
ファイル構成
OSS-ECALのファイル構成は、次の通りです。尚、HALによって構成が異なりますので、各電子部品のOSS-ECALページでご確認ください。
フォルダ* | ファイル | 概要 |
---|---|---|
ABC_HALNAME_VERSION/sample | sample.c (.cpp) | サンプル・アプリケーション・プログラム |
sample.h | サンプル・アプリケーション・ヘッダ | |
ABC_HALNAME_VERSION | oABC.c (.cpp) | ABC用OSS-ECALプログラム |
oABC.h | ABC用OSS-ECALヘッダ | |
ABC_ARDUINO.ino | Arduino用サンプル・アプリケーション・プログラム | |
oss_ecal.h | OSS-ECAL 共通ヘッダ (Ver 01.00.00以降、AUTOSARはVer01.01.07以降) | |
oTypes.h | AUTOSAR用typedefヘッダファイル | |
user_setting.c (.cpp) | ユーザ設定定数・テーブル | |
user_setting.h | ユーザ設定ヘッダ | |
readme.md | Readme | |
OSS-ECAL Terms of Use.txt | OSS-ECAL利用条件 |
HAL対応表
OSS-ECALのHAL対応は、次の通り(順次拡大中)です。尚、HAL対応は各電子部品のOSS-ECALページでご確認ください。
HAL | MCU* | 開発環境* | HALNAME |
---|---|---|---|
Arduino 1.8.6 | ATmega2560 ATmega328P | Mega 2560 Rev3 Arduino Pro Mini 3.3V | ARDUINO |
ARM Mbed 6.17.0 | STM32F401RE | STM32 Nucleo-64 boards | MBED |
AUTOSAR 4.4 (MCAL) | S32K144 | S32K144EVB-Q100 | MCAL |
Infineon ModusToolbox HAL Cat1 2.4.3 | CYBLE-416045-02 | CY8CPROTO-063-BLE PSoC 6 BLE Prototyping Kit | ModusToolbox |
NXP MCUXpresso SDK iMXRT1051B_1052B ksdk2_0 | MIMXRT1052DVL6A | IMXRT1050-EVKB | iMXRT1051B1052B |
Renesas SSP 2.4.0 | R7FS7G27H3A01CFC | S7G2 SK | SSP |
STM STM32Cube FW_F4 V1.27.1 | STM32F401RE | STM32 Nucleo-64 boards | STM32F4 |
Debian(Linux) v2022.04 | TI AM335x | BeagleBone Black – Rev C | Linux |
* 開発時のMCUおよび開発環境。同じHALであってもMCUや開発環境が異なると動作が合わない場合があります。
組込み方法
ユーザプログラムに複数のOSS-ECAL(同じMCU機能の電子部品)を組み込む方法