본문 바로가기

WCH

(36)
CH32V307 SM - Dhrystone, Whetstone, IIR Benchmark 성능 테스트 MCU 성능 측정을 할수 있는 벤치마크 방법은 여러가지가 있지만 Dhrystone, Whetstone 방식을 많이 사용한다. 각각의 특징은 아래와 같다. Dhrystone - 정수(ALU)연산성능 측정, MIPS 수치로 표기 Whetstone - 부동소수점(FPU)연산성능 측정, MFLOPS 수치로 표기 테스트 코드는 STM32H MCU Dhrystone, Whetstone, IIR Benchmark 성능 테스트 를 이용하였다. 벤치마크 테스트결과 STM32F4 벤치마크 테스트 와 비슷한 수준이고 RISC-V 코어의 ESP32-C3 벤치마크 테스트 결과 보다는 상당히 좋은것 같다. mode = Arduino Dhrystone Benchmark, Version 2.1 (Language: C) Executi..
CH32V307 SM - Arduino 만들기 CH32V307 개발환경을 위해 Arduino Core Code도 제공된다. https://github.com/openwch/arduino_core_ch32 Arduino Board 파일을 설치 먼저 보드 메이저에서 URL을 등록해 준다. https://github.com/openwch/board_manager_files/raw/main/package_ch32v_index.json 이후 CH32를 검색하면 CH32 MCU EVT Board를 설치 할 수 있다. 설치 완료후 Board 파일에서 CH32V30x를 선택하면 된다.
CH32V307 SM - SPI, SPI DMA 테스트 CH32V307은 3개의 SPI가 있고 최대 36Mhz 로 구동된다. CH32V307의 SPI 기본 동작 테스트 코드 void SPI_FullDuplex_Init(void) { GPIO_InitTypeDef GPIO_InitStructure={0}; SPI_InitTypeDef SPI_InitStructure={0}; RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA | RCC_APB2Periph_SPI1, ENABLE ); GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; G..
CH32V307 개발환경 설정 및 GPIO 성능 테스트 CH32V307는 저렴하면서 Ethernet PHY 칩을 내장한 MCU로 Ethernet이 필요한 여러 어플리케이션에 적용하기 좋을것 같다. 우선 개발환경은 RISC-V 코어로 MounRiver용 예제코드를 사용하면 된다. 예제코드 https://github.com/openwch/ch32v307 GPIO 제어 예제 코드를 수정해서 GPIO 레지스터를 제어 해보자 MCU 성능 측정에 있어 GPIO 토글 속도를 측정하는 이유는 FTFLCD 제어 속도 테스트와 같은 GPIO로 제어 하는 주변 장치를 사용할 때 주요 성능 지표가 되기 때문이다. void GPIO_Toggle_INIT(void) { GPIO_InitTypeDef GPIO_InitStructure = {0}; RCC_APB2PeriphClockCm..
CH32V307 SM - Mini Ethernet 보드 제작 WCH사의 MCU는 저렴함(100원대 MCU)을 강점으로 RISC-V 코어 MCU를 많이 출시 하고 있다. 그중에서도 CH32V307과 같이 특이한 칩이이 있어 SM-Type EVM 형태의 표준 핀맵으로 제작해 보았다. CH32V307RCT6은 64핀의 작은 페키지 임에도 불구하고 Ethernet PHY가 내장되어 있다. 외부에 Ethernet PHY칩을 붙이지 않아도 아주 작고 간단하게 이더넷을 구현할 수 있다. 물론 내장 PYH는 10M로 동작해서고속의 데이터 전송은 어려울것 같다. 100M PHY를 지원 한다면 정말 좋았을것 같은데... 하는 아쉬움이 있다. 외부 PYH를 연결하면 Gibit 전송도 가능하다고 한다. 그리고 USB High Speed PHY가 내장되어 있어 고속 USB를 지원 하한다..
CH32V003 SSM - Arduino PWM 테스트 Adruino 환경에서 PWM도 정상 동작하지 않는다. CH32V003 Arduino ADC테스트 에서와 같이 variant_CH32V003F4.h 파일을 확인해 보니 TIM_MODULE_ENABLED가 설정되어 있지 않다. Enable 하고 컴파일 하면 에러가 발생한다. pwm_start() 함수에서 TimerCompareFormat_t 가 정의 되어 있지 않다고 한다. C:\Users\jhpark\AppData\Local\Temp\arduino\sketches\0CFD1DECB3444CB36B9C51B7C2E4C6C8\sketch\AnalogInOutSerial.ino.cpp:1: C:\Users\jhpark\AppData\Local\Arduino15\packages\WCH\hardware\ch32v..
CH32V003 SSM - Arduino ADC 테스트 새로운 칩에 대해서 테스트 하다 잘 안되는 사항이 있으면 기록하면서 정리 해봐야 겠다. ADC는 가장 기본이 되는 부분인데 정상 동작을 하지 않는다. variant_CH32V003F4.h 파일을 보면 디폴트로 ADC Module이 Enable 되저 있지 않다. /* ENABLE Peripherals */ //#define ADC_MODULE_ENABLED #define UART_MODULE_ENABLED // #define SPI_MODULE_ENABLED #define I2C_MODULE_ENABLED CH32V003의 ADC는 10비트 이고 ADC핀은 아래와 같이 할당되어 있다. /* CH32V003F4 Pins */ #define PA1 PIN_A1 #define PA2 PIN_A0 #define ..
CH32V003 SSM - Arduino SPI테스트 CH32V003 Arduino 개발환경 테스트에서 확인 결과 디폴트로 SPI가 disable 되어 있다. CH32V003 Aduino 환경에서 CH32V003의 SPI 제어를 하려면 먼저 Variant (\AppData\Local\Arduino15\packages\WCH\hardware\ch32v\1.0.3\system\) 파일에서 SPI_MODULE_ENABLE 설정을 해 주어야 한다. /* ENABLE Peripherals */ // #define ADC_MODULE_ENABLED #define UART_MODULE_ENABLED #define SPI_MODULE_ENABLED #define I2C_MODULE_ENABLED // SPI definitions #ifndef PIN_SPI_SS #def..