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 件のコメント:
コメントを投稿