본문 바로가기

CH32V307

(10)
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 - 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..
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..

반응형