I2C (STM32)

(2014.5.8 作成)

(2015.4.25 更新)

(2017.8.3 Update)

 Standard Peripheral Libraryを使用する場合にはSTマイクロエレクトロニクス社謹製のCPALライブラリーというのが存在します。このCPALライブラリはさすがに公式だけあって何でも出来ます(10bitアドレス、スレーブモード、DMA転送、エラーハンドリングなどなど、、、)。

 しかしその反面、仕様が複雑で設定するだけでも複数のファイルにまたがっており、なかなか個人の趣味では敷居が高いものでした。

 HALドライバが導入された後のI2Cはずいぶん楽になっています。

関数一覧

コンストラクタ

プロトタイプ

I2C(

     I2C_TypeDef* I2Cx,

     const uint8_t &SCLpinMode,

     const uint8_t &SDApinMode,

     const FrequencyMode &Frequency = Frequency_400kHz

);

戻り値

なし

引数

I2Cx

I2C1 または I2C2を使用してください

SCLpinMode

SDApinMode

使用するピンを指定します。

詳細は後述。

Frequency

400kHzまたは100kHzが使用可能です。

備考

 

マイコンごとに使用されるピンの組み合わせが異なっており、以下の通りになっています。

 またDiscovery基板の場合既に他に使用されているため、事実上使用できないピン設定があります。以下の表で灰色に塗りつぶされたセルが該当していますので、使用する場合は接続されている部品(LEDなど)を外す必要があります。

STM32F3Discovery

  SCLpinMode SDApinMode
  0 1 2 0 1 2
I2C1 PA15 PB6 PB8 PA14 PB7 PB9
I2C2 PA9 PF1 PF4 PA10 PF0  

STM32 NucleoF401RE

  SCLpinMode SDApinMode
  0 1 2 0 1 2
I2C1 PB6 PB8
PB7 PB9
I2C2 PB10

PB3
 
I2C3 PA8

PC9 PB4

STM32F103C8T6

  SCLpinMode SDApinMode
  0 1 0 1
I2C1 PB6 PB8 PB7 PB9
I2C2 PB10 PB11

サンプルコード

加速度センサ(MPU-6050)のページに記載します。

ライブラリ自体はこちらからダウンロードできます。