Skip to content

CH552で始める Arduino スタイル開発ガイド

開発環境を整える

ドライバー

PCにドライバーを入れていきます.

こちらでZIPファイルをダウンロードして, 展開してください.

alt text

すると,WCH-LinkUtility.exeをダブルクリックで実行します. すると以下のような画面が出ると思います. ひらいたら,右上のバツ印で閉じてもらって大丈夫です.

このとき,いくつか聞かれますが「はい」を選択しておいてください. 自動的にドライバーがPCに入ります.

alt text

ArduinoIDE

CH552をArduino開発環境で扱うには、少し準備が必要です。
まずArduino IDEをインストールし、「ファイル」→「基本設定」を開きます。
「追加のボードマネージャのURL」欄に次のURLを追加してください。

https://raw.githubusercontent.com/DeqingSun/ch55xduino/ch55xduino/package_ch55xduino_mcs51_index.json

Tip

すでに他のURLがある場合は、カンマ区切りで追加してください.

設定を保存したら、「ツール」→「ボード」→「ボードマネージャ」を開きます。
検索欄に「CH55xduino」と入力し、表示されたパッケージをインストールしましょう。

これでCH552がArduino IDE上で使えるようになります。

ボード設定とオプション

ボードの種類は「CH552 Board」を選びます。
特別な事情がない限り、他の設定はデフォルトのままで問題ありません。

通常はUSB経由でプログラムを書き込んだりシリアル通信したりするので、通信モードは「Default CDC」を選びます。
もしCH552のHID機能(USBキーボードやマウスエミュレーション)を使いたい場合は、「USER CODE w/ 148B USB ram」などに設定して、USB用にRAMを確保しましょう。

プログラムの書き込み方法

CH552は直接パソコンと接続します。
特別な書き込み器は必要ありません。

書き込みの際、基板のSWを導通させてブートローダーモードに切り替えます。Arduino IDEからプログラムを書き込むと、自動的に転送が始まります。
書き込みエラーが出た場合は、USBドライバが正しくインストールされているか、ケーブルがデータ通信用かどうかを確認してみましょう。

サンプルコード

ここでは、LEDを点滅させるプログラムを作成します。
以下のコードをArduino IDEに入力し、CH552に書き込んでみましょう。

#define LED_BUILTIN 15 // P1.5に接続されたLEDを使う

void setup() {
  pinMode(LED_BUILTIN, OUTPUT); // LED_BUILTIN を出力モードに設定
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH); // LEDを点灯
  delay(500);                      // 500ミリ秒待機
  digitalWrite(LED_BUILTIN, LOW);  // LEDを消灯
  delay(500);                      // 500ミリ秒待機
}

このプログラムは、CH552のP1.5ピンに接続されたLEDを500ミリ秒ごとに点滅させます。
Arduino標準のpinMode()digitalWrite()delay()を使っているため、ほかのArduinoボードと同じ感覚で開発できます。

PWMの例

void setup() {
  pinMode(15, OUTPUT); // 15はP1.5(PWM対応)
}

void loop() {
  for (int i = 0; i <= 255; i++) {
    analogWrite(15, i); // PWMデューティ比を0〜255で変化
    delay(10);
  }

  for (int i = 255; i >= 0; i--) {
    analogWrite(15, i);
    delay(10);
  }
}

プログラミング

では外部のLEDを動かしてみましょう. ピンはP3.4,p3.3を使います.

  • P3.4,P3.3ピンにLEDのアノード(長い脚)を接続します。
  • LEDのカソード(短い脚)は330Ω程度の抵抗を通してGNDに接続します。

LEDを直接接続するとCH552に負荷がかかるため、必ず抵抗を入れるようにしましょう。

以下のコードを使用して、P3.2とP1.4に接続された外部LEDを交互に点滅させるプログラムを作成します。

#define LED1 34 // P3.4に接続されたLED
#define LED2 33 // P3.3に接続されたLED

void setup() {
  pinMode(LED1, OUTPUT); // LED1を出力モードに設定
  pinMode(LED2, OUTPUT); // LED2を出力モードに設定
}

void loop() {
  digitalWrite(LED1, HIGH); // LED1を点灯
  digitalWrite(LED2, LOW);  // LED2を消灯
  delay(500);               // 500ミリ秒待機

  digitalWrite(LED1, LOW);  // LED1を消灯
  digitalWrite(LED2, HIGH); // LED2を点灯
  delay(500);               // 500ミリ秒待機
}

このプログラムでは、P3.4とP3.3に接続されたLEDが交互に点滅します。
digitalWrite()関数を使用して、各ピンの出力を制御しています。

Note

電流制限抵抗の使用
LEDを直接ピンに接続すると、CH552のピンに過剰な電流が流れ、故障の原因となります。必ず330Ω以上の抵抗を使用してください。

ピンの電流制限
CH552の各ピンには最大電流制限があります。複数のLEDを同時に点灯させる場合は、合計電流が制限を超えないように注意してください。

Note

著者:Shion Noguchi