2021年4月28日水曜日

HAL STM32 MASTER-SPI使用時 起動後即SCKがHIGHにならない問題の対応

 こんにちは、やましょうです。

 STM32のSPI-MASTERでSPIで通信を行っていないときにCLOCKラインをHIGHにしておきたいのですが、なぜかCUBE MXの吐き出すコードだと1度SPIを使用するまでCLOCKラインがLOWですね。

 まぁ、問題はないんでしょうけど、最初だけ通常時と異なるのはちょっと考えてしまいますよね。

 

波形としてこんな感じです。(上の黄色がCLOCK)

 

この原因を調査すると、

SPI_CR1の SPE BITの設定ですね。

(注意:SPE BITはいろいろな回路に使われている様でON時には設定変更はできない様なことが書いてあります。)

6 SPE:SPI ペリフェラル  イネーブル フラグな様です。

 

対応 SPIの初期化部でフラグオンを追加します。

  /* USER CODE BEGIN SPI1_Init 2 */
   __HAL_SPI_ENABLE(&hspi1);
 
  /* USER CODE END SPI1_Init 2 */

}

 対応後

 最初の時点でHIGHになりました。

 

以上

やましょうでした。

 

 


0 件のコメント:

コメントを投稿