Holtek사 MCU중 HT32F52357와 HT32F52367은 기능은 같은데 Flash와 SRAM 용량 차이가 있음. Holtek 사에 CodeConfig 프로그램을 이용하여 DAC에 Sine wave를 출력 해보자.
New 버튼을 눌러 SelectMCU 창이 나오면 아래로 스크롤 하여 HT32F52367을 확장한다음 LQFP80을 선택후 OK 버튼을 눌러주자.
바로 뜨는창은 내부 클럭으로 최대 Clock으로 셋팅된 화면이 나온다.
변경 없이 AFIO 탭을 선택 하고 스크롤 하여 아래로 내리면 DAC 포트는 PC3, PB8 두개가 있다.
DAC0_OUT 글씨를 마우스 왼쪽 버튼으로 더블 클릭 해주자. DAC1_OUT도 더블 클릭 해주자.
타이머를 하나 써야 합니다.
기존에 BFTM0 가 자동으로 셋팅이 되어 있어 있다.
Datasheet를 확인하면 BFTM은 APB Clock을 받는다. APB Clock은 60MHz이다.
Timer 탭에 보면 BFTM0가 체크 되어 있다.
새로 생긴 ADC/DAC 탭을 클릭하니 위와 같이 나와 있다.
F7을 눌러서 파일을 생성할 위치를 지정해 주고 확인을 누르자.
필자 같은 경우는 DAC 폴더를 만들어서 그곳을 클릭후 확인을 눌러 주었다.
생성이 완료 되면 Open Project를 눌러서 파일을 열어 보자.
F7키를 눌러 컴파일 해주니 에러가 발생 했다.
CodeConfig로 그냥 만들기만 했는데..... 아직은 문제가 있다.
void DAC_Configuration(void)
{
CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}};
CKCUClock.Bit.DAC = 1; //DAC 클럭 공급
CKCUClock.Bit.AFIO = 1; //AFIO 클럭 공급
CKCU_PeripClockConfig(CKCUClock, ENABLE); //클럭 셋팅
DAC_ModeConfig(ASYNC_MODE); //DAC 비동기 모드로 동작
DAC_ReferenceConfig(DAC_CH0, DAC_REFERENCE_VDDA); //DAC CH0에 기준 전압은 VDDA(3.3V)로 설정
DAC_ResolutionConfig(DAC_CH0, DAC_RESOLUTION_12BIT); //DAC 분해능은 12Bit (2^12Bit = 0 ~ 4095단계)
DAC_OutBufCmd(DAC_CH0, ENABLE); //DAC CH0 출력 버퍼 활성
DAC_IntConfig(DAC_INT_DOR0IE,ENABLE); //DAC CH0에 대한 인터럽트 활성
DAC_SetData(DAC_CH0,0); //DAC CH0 초기 출력은 0V
DAC_ReferenceConfig(DAC_CH1, DAC_REFERENCE_VDDA); //DAC CH1에 기준 전압은 VDDA(3.3V)로 설정
DAC_ResolutionConfig(DAC_CH1, DAC_RESOLUTION_12BIT); //DAC 분해능은 12Bit (2^12Bit = 0 ~ 4095단계)
DAC_OutBufCmd(DAC_CH1, ENABLE); //DAC CH1 출력 버퍼 활성
DAC_IntConfig(DAC_INT_DOR1IE,ENABLE); //DAC CH1에 대한 인터럽트 활성
DAC_SetData(DAC_CH1,0); //DAC CH1 초기 출력은 0V
NVIC_EnableIRQ(COMP_DAC_IRQn); //DAC 인터럽트 활성
DAC_Cmd(DAC_CH0,ENABLE); //Enable DAC0
DAC_Cmd(DAC_CH1,ENABLE); //Enable DAC1
}
DAC 설정부분 설명입니다.
void COMP_DAC_IRQHandler(void)
{
if (DAC_GetFlagStatus(DAC_FLAG_DOR0IF) == SET)
{
DAC_ClearFlag(DAC_FLAG_DOR0IF); //DAC CH0 인터럽트 플래그 0으로 셋팅
}
if (DAC_GetFlagStatus(DAC_FLAG_DOR1IF) == SET)
{
DAC_ClearFlag(DAC_FLAG_DOR1IF); //DAC CH1 인터럽트 플래그 0으로 셋팅
}
}
인터럽트 부분 설명입니다.
현재 HT32 Codeconfig에서 정상적으로 만들어 주지 못한다.
DAC Sine wave는 다시 올리겠습니다.
'프로그램 > Holtek 32Bit' 카테고리의 다른 글
다시시도 DAC를 이용하여 Sine wave를 출력 해보자. 성공 (0) | 2023.08.17 |
---|---|
Motor Control Timer (MCTM) 예제 실행 (0) | 2023.08.14 |
USART Interrupt 예제 실행 (2) | 2023.08.11 |
NVIC에 Vector_Table_Offset 예제 실행 (0) | 2023.08.05 |
NVIC에 System_Exception 예제 실행 (0) | 2023.08.05 |