STM32 M0 Discovery를 이용하여 Sine wave를 만들고 싶습니다.
제사 사용하는 MCU는 STM32F051RBT6입니다.
Discovery 평가보드를 이용하여 ADC 포트에서 Sine 파형을 출력하고 싶습니다.
출력핀은 Port A Pin4를 이용하려 합니다.
어떻게 해야 하나요?
55글자 더 채워주세요.
1개의 답변이 있어요!
안녕하세요.
Sine 파형의 테이블을 작성하여 주기는 delay를 이용하여 간단하게 제어가 가능합니다.
Project 생성 및 basic code는 cubeMX에서 생성합니다.
관련 부분에 대한 내용은 아래와 같습니다.
uint8_t tbl1; // 0~59 까지 범위입니다 uint8_t sine_tbl[60] = { // 60개 테이블 128 /*중간*/, 141, 154, 167, 179, 191, 202, 212, 222, 230, 237, 244, 248, 252, 254, // 15ea 255 /*위 */, 254, 252, 248, 244, 237, 230, 222, 212, 202, 191, 179, 167, 154, 141, 128 /*중간*/, 115, 102, 89, 77, 65, 54, 44, 34, 26, 19, 12, 8, 4, 2, 1 /*아래*/, 2, 4, 8, 12, 19, 26, 34, 44, 54, 65, 77, 89, 102, 115 }; int main() { ...... MX_DAC1_Init(); HAL_DAC_Start(&hdac1, DAC_CHANNEL_1); // PA4 DAC1_OUT1 while (1) { // 무한루프를 수행합니다 HAL_Delay(1); // 2msec 지연을 수행합니다 HAL_DAC_SetValue(&hdac1, DAC_CHANNEL_1, DAC_ALIGN_8B_R, sin_tb[tbl1]); if (++ct1 == 60) tbl1 = 0; // 60개 테이블 } }