본문 바로가기

WCH

(36)
[CH32V003-SSP] CH32V003J4M6 PD1 SWIO 핀 공유 문제 CH32V003J4M6는 8핀 패키지로 핀수가 적다 보니 8번핀에 UART-TX 와 SWD 핀이 겹쳐 있다. UART 사용으로 설정한 펌웨어를 다운로드 하고나면 다음부터 인식이 안되는 현상이 발생한다.  해결 방법은 WCH-LinkUtility 프로그램에서 “Clear All Code Flash-By Power off” 로 지우면 다시 접속할 수 있다. 왜 하필 많이 사용하는 UART TX핀에 할당이 되어 있을까… 잘 사용하지 않는 다른핀도 있는데… 아쉽다. UART 디버깅을 하려면 이 프로그램으로 자주 지웠다 다시 살리는 형태로 불편하게 개발 해야 할것 같다. 또 한가지 해결책으로 리맵을 이용하여 PD6으로 할당 하면 될것 같다. 리맵으로 PD6을 TXD로 할당하면 정상적으로 동작 하는것을 확인 할 수..
[CH32V003-SSP] PWM Timer1 CH4 테스트 CH32V003에서 PC4(TIM1_CH4) 에서 PWM 출력을 해야 하는 프로젝트가 있어 테스트 중인데 PWM출력이 나오지 않는다. 예전에 CH32V003 보드에서 테스트 했던 코드를 확인해 볼까..   [CH32V003-SSP] 보드에 실장되어 있는 LED는 T1CH4(PC4) 에 서 테스트 해 보자    #include "debug.h"/* PWM Output Mode Definition */#define PWM_MODE1 0#define PWM_MODE2 1/* PWM Output Mode Selection */#define PWM_MODE PWM_MODE2void TIM1_PWMOut_InitCH4(u16 arr, u16 psc, u16 ccp){ GPIO_InitTypeDef GP..
[CH32V003-SSP] CH32V003J4M6 SOIC-8 핀 테스트 보드 제작 가장 저렴한 MCU CH32V003 시리즈 중에서 핀수가 적은 SOIC-8 핀의 CH32V003J4M6 은 소형이고 간다한게 무엇인가 만들어야 할때 사용하면 좋을것 같아 테스트 보드를 SSP-EVM 형태로 제작해 보았다.ATtiny13 SS EVM 보드와 비슷한 형태로 제작 했다.
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..