Skip to content

Latest commit

 

History

History
131 lines (120 loc) · 2.92 KB

I2C_Master_DMA.md

File metadata and controls

131 lines (120 loc) · 2.92 KB

I2C_Master_DMA

目次

CubeMX

PinOut: I2Cn_SCL & I2Cn_SDA
I2Cn:
  DMA Settings:
  - Add して Tx/Rx の使うものを選択
  - Mode を Circular に設定
  - Data Width を Word に設定

クラステンプレート

template <class T>
T: 送受信するデータ型

コンストラクタ

I2C_Master_DMA::I2C_Master_DMA(I2C_HandleTypeDef, uint8_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);

関数

I2C_Master_DMA::init()
void init() noexcept;

再初期化します

//
master.init();
I2C_Master_DMA::startTransmit()
HAL_StatusTypeDef startTransmit() noexcept;

HAL_I2C_Master_Transmit_DMA() の結果を返します

//
master.startTransmit();
I2C_Master_DMA::startReceive()
HAL_StatusTypeDef startReceive() noexcept;

HAL_I2C_Master_Receive_DMA() の結果を返します

//
master.startReceive();
I2C_Master_DMA::setTxCallback(std::function<void()>)
void setTxCallback(
    std::function<void()> function
) noexcept;

送信完了時の割り込み関数を設定します

//
master.setTxCallback([]{
    logger.println("Tx\n");
});
I2C_Master_DMA::setRxCallback(std::function<void()>)
void setRxCallback(
    std::function<void()> function
) noexcept;

受信完了時の割り込み関数を設定します

//
master.setRxCallback([]{
    logger.println("Rx\n");
});
I2C_Master_DMA::setErrorCallback(std::function<void()>)
void setErrorCallback(
    std::function<void()> function
) noexcept;

エラー取得時の割り込み関数を設定します

//
slave.setErrorCallback([]{
    logger.println("Error");
});

<< 戻る