2021年2月4日木曜日

STM32CubeIDE: I2SをPollingで使う

I2SをPollingで使うことはあまりないと思いますが、動作確認が簡単です。オーソドックスに16bit/48kHzで設定します。

STM32CubeIDE: Version 1.5.1
Target board: Nucleo-F446RE

MXの設定

Multimedia
  I2S2
    Mode
      Mode: Half-Duplex Master
  Configuration
    Parameter Settings
      Generic Parameters
        Selected Audio Frequency: 48KHz

Pinout



main.cにコードを追加


  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  uint16_t data[2] = { 12345, 23456 };
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
	if (HAL_I2S_Transmit(&hi2s2, data, 2, 100) != HAL_OK) {
		Error_Handler();
	}
  }
  /* USER CODE END 3 */

簡単ですね。

I2S出力信号


出力信号をAnalog Discovery 2のLogic機能で観測しました。


Lchに12345、Rchに23456が出力されています。

WSがR->Lに切り替わるところで、一瞬SD(Data)がHighになっています。HAL_I2S_Transmit()は終了後SDをHighにする仕様なのでしょうか?

0 件のコメント:

コメントを投稿