参考
<STM32Cube>\Repository\STM32Cube_FW_F4_V1.24.0\Projects\STM32446E_EVAL\Examples\DAC\DAC_SimpleConversion
プロジェクト
https://github.com/ryood/STM32Cube_Test/tree/master/SW4STM32/Nucleo-F446_DAC_Test5
実行環境
- Nucleo-F446RE
- STM32CubeMX Version 5.1.0
- System Workbench for STM32 - C/C++ Embedded Development Tools for MCU Version: 2.8.1.201903050911
STM32CubeMXの設定
STM32CubeMXに[Report]という機能があったので出力してみました。
https://github.com/ryood/STM32Cube_Test/blob/master/SW4STM32/Nucleo-F446_DAC_Test5/Nucleo-F446_DAC_Test5.pdf
SW4STM32でコードを追加(一部抜粋)
/* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include <math.h> /* USER CODE END Includes */
/* Infinite loop */ /* USER CODE BEGIN WHILE */ double phi = 0.0; while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ uint16_t sinv = 4095 * ((sin(phi) + 1.0) / 2.0); if (HAL_DAC_SetValue(&hdac, DAC_CHANNEL_1, DAC_ALIGN_12B_R, sinv) != HAL_OK) { Error_Handler(); } if (HAL_DAC_SetValue(&hdac, DAC_CHANNEL_2, DAC_ALIGN_12B_R, sinv) != HAL_OK) { Error_Handler(); } phi += 0.01; } /* USER CODE END 3 */ }
位相角を0.01ずつ増やしてsinの値を求め、12bit値に変換して2chある内蔵DACから出力しています。
出力結果
ch1:DAC1(PA4) ch2:DAC2(PA5)
DAC2はNucleoボード上でLEDに接続されているため、上側がクリップしています。DAC1も上下の最大振幅付近で若干クリップしています。
0 件のコメント:
コメントを投稿