본문 바로가기

WCH

(36)
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..
CH32X035 SSM - 개발환경 설정 및 성능 측정(MounRiver Studio) CH32X035는 RISC-V 코어로 MounRiver Studio를 이용하여 개발 할 수 있다. CH32X035 예제코드는 https://github.com/openwch/ch32x035 에서 다운 받을 수 있다.    컴파일 후 다운로드 하면 칩을 인식 하지 못한다. WCH-LinkUtility 프로그램으로 칩을 인식 시켜 볼까?하지만 칩 선택 리스트에 CH32X035가 없다. 버전이 문제 인가?  최신버전(V1.9)를 다운 받아 테스트 해 보니 CH32X035가 있다.CH32V003 SSM - 개발환경 설정을 참고 해서 개발환경을 구성하고 제공하는 GPIO 토글 함수를 사용하여 속도를 측정해 보면 667ns 측정이 된다. int main(void){ u8 i = 0; NVIC_Priori..
CH32X035 SSM - 보드 제작 요즘 WCH사에서 작고 저렴한 MCU들이 잘 나오고 있는데 그중에 눈에 띄는 것이 CH32X035이다. TSSOP20핀 또는 그보다 작은 3x3mm 크기에 QFN 패키지는 정말 작은 크기에 USB PD 솔루션을 제공하는 MCU이다. 가격도 200원대라 정말 저렴한것 같다. 소형의 USB 기능이 필요한 어플리케이션에 정말 좋은 솔루션이 될것 같다. MCU 코어는 48Mhz의 RISC-V이고 62k flash라 CH32003 보다는 개발환경이 여유로운것 같다. CH32X035는 여러 패키지가 있지만 우선 가장 작은 QFN20 패키지로 SSM EVM 형태로 제작 해 보았다.
CH32V003 - VS Code를 이용한 PIO(PlatformIO) 개발환경 설정 저렴한 CH32V003은 다양한 개발 환경을 제공한다. VS Code 에서 PIO(PlatformIO) 개발환경으로 컴파일 가능하다고 해서 테스트 해 보았다. 우선 VS Code PlatformIO설정에서 Advancde platform installation으로 CH32V 를 install 해 주어야 한다. https://github.com/Community-PIO-CH32V/platform-ch32v.git 를 추가 해주면 된다. 정상 인스톨 되면 결과 화면을 볼 수 있다. 새로운 프로젝트를 생성한다. 알맞은 칩셋(보드)를 선택하고 Framework를 설정해서 새로운 프로젝트를 생성할 수 있다. 간단히 기본 예제를 생성하고 동작 테스트를 해 보자. #include "debug.h" void GPIO_..
CH32V003 SSM - Iperf로 W5500의 TCP Throughput 측정 테스트 100원대 MCU로 유명한 CH32V003에서 W5500 모듈보드를 이용하여 이더넷 전송률 테스를 해 보자.그러면 정말 저렴한 이더넷 솔루션이 되지 않을까? 아쉽게도 플래시 용량 문제로 Arduino 환경에서는 사용할 수 없다. CH32V003 SSM - 개발환경(MounRiver)을 이용하여 테스트 했다. 우선 프로젝트를 생성하고 ioLibrary Driver를 다운 받아 복사 한다.   CH32V003 SPI 초기화 함수를 작성한다.void SPI_FullDuplex_Init(void){ GPIO_InitTypeDef GPIO_InitStructure = {0}; SPI_InitTypeDef SPI_InitStructure = {0}; RCC_APB2PeriphClockCmd(RCC..
CH32V003 - MAX31855 온도 센서 테스트(플래시 메모리 문제 발생) CH32V003에서 Arduino IDE에서 MAX31855 예제를 컴파일 하면 에러가 발생 한다.https://nexp.tistory.com/2500 region `FLASH' overflowed by 10576 bytes플래시 메모리 용량이 부족하다. CH32V003과 같이 메모리가 부족한 MCU에서 Arduino 코드로 작성하면 문제가 될것 같다. 라이브러리를 사용하지 않고 직접 작성해 보자#include #define MAX31855_CS_BIT PC0#define MAX31855_CS_LO() digitalWrite(MAX31855_CS_BIT, 0)#define MAX31855_CS_HI() digitalWrite(MAX31855_CS_BIT, 1)#de..