본문 바로가기

Cortex-M

(50)
GD32F303 SSM - Dhrystone, Whetstone, IIR Filter 벤치마크 테스트 MCU 성능 측정을 할수 있는 벤치마크 방법은 여러가지가 있지만 Dhrystone, Whetstone 방식을 많이 사용한다. 각각의 특징은 아래와 같다. Dhrystone - 정수(ALU)연산성능 측정, MIPS 수치로 표기 Whetstone - 부동소수점(FPU)연산성능 측정, MFLOPS 수치로 표기 테스트 코드는 STM32H MCU Dhrystone, Whetstone, IIR Benchmark 성능 테스트 를 이용하였다. GD32F303 의 Dhrystone, Whetstone, IIR Filter 벤치마크 테스트 결과 정수 연산은 나쁘지 않은데 부동소수점 연산은 좋지 않다. STM32의 Cortex-M4코어와 비교하면 상당한 성능 차이가 있는것 같다. 하지만 가격 대비 성능으로 비교 한다면 ST..
[GD32F-48 SSM EVM] GD32F303 Arduino 만들기 GD32F303을 Arduino로 사용하기위해 보드파일을 하기 링크를 이용하였다. https://github.com/keyboardio/ArduinoCore-GD32-Keyboardio GitHub - keyboardio/ArduinoCore-GD32-Keyboardio: Arduino core for GD32 devices, community developed, based on original GigaDevic Arduino core for GD32 devices, community developed, based on original GigaDevice's core - GitHub - keyboardio/ArduinoCore-GD32-Keyboardio: Arduino core for GD32 devi..
[GD32-48 SSM] GD32F303 - Iperf로 W5500의 TCP Throughput 측정 테스트 STM32F103 시리즈 대체용으로 추천 받은 GD32F303은 최대 클럭 120Mhz로 구동되고 SPI클럭을 30Mhz로 구동할 수 있다. STM32F103 과 비교해서 W5500의 TCP Throughtput 테스트 성능 비교를 해보면 좋을 것 같다. 네트웍 전송율 테스트를 위해 PC에서는 iperf 프로그램을 사용하고 STM32에서는 W5500 TCP loopback 테스트 코를 조금 수정해 iperf 클라이언트 코드로 작성했다. int32_t iperf_tcps(uint8_t sn, uint8_t* buf, uint16_t port) { int32_t ret; uint16_t size = 0, sentsize=0; switch(getSn_SR(sn)) { case SOCK_ESTABLISHED :..
[GD32-48 SSM] GD32F303 SPI DMA 테스트 GD32F303보드의 SPI 최대 클럭속도는 스펙상 30Mhz까지 가능하다. 핀투핀 호환되는 STM32F103 보드의 SPI 전송 테스트를 SPI DMA 와 비교해서 테스트 해보자 먼저 STM32CubeIDE를 이용하여 새로운 프로젝트를 생성하고 SPI 세팅을 한다. STM32CubeIDE에서 SPI 클럭 설정은 STM32F103 기준이라 최대 클럭주파수이상 설정하면 경고가 발생한다. GD32F303의 경우 120Mhz까지 설정 가능하므로 SPI클럭을 60Mhz로 설정이 가능하다. SPI DMA를 사용하지 않으면 SPI 출력 간격이 650ns정도로 측정이 된다. SPI DMA를 추가 해보자. GD32 SPI DMA 사용을 위해 SPI1_TX 를 추가 한다. GD32F303 에서 SPI DMA를 사용하면 ..
[GD32-48 SSM] GD32F303 개발환경 설정 및 성능 테스트(STM32CubeIDE 이용) GigaDevice사의 GD32시리즈는 STM32시리즈와 동일 핀맵으로 호환 가능하으로 STM32를 대체해서 사용 할수 있다고 한다. 우선 GD32의 개발환경 설정과 간단한 성능 측정을 해 보자 개발환경은 ST사의 STM32CubeIDE를 이용하면 된다고 한다. 테스트에 사용한 칩은 GD32F303CCT6 이다. 보드 제작하고 STM32CubeProgrammer로 STLink JTAG 접속하면 연결 되는것을 확인 할 수 있다. STM32로 인식된다. STM32CubeIDE 로 48핀 페키지 STM3F103C 로 선택해서 기본 예제를 컴파일했다. 하지만 디버깅하면 칩 인식을 하지 못한다. 칩 ID가 달라서 그런가? 일단 컴파일 된 바이너리를 다운로드 해 보자. 우선 STM32F103 시리즈의 최대 클럭 7..
[GD32 SSM EVM] GD32F303 테스트 보드 제작 반도체 대란으로 인해 ST 제품들의 품귀 현상이 발생하여 부품 수급이 힘들어 졋다. 물량이 없다 보니 가격도 상당히 상승 해서 기존 대비 10배 ~ 100배로 비싼곳도 있다. ST의 대체품을 찾다 GigaDevice사의 GD32시리즈를 추천 받았다. ST의 핀맵과 동일하며 펌웨어도 바이너리레벨에서 동일게(?) 동작 한다고 한다. 그중에서 STM32F103 시리즈를 대체 할수 있는 GD32F103, GD32F303 을 테스트 해보자. GD32F303은 Cortex-M4 코어에 120Mhz로 동작하며 128~1M Flash를 가지면서 가격은 STM32F103 시리즈보다 저렴하다. 스펙상으로는 정말 좋아 보이는데 실제 ST제품을 대체 할 수 있을지 테스트 해보자 STM32시리즈와 하드웨어적으로 호환 되므로 기..
M052LBN EVM - NUVOTON 12bit ADC 테스트 M052LBN EVM - NUVOTON 12bit ADC 테스트 NUVOTON M051 시리즈 ADC는 최대 12비트해상도 이고 특이사항으로 5V까지 측정 가능하다. - 입력레인지 : 0~5V- 10bit 12bit, 해상도- 8채널 싱글, 4채널 differenctial- 760kSPS (16Mhz) M052LBN ADC 블록도 M052LBN ADC 초기화 코드void ADCInit( void){ SYS_UnlockReg(); /* Enable ADC module clock */ CLK_EnableModuleClock(ADC_MODULE); /* ADC clock source is 22.1184MHz, set divider to 7, ADC clock is 22.1184/7 MHz */ CLK_SetM..
M052LBN - NUVOTON Timer 테스트 M052LBN - NUVOTON Timer 테스트 Nuvoton사의 M051시리즈는 4개의 32bit (8bit prescale, 24bit timer)타이머가 있다. M052LBN 타이머 블록도 크럭소스 선택 M052LBN 타이머 초기화 코드타이머 클럭소스는 내부클럭을 사용하고 있기 때문에 HIRC를 선택해서 사용하고 있다.void Timer0Init(void){ SYS_UnlockReg(); /* Enable peripheral clock */ CLK->APBCLK |= CLK_APBCLK_TMR0_EN_Msk; /* Peripheral clock source */ CLK->CLKSEL1 |= CLK_CLKSEL1_TMR0_S_HIRC; //1ms 타이머 설정 TIMER_Open(TIMER0, TIM..