본문 바로가기

Cortex-M/GigaDevice

(14)
GD32F130 SSM - UART 2채널 테스트 GD32F130은 2개의 UART를 제공한다. SM-Type EVM 핀맵의 UART는 PA2(TXD1), PA3(RXD1)에 할당이 되어 있고 보드내의 UART 커넥터에는 PA9(TXD0), PA10(RXD0) 에 연결되어 있다. 만약 두개의 시리얼을 동시에 사용하려면 GD32130의 variant 파일을 수정해 주어야 한다. \AppData\Local\Arduino15\packages\GD32Community\hardware\gd32\0.0.1\variants\GD32F130F8_GENERIC\variant.h #define USE_USART0_SERIAL #define USE_USART1_SERIAL #define SERIAL0_RX PA10 #define SERIAL0_TX PA9 #define P..
GD32F130 SSM - W5500을 이용한 웹서버 테스트 GD32F130은 TSSOP20핀 페키지의 작고 저렴한 MCU로 64k 플래시 메모리를 지원하기 때문에 W5500을 연결하면 소형의 웹서버 만들기에 좋을것 같다. GD32F130에서 W5500 테스트 결과 웹서버 관련 라이브러리가 잘되어 있는 EthernetWebServer는 기본 플래시 용량이 64k라서 컴파일 하면 플래시 메모리 용량 부족 에러가 발생한다. #include #include "Ethernet_Generic.h" #include c:/users/jhpark/appdata/local/arduino15/packages/gd32community/tools/xpack-arm-none-eabi-gcc/9.3.1-1.3/bin/../lib/gcc/arm-none-eabi/9.3.1/../../../..
GD32F130 - SPI 테스트, SPI 전송 속도 향상 및 DMA 사용하기 GD32F130의 SPI 클럭 속도는 18Mhz이다. #define LED1 PA1 void setup() { digitalWrite(LED1, 0); pinMode(LED1, OUTPUT); Serial.begin(115200); Serial.println("GD32 Test"); } unsigned char buf[3] = {1,2}; void loop() { SPI.transfer(buf, sizeof(buf)); SPI.transfer(buf, sizeof(buf)); } 테스트 결과 18Mhz 클럭이 출력되고 SPI출력 지연 시간은 1.1us로 최대 속도를 위해서는 SPI DMA를 사용해야 할것 같다. Arduino 코드 특성상 SPI Read, Write 부분을 1Byte식 처리 하도록 되어 ..
GD32F130 MCU 성능 테스트 - Dhrystone and Whetstone Benchmark GD32F130은 48Mhz로 동작하는 Cortex-M3 코어로 동일 클럭 M0시리즈 보다 50%이상 성능이 향상 되었다고 한다. GD32F130의 성능 측정을 위해 밴치마크 테스트를 해 보자. MCU 성능 측정을 할수 있는 벤치마크 방법은 여러가지가 있지만 Dhrystone, Whetstone 방식을 많이 사용한다. 각각의 특징은 아래와 같다. Dhrystone - 정수(ALU)연산성능 측정, MIPS 수치로 표기 Whetstone - 부동소수점(FPU)연산성능 측정, MFLOPS 수치로 표기 테스트 코드는 STM32H MCU Dhrystone, Whetstone, IIR Benchmark 성능 테스트 를 이용하였다. 벤치마크 테스트 결과 48Mhz클럭으로 동작하는 Cortex-M0코어의 STM32F0..
GD32F130 SSM - 개발환경 설정 (STM32CubeIDE 오류, Arduino 만들기) 기존에 사용했던 GD시리즈는 STM32과 동일한 핀맵이고 개발툴도 STM32CubeIDE를 그대로 사용하여 개발 할 수 있었는데 GD32F130은 동일하게 동작하지 않는다. 아무래도 ST사에서 사용할수 없도록 하지 않았을까... [GD32-48 SSM] GD32F303 개발환경 설정 및 성능 테스트(STM32CubeIDE 이용) GigaDevice사의 GD32시리즈는 STM32시리즈와 동일 핀맵으로 호환 가능하으로 STM32를 대체해서 사용 할수 있다고 한다. 우선 GD32의 개발환경 설정과 간단한 성능 측정을 해 보자 개발환경은 ST사의 STM32C nexp.tistory.com 우선 STM32CubeProgramer 에서 디바이스 인식은 되지만 프로그램이 정상적으로 Write되지 않는다. 디바이스 I..
GD32F130 SSM - 보드 제작 간단한 프로젝트에 적용하는 1$이하 MCU로 STM32F030 시리즈중 TSSOP 20핀 타입을 가장 많이 사용 하는데 반도체 품귀 현상으로 부품 수급이 쉽지 않다. GigaDevice 사의 MCU는 ST와 동일한 핀맵으로 제작 되기 때문에 쉽게 대체 가능하고 20핀 대체용으로 GD32F130을 추천 받았다. 그래서 기존 STM32F030 SSM 보드에 납땜 해서 테스트 해 보았다. GD32F1 시리즈는 Cortex-M3코어로 최대 속도는 시장 제품보다 50% 증가고 동일한 주파수에서 코드 실행 효율성은 30~40% 향상되었으며 전력 소비는 20~30% 감소했다고 한다. STM32F030F4P6 의 경우 16k Flash가 최대 인데 GD32F130F6P6의 경우 동일한 패키지에 64k Flash를 지원..
[STM32-48_W5500] 초소형 이더넷 보드 제작 네트웍 처리를 위해 소형이고 저렴하면서 어느정도 성능도 보장되는 MCU로 48핀 LQFP 패키지의 ST시리즈 MCU가 좋을것 같다. 48핀에 핀맵이 호환되는 MCU들이 많이 출시되고 있으므로 소형의 보드로 만들어 두면 여러 어플리케이션에 적용할 수 있을것 같아 SSM-Type EVM 형태로 제작 했다. 윗면은 48핀 패키지 MCU를 실장 할 수 있다. W5500 TCP 전송률 테스트에서 가격대비 탁월한 성능을 보여주는 GD32F303을 실장하여 제작해 보았다.  아래면에는 WIZnet의 W5500을 실장 할 수 있도록 했다.
[GD32F-48 SSM] Arduino GD32F303 I2C 테스트 - SSD1306 OLED SSD1306 라이브러리(Adafruit_SSD1306) 기본예제를 수정해서 간단히 OLED에 출력하는 예제를 구동하면 정상 동작하는 것을 확인 할 수 있다. #include #include #include #include #define SCREEN_WIDTH 128 // OLED display width, in pixels #define SCREEN_HEIGHT 64 // OLED display height, in pixels // Declaration for an SSD1306 display connected to I2C (SDA, SCL pins) #define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin) Adafruit_SS..