본문 바로가기

임베디드

CH552T 기능 테스트

주문한 CH552T 테스트 보드가 생각보다 빨리 도착했다.

크기가 매우 작지만 필요한것은 모두 다 있는것 같다.

PROG 점퍼를 연결한 상태로 전원을 켜면 프로그래밍 모드로 진입한다.

SOT-23크기의 5pin IC가 3.3Volt LDO로 추정되며 CH552T의 전원은 3.3Volt로 구동되도록 기본 설정(납점퍼)되어 있다. 

CH552T 개발 보드

 

우분투 20.04가 설치된 PC에서 간단히 테스트를 해보았다.

8051/Z80/HC08/PIC16 같은 8bit MCU를 지원하는 SDCC - Small Device C Compiler 라는 크로스 컴파일러는 아래 명령으로 쉽게 설치하였다.

 

sudo apt-install build-essential sdcc

다양한 CH55x용 예제 코드는 github에서 다운로드 받아 컴파일 해보았다. 별다른 에러없이 컴파일은 잘 된것 같다.

git clone https://github.com/Blinkinlabs/ch554_sdcc.git
cd ch554_sdcc/examples/
make

펌웨어 다운로드 툴은 아래와 같이 다운로드/빌드/설치해 보았다.

git clone https://github.com/ElectronicCats/ch55x-isptool
cd ch55x-isptool/
make
sudo cp ch552isptool /usr/local/bin/.

 

LED 1개는  전원 표시용, 다른 1개는 PORT1.4 또는 PORT3.0에 연결되어 기본 기능 검사에 사용할 수 있다.

 

CH551 보드는 PORT3.0에 LED가 연결되어 있다.

아래 LED 깜빡이는 예제 코드는 chch554_sdcc/examples/blink 폴더에 있다.

// Blink an LED connected to pin 3.0 on the CH551 board

#include <ch554.h>
#include <debug.h>

#define LED_PIN 0 
SBIT(LED, 0xB0, LED_PIN);

void main() {
    CfgFsys();

    // Configure pin 3.0 as GPIO output
    P3_DIR_PU &= 0x0C;
    P3_MOD_OC = P3_MOD_OC & ~(1<<LED_PIN);
    P3_DIR_PU = P3_DIR_PU | (1<<LED_PIN);

    while (1) {
    	mDelaymS(500);
        LED = !LED;
    }
}

make로 컴파일하면 blink.bin이 생성되고, 아래와 같이 펌웨어를 전송하니 LED가 1Hz 주기로 점멸하는 것을 확인 하였다.

odroid@H2:~/Project/ch55x/ch554_sdcc/examples/blink$ sudo vnproch55x blink.bin 

------------------------------------------------------------------
CH55x Programmer by VNPro
------------------------------------------------------------------
Found Device CH5551
Bootloader: 2.3.1
ID: D7 EA 5D 43
XOR Mask: 61 61 61 61 61 61 61 B2 
Write
..................................................
Write complete!!!
------------------------------------------------------------------

 

CH552T 보드는 LED가 PORT1.4에 연결되어 있으므로 아래와 같이 변경하였다. 그런데 동작하지 않는다. :(

// Blink an LED connected to pin 1.4

#include <ch554.h>
#include <debug.h>

#define LED_PIN 4 
SBIT(LED, 0x90, LED_PIN);

void main() {
    CfgFsys();

    // Configure pin 1.4 as GPIO output
    P1_DIR_PU &= 0x0C;
    P1_MOD_OC = P1_MOD_OC & ~(1<<LED_PIN);
    P1_DIR_PU = P1_DIR_PU | (1<<LED_PIN);

    while (1) {
    	mDelaymS(500);
        LED = !LED;
    }
}

펌웨어는 정상적으로 기록된것 같은데, 왜 동작하지 않을까? 

------------------------------------------------------------------
CH55x Programmer by VNPro
------------------------------------------------------------------
Found Device CH5552
Bootloader: 2.3.1
ID: 2F F3 43 43
XOR Mask: A8 A8 A8 A8 A8 A8 A8 FA 
Write
..................................................
Write complete!!!
------------------------------------------------------------------

CH551 보드는 5.0Volt, CH552 보드는 3.3Volt 구성이라 LED 구동 전류/전압이 부족한지 스코프로 IO 레벨을 측정해보자.