본문 바로가기

WCH/CH32V035

(10)
CH32X035 SSM - USB Keyboard 테스트 CH32X035의 USB 기능을 이용하여 USB HID Keyboard를 구현 해 보자. WCH에서 제공하는 예제는 Keyboard/Mouse 예제 인데 usb_desc.c 파일을 수정해서 Keyboard만 인식하도록 했다.  스위치를 누르면 정의된 키보드 값을 전송하는 간단한 예제를 작성 하였다.ch32x035_usbfs_device.c 에 정의 되어 있는 USBFS_DevEnumStatus 변수로 장치의 인식여부를 확인 할 수 있다. int main(void){ int sw_flag = 0; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); SystemCoreClockUpdate(); Delay_Init(); GPIO_INIT(); ..
CH32X035 SSM - USB HID 테스트( 파이썬 pywinusb 를 이용한 HID 테스트) CH32x035 의 USB Custom HID 테스트 해 보자.참고 소스코드는 https://github.com/openwch/ch32x035/tree/main/EVT/EXAM/USB/USBFS/DEVICE/CompatibilityHID 를 수정하여 작성하였다. WCH에서 제공하는 USB HID코드는 UART에서 받은 데이터를 HID로 전송하도록 되어 있는데 스위치 누르면 HID 데이터 전송하고 PC에서 받은 HID레포트 데이터를 출력 하도록 코드를 수정 하였다.int main(void){ NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); SystemCoreClockUpdate(); Delay_Init(); USART_Printf_Init(1152..
CH32X035 SSM - USB CDC 테스트 CH32X035의 가장 큰 특징으로 저렴(300원대)하고 소형에 USB 기능이 있는 MCU인데 USB 기능을 테스트 해보자.가장 많이 사용되고 간단한 CDC 테스트를 해보자. WHC에서 제공하는 CDC 예제는 USB2UART를 구현해 두었다. 실제 어플리케이션에 적용하려면 UART 기능은 빼고 USB로 데이터를 전송하거나 수신받은 데이터를 처리하는 예제가 필요할 것 같다. 그래서 코드를 수정해서 간단히 USB CDC로 ADC값을 전송하는 예제를 작성하였다.char str_buf[64];int main(void){ unsigned int adc_Value = 0; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); SystemCoreClockUpdate(..
CH32X035 SSM - Arduino PWM 테스트 CH32X035는 저렴하면서 플래시 용량도 64K이므로 Arduino에서 다양한 예제를 구동 해 볼 수 있다. 하지만 Arduno 예제중 아직 몇가지 기능은 안되는것 같다. CH32V003와 같이 PWM출력은 아직 안되는것 같다. PWM은 라이브러리를 직접 만들어 사용해야 한다. PA1에 연결되어 있는 가변저항의 전압값을 ADC로 읽어서 PA6에 연결된 PWM으로 출력해서 서보 모터를 구동할 수 있는 간단한 예제를 테스트 해 보았다. const int analogInPin = PA1; // Analog input pin that the potentiometer is attached to const int analogOutPin = PA6; // Analog output pin that the LED is..
CH32X035 SSM - Dhrystone and Whetstone Benchmark MCU 성능 측정을 할수 있는 벤치마크 방법은 여러가지가 있지만 Dhrystone, Whetstone 방식을 많이 사용한다. 각각의 특징은 아래와 같다. Dhrystone - 정수(ALU)연산성능 측정, MIPS 수치로 표기 Whetstone - 부동소수점(FPU)연산성능 측정, MFLOPS 수치로 표기 테스트 코드는 STM32H MCU Dhrystone, Whetstone, IIR Benchmark 성능 테스트 를 이용하였다. 벤치마크 테스트결과 RISC-V 코어의 ESP32-C3 벤치마크 테스트 결과 보다는 느린 수준이다. Dhrystone and Whetstone Benchmark mode = Arduino Dhrystone Benchmark, Version 2.1 (Language: C) Exec..
CH32X035 SSM - Arduino 개발환경 설정 CH32V003은 100원대의 저렴한 RISC-V 코어로 간단한 어플리케이션에는 사용하기 좋았는데 Arduino같은 약간 무거운 라이브러리를 올리기에는 메모리 용량이 너무 부족하다. CH32X035는 저렴하지만 64k 플레시 메모리에 USB까지 내장해서 다양한 어플리케이션에 적용하기 좋을것 같다. WCH사의 Arduino 개발환경은 https://github.com/openwch/arduino_core_ch32 에서 다운로드 받을 수 있다. CH32V003 Arduino 개발 환경 설정을 참고로 해서 CH32X035로 설정해서 테스트 해보자 const int ledPin = PA0; void setup() { // set the digital pin as output: pinMode(ledPin, OUT..
CH32X035 SSM - ADC 테스트 CH32X035 는 12bit ADC가 11채널 (내부 1채널) 있다.터치 키 정전 용량 감지 장치도 ADC로 처리 할수 있다고 한다.참고: ADC의 채널 3, 채널 7, 채널 11 및 채널 15 기능은 제품에 사용할 수 없다. (로트번호의 끝에서 두 번째 5자리가 0이 되는 것) 일단 기본 예제로 테스트 해보자 CH32X035 ADC 초기화 함수void ADC_Function_Init(void){ ADC_InitTypeDef ADC_InitStructure = {0}; GPIO_InitTypeDef GPIO_InitStructure = {0}; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd..
CH32X035 SSM - W5500 을 이용한 Iperf TCP Throughput 측정 테스트 CH32X035는 저렴(2$대)하고 작은크기(3mm x 3mm)의 RISC-V 코어로 소형의 TCP/IP 솔루션으로 사용하기 좋을것 같아 W5500을 이용하여 TCP/IP 전송률 테스트를 해 보았다. 우선 Wizet사에서 제공하는 ioLibrary Driver를 다운 받아 프로젝트 폴더에 복사 한다. 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..