PinOut: I2Cn_SCL & I2Cn_SDA
I2Cn:
DMA Settings:
- Add して Tx/Rx の使うものを選択
- Mode を Circular に設定
- Data Width を Word に設定
template <class T>
T: 送受信するデータ型
I2C_Master_DMA( I2C_HandleTypeDef *hi2c, uint8_t target, T &data );I2C_Master_DMA( I2C_HandleTypeDef &hi2c, uint8_t target, T &data );ピンと送信先アドレス・連携させる変数を設定します
// 例 uint16_t data; I2C_Master_DMA<uint16_t> master(hi2c1, 0x01, data); I2C_Master_DMA<uint16_t> master(&hi2c1, 0x01, data);
void init() noexcept;再初期化します
// 例 master.init();
HAL_StatusTypeDef startTransmit() noexcept;HAL_I2C_Master_Transmit_DMA() の結果を返します
// 例 master.startTransmit();
HAL_StatusTypeDef startReceive() noexcept;HAL_I2C_Master_Receive_DMA() の結果を返します
// 例 master.startReceive();
void setTxCallback( std::function<void()> function ) noexcept;送信完了時の割り込み関数を設定します
// 例 master.setTxCallback([]{ logger.println("Tx\n"); });
void setRxCallback( std::function<void()> function ) noexcept;受信完了時の割り込み関数を設定します
// 例 master.setRxCallback([]{ logger.println("Rx\n"); });
void setErrorCallback( std::function<void()> function ) noexcept;エラー取得時の割り込み関数を設定します
// 例 slave.setErrorCallback([]{ logger.println("Error"); });