아하
검색 이미지
생활꿀팁 이미지
생활꿀팁생활
생활꿀팁 이미지
생활꿀팁생활
고귀한오랑우탄112
고귀한오랑우탄11219.05.21

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개 테이블 } }