CH552でUSB HID機能を試してみた

電子工作

前回の記事で無事CH552Eが動いたので,今回はキーボードを作成には欠かせないUSB HID機能を試してみたいと思います.
とは言っても,偉大な方が作ってくださったライブラリを使用するだけですが…

事前準備

今回もお手軽なので,Arduino IDEを使用します.
前回の記事通りにやっていれば勝手に入っていると思いますが,CH55XDuinoをインストールする必要があります.インストールされていない場合は以下をインストールしてください.

参考までに,以下はCH55xDuinoのリポジトリです.

GitHub - DeqingSun/ch55xduino: An Arduino-like programming API for the CH55X
An Arduino-like programming API for the CH55X. Contribute to DeqingSun/ch55xduino development by creating an account on ...

このリポジトリの中にあるUSBHIDKeyboard.hを使用します.

コード

上記ができたら早速コードを書いていきます.
ここで注意点なのですが,普通にソースを作ると,インクルードライブリがデフォルトの場所で無いため,パスが長くなって面倒なので,サンプルコードを作成して書き換えるほうが楽です.
ちなみに,ライブラリファイルはC:\Users\username\AppData\Local\Temp\arduino-language-server492040327\build\sketch\src\userUsbHidKeyboardにあります.
まず,サンプルコードから以下を選びます.結構階層が深いです.

そしたら,作成されたコードをそのまま使っても良いのですが,GPIOへの入力が必要なので以下を使用します.

#include "src/userUsbHidKeyboard/USBHIDKeyboard.h"

void setup() {
  USBInit();
}

void loop() {
  Keyboard_write('A');
  delay(500);
}


500ms間隔で”A”を入力するだけのコードです.めっちゃ簡単.

書き込み

上記のコードをそのまま実行するとThis example needs more USB ram. Increase this setting in menu.と出ると思います.exampleをそのまま使用している方は,最初に説明が書いてると思いますが,これはUSB settingsをDefault CDCにしているからです.
なので,以下のようにUSB settingsを以下のようにUSER CODE w/ 148B USB ramにしてあげます.
USER CODE w/を選択するとコンパイル時に,USER_USB_RAMマクロが定義されます.USBをHIDで使用する際はxRAMの領域を確保しておく必要があるようだ.そして,そのメモリサイズを指定するため148Bを設定することで,プログラムが(148)10=x94から書き込まれるようです.

そしたら準備完了です.
前回の記事でDefault CDCで書き込みを行った場合はそのまま書き込みボタンをせばいいですが,それ以外を選んでいる場合は,D+をプルアップした状態で電源を入れ書き込みモードにしないと書き込めないので注意が必要です.今回はUSER CODE w/ 148B USB ramを選んだため,次回以降の書き込みはD+プルアップが必要ですね.
書き込みが終わったらメモ帳などを開くと,以下のように勝手にAが入力されると思います.

終わりに

今回はライブラリ様々ですが,CH552EでUSB HID機能を試してみました.CH55xDuinoはexampleが豊富で,マウスのexampleなどもあったので,今度試してみたいです.
HIDデバイス作成で困っている方の助けになれば幸いです.
なにか間違っている点などありましたらコメントいただけるとありがたいです.
まだ,前回の記事をご覧になっていない方がいましたら,ぜひ以下の記事も御覧ください.

コメント

タイトルとURLをコピーしました