CH32V003 SSM - 개발환경(MounRiver) 설정 및 MCU 성능 테스트
테스트 예제코드
https://github.com/openwch/ch32v003
https://github.com/Community-PIO-CH32V/platform-ch32v
GitHub - Community-PIO-CH32V/platform-ch32v: PlatformIO platform for CH32V RISC-V chips (CH32V003, CH32V103, CH32V20x, CH32V30x)
PlatformIO platform for CH32V RISC-V chips (CH32V003, CH32V103, CH32V20x, CH32V30x) and CH56x, CH57x, CH58x - GitHub - Community-PIO-CH32V/platform-ch32v: PlatformIO platform for CH32V RISC-V chips...
github.com
MounRiver 를 설치하고 예제를 다운받아서 실행하면 기본 설정이 구축되어 있고 컴파일 가능하다.
디버깅버튼을 클릭 하면 처음에 환경설정을 해주고 다운로드 및 디버깅이 가능하다.
만약 디버깅 환경 설정이 정상적으로 되지 않는다면 수동으로 설정해 주면 된다.
CH32V003의 개발환경 설정이 정상적으로 되었으니 MCU의 성능 측정(GPIO 토글 스피드)를 해 보자.
void GPIO_Toggle_INIT(void)
{
GPIO_InitTypeDef GPIO_InitStructure = {0};
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOD, &GPIO_InitStructure);
}
/*********************************************************************
* @fn main
*
* @brief Main program.
*
* @return none
*/
int main(void)
{
u8 i = 0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
Delay_Init();
USART_Printf_Init(115200);
printf("SystemClk:%d\r\n", SystemCoreClock);
printf("GPIO Toggle TEST\r\n");
GPIO_Toggle_INIT();
while(1)
{
//Delay_Ms(250);
//GPIO_WriteBit(GPIOD, GPIO_Pin_4, (i == 0) ? (i = Bit_SET) : (i = Bit_RESET));
GPIOD->BSHR = GPIO_Pin_4;
GPIOD->BCR = GPIO_Pin_4;
}
}
테스트 결과 GPIO 토글 속도는 80ns로 비슷한 클럭의 Cortex-M0코어를 가진 STM32F030 과 비교해 보면 다소 느리게 측정된다.
클럭 설정 부분을 보면 HSE가 디폴트로 설정되어 있다. HSE가 설정되어 있지만 크리스털이 실장되어 있지 않기 때문에 에러가 발생하는데 이때 기본 24Mhz HSI로 구동이 된다고 한다.
클럭 설정을 HSI 48Mhz로 해서 테스트 해보자
//#define SYSCLK_FREQ_8MHz_HSI 8000000
//#define SYSCLK_FREQ_24MHZ_HSI HSI_VALUE
#define SYSCLK_FREQ_48MHZ_HSI 48000000
//#define SYSCLK_FREQ_8MHz_HSE 8000000
//#define SYSCLK_FREQ_24MHz_HSE HSE_VALUE
//#define SYSCLK_FREQ_48MHz_HSE 48000000
테스트 결과 GPIO 토글 속도는 40ns로 두배 정도 빨라 졌다. 메인 루프 수행 주기도 160ns정도로 빠르다.
이제 48Mhz의 일반적인 MCU속도가 측정되는 것을 확인 할 수 있다.