본문 바로가기

WCH/CH32V307

(12)
CH32V307 SM - Mounriver에서 W5500의 iperf TCP Throughput 측정 테스트 Arduino IDE에서 W5500 테스트에서 전송률이 낮아서 MounRiver 에서 W5500 테스트를 해 보자 우선 프로젝트를 생성하고 ioLibrary Driver를 다운 받아 복사 한다. 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_2; GPIO_InitStructure.GPIO_Mod..
CH32V307 SM - Arduino에서 W5500을 이용한 iperf Throughput 측정 테스트 CH32V307 Arduino 개발환경 에서 W5500 테스트하려고 기존 코드를 컴파일 하려니 에러가 발생한다. In file included from c:\Users\nexp7\OneDrive\����\Arduino\libraries\Ethernet2\src/Ethernet2.h:16, from D:\WORK\Arduino\CH32\w5500_iperf\w5500_iperf.ino:22: c:\Users\nexp7\OneDrive\����\Arduino\libraries\Ethernet2\src/EthernetClient.h:5:10: fatal error: Client.h: No such file or directory #include "Client.h" STM32용 코드중에서 Client.h, TC..
CH32V307 SM - Arduino ADC, DAC 테스트 CH32V307에는 2개의 12bit DAC 가 있다. 기존 DAC코드로 구동시 정상 동작을 하지 않는다. variant_CH32V307VCT6.h 파일을 확인 해 보니 DAC 채널의 경우 포트 설정을 아래와 같이 설정해 주어야 한다. #define PA4_ALT2 (PA4 | ALT2) //for DAC_Channel1 #define PA5_ALT2 (PA5 | ALT2) //for DAC_Channel2 VR이 연결된 PA0의 ADC값을 읽어 DAC1으로 출력 하는 간단한 예제로 정상 동작하는것을 확인 했다. const int analogInPin = A0; //const int analogOutPin = PA4; const int analogOutPin = PA4_ALT2; int sensorVal..
CH32V307 SM - TFT-LCD 그래프 출력 테스트 CH32V307-SM 보드는 SM Type EVM 형태의 표준 핀맵으로 제작되었고 확장 테스트 보드에서 기존에 제작 해 두었던 여러가지 보드를 테스트 할 수 있다. 확장 테스트 보드의 LCD에는 8bit 방식으로 연결되어 있다. 8비트 방식을 16비트 방식으로 변환 해 주는 LCD_CONV 테스트 보드에 연결하여 테스트 했다. 소스코드는 Raspberry Pi PicoW - TFT LCD 출력 테스트(그래프 출력)를 수정해서 사용 했다. 초기화 부분과 데이터 출력 부분은 아래와 같이 수정 했다 #define LCD_XLINE_SIZE240 #define LCD_YLINE_SIZE400 #define sbi(Port, Value) Port->BSHR = (Value) #define cbi(Port, Val..
CH32V307 SM - 웹서버 테스트 CH32V307 의 내장 Ethernet PHY를 이용하여 웹서버 테스트를 해 보자 사용 소스 코드는 하기 링크를 수정해서 작성하였다. https://github.com/openwch/ch32v307/tree/main/EVT/EXAM/ETH/WebServer 웹서버 처리 함수 /********************************************************************* * @fn Web_Server * * @brief web process function. * * @return none */ void Web_Server(void) { char *paraptr; uint8_t reqnum = 0; u32 resplen = 0; u32 pagelen = 0; reqnum = ..
CH32V307 SM - UDP 전송속도 테스트(Iperf UDP Throughput 측정 테스트) Ethernet PHY가 포함되어 있는 CH32V307의 UDP 이더넷 성능 테스트를 진행해 보자 UDP서버 예제를 이용해서 UDP 루프백 속도를 측정 해 볼 수 있다. https://github.com/openwch/ch32v307/tree/main/EVT/EXAM/ETH/UdpServer int cnt = 0; void WCHNET_UdpServerRecv(struct _SOCK_INF *socinf, u32 ipaddr, u16 port, u8 *buf, u32 len) { //u8 ip_addr[4], i; /* int i; // printf("Remote IP:"); for (i = 0; i < 4; i++) { ip_addr[i] = ipaddr & 0xff; printf("%d ", ip_a..
CH32V307 SM - TCP 전송속도 테스트(Iperf Throughput 측정 테스트) CH32V307의 최대 장점은 작은 페키지(LQFP64)에 Ethernet PHY가 포함되어 있는 것이다. 이더넷 성능 테스트를 진행해 보자 TCP서버 예제를 이용해서 TCP 루프백 속도를 측정해 보자 https://github.com/openwch/ch32v307/tree/main/EVT/EXAM/ETH/TcpServer void WCHNET_DataLoopback(u8 id) { #if 1 u8 i; u32 len; u32 endAddr = SocketInf[id].RecvStartPoint + SocketInf[id].RecvBufLen; //Receive buffer end address if ((SocketInf[id].RecvReadPoint + SocketInf[id].RecvRemLen) ..
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..