MCU(NXP i.MX RT1050)にEPROM 24xx256シリーズを1つ接続した例をもとにOSS-ECALの組み込む方法について説明します。青文字のコード部をMCUや製品プログラムに合わせてください。
下図のMCU設定は、NXP MCUXpresso SDKにて設定したラベル名や回路設定です。
コマンドAPI関数の周期の設定
コマンドAPI関数のコール周期をuser_setting.hに設定します。
この例では、50ms周期です。
// Immediate definitions
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#define THREAD_OSS_ECAL_PERIOD 50U // Thread period time[ms]
Device addressの設定
24xx256シリーズのA0、A1、A2 pinの端子レベルは、以下のコードのように user_setting.hに設定してください。
この例では、A0 pin=Low(b0=0), A1 pin=Low(b1=0), A2 pin=Low(b2=0)にした場合です。
// Device address Code bit2:A2, bit1:A1, bit0:A0
#define M24xx256 0b00000000
// I2C components address
#define I2C_ADR_24xx256 (( 0b00001010 << 3 ) | ( 0x07 & M24xx256 ))
送受信バッファ数の設定
送受信バッファ数は、以下のコードのように user_setting.hに設定してください。24xx256シリーズの送受信バッファ数は最大64Byteです。
この例では、送信バッファ数64Byte、受信バッファ数64Byteにした場合です。
// TX and RX buffer size(bytes) for 24xx256
// CAUTION : Set the minimum value among the following
// - Number of send/receive buffers used by the application
// - Number of send/receive buffers used by HAL
// - Number of 24xx256 send/receive Max 64 bytes
#define TX_N_24xx256 64U
#define RX_N_24xx256 64U
Write protectのMCU pinの設定
24xx256シリーズのWrite protect pinと接続しているMCU GPIO pinは、以下のコードのように user_setting.hに設定してください。
この例では、Write protect pinをBOARD_INITPINS_M24xx256_WP_PORTのBOARD_INITPINS_M24xx256_WP_PINに接続した場合です。
// OSS-ECAL GPIO hard wiring
#define CMP_GPIO_NUM 1U // OSS-ECAL GPIO components number
#define GPIO_24xx256_WP BOARD_INITPINS_M24xx256_WP_PORT
#define PIN_24xx256_WP BOARD_INITPINS_M24xx256_WP_PIN
I2C通信の設定
24xx256シリーズと通信するI2Cは、以下のコードのように user_setting.hに設定してください。
この例では、I2C通信 LPI2C1_PERIPHERALに接続し、ボーレート400kHzに設定した場合です。また、I2C通信を行うOSS-ECALを用いたコンポーネントは1つとしています。
// OSS-ECAL I2C components hard wiring
#define CMP_I2C_NUM 1U
#define I2C_HZ 400000 // MCU I2C frequency
#define I2C_24xx256 LPI2C1_PERIPHERAL // LPI2C peripheral base address
I2C通信リトライ数の設定
I2C通信リトライ数は、以下のコードのように user_setting.hに設定してください。
この例では、I2C通信エラーが発生した場合、3回リトライする設定にした場合です。
// I2C settings
#define I2C_RETRY 3U // Retry times
Device addressおよびI2Cのテーブル登録
2項で設定したDevice addressと5項で設定したI2Cは、以下のコードのように user_setting.cに設定してください。
// HAL I2C object table for components
const stI2C_MCUX_OBJ tblI2C[ CMP_I2C_NUM ] =
{
{ e24xx256, I2C_ADR_24xx256, I2C_24xx256 }
};
Write protectのMCU pinのテーブル設定
4項で設定したWrite-protect のGPIOは、以下のコードのように user_setting.cに設定してください。
// HAL GPIO object table for components
const stGPIO_MCUX_OBJ tblGPIO[ CMP_GPIO_NUM ] =
{
{ e24xx256, GPIO_24xx256_WP, PIN_24xx256_WP }
};