Linux環境でCH552T書き込みしたよ(うたたねこさんの電子ガジェット用USB5V給電ボードにて)

スポンサーリンク

はじめに

うたたねこさんの電子ガジェット用USB5V給電ボードを購入して遊んでみました。
CH552Tマイコンも搭載されていてLチカできちゃいます!!
Windowsからは書き込みがすんなりできたんですが、LinuxArduino IDEからだと上手くいかず…
ちょっと詰まったのでメモを残しておきます

booth.pm

qiita.com

環境

Linux mint 6.8.0-57-generic
Arduino 1.8.19

Arduino IDEの環境構築

こちらのブログを参考に設定しました。

qiita.com

書き込みできない

下記のようになって書き込みできませんでした(泣)

Found no CH55x USB
Time limit reached, exit process

ちなみにWindowsからはバッチし書き込みできています。

解決方法

権限の問題でした。下記で解決しました。(Grok先生に聞きました)

echo 'SUBSYSTEM=="usb", ATTRS{idVendor}=="4348", MODE="0666"' | sudo tee /etc/udev/rules.d/50-ch55x.rules
sudo udevadm control --reload-rules
sudo udevadm trigger

ch55xtool を使ってスケッチを焼いてみる

Arduino IDEコンパイルして、生成されたhexファイルをbinに変換してch5xtoolでCH552Tに書き込みしてみました。 github.com

スケッチをコンパイルした後生成されるhexファイルは下記階層にありました。これは環境によって違うので注意。

/home/xian/Documents/arduino_tmp

こんな感じで設定しておくと コンパイルすると保存先のパスがわかるぞ

コンパイルして生成されたファイルはこんな感じ

binファイルはないのでhexを変換する必要があるのでした。

from intelhex import IntelHex
   
# 入力HEXファイルと出力BINファイルを指定
hex_file = "CH552T_ledblink.ino.hex"
bin_file = "CH552T_ledblink.ino.bin"
   
# HEXファイルを読み込み、BINファイルに変換
ih = IntelHex()
ih.fromfile(hex_file, format='hex')
ih.tobinfile(bin_file)
  
print(f"Converted {hex_file} to {bin_file}")

このプログラムを実行してbinを生成したのち、CH552TをDFUモードにして

python3 -m ch55xtool -f CH552T_ledblink.ino.bin

を実行すると書き込みできた。

スケッチはこんな感じ

void setup() {
  // put your setup code here, to run once:
  pinMode(32,OUTPUT);
  pinMode(14,OUTPUT);

}

void loop() {
  // put your main code here, to run repeatedly:
  digitalWrite(32,HIGH);
  digitalWrite(14,LOW);
  delay(500);
  digitalWrite(32,LOW);
  digitalWrite(14,HIGH);
  delay(500);
  digitalWrite(32,HIGH);
  digitalWrite(14,HIGH);
  delay(500);
}

参考文献

https://qiita.com/akita11/items/d7baed4ca3c06e292637

https://hakura03.hatenablog.com/entry/2019/04/18/232447