2024/04/30(火)CH376でUSBメモリの読み書きをする。

江蘇沁恒股分有限公司 wch.cn のシリアル通信対応のUSBマスストレージ管理ICを使うためにいろいろと実験した記録。
チップ単体では秋月電子でも取り扱いがあって入手性も問題ない。
USBメモリ&SDカード ファイル管理制御IC CH376S
実験用にモジュールキットはAliexpressで入手した。

概要

  • ボーレートは9600で動かせる。9600bps, 8N1
  • SD制御を行わない場合、5V電源の5VIO単一の回路構成にできる。
  • そのためモジュールキットのLDOを除去してバイパス、V3pinはデータシート通りで10nF接続した。
  • USBシリアル側も5VIOで実験できる。秋月のType-C USBシリアルがソレ。
  • D4,5,6ピンをVccに接続することで、電源投入時に9600buadとなるはず。
CH376_TEST_pic.jpg

UART制御時の仕様

UART通信仕様として、
通信キャリブレーションとして常に先頭に 0x57, 0xAB を付加してからコマンドを送信する。
送受信の表記はすべて16進数。
例1
 送信:57 AB 06 01
 57 AB=コマンド接頭語(固定)
 06=CHECK_EXIST
 01=テストバイト引数
 受信:FE(テストバイトの反転バイト)

 送信57 AB 06 55 → 受信AA
 送信57 AB 06 AA → 受信55

例2
 送信:57 AB 01
 57 AB=コマンド接頭語(固定)
 01=GET_IC_VER
 受信=41など、バージョン番号が返る

初期化手順

  • CHECK_EXIST 06 通信確認
    • 送信 57 AB 06 55
    • 受信 AA
  • RESET_ALL 05 リセット
    • 送信 57 AB 05
    • 受信 (なし)
  • CHECK_EXIST 06 通信確認
    • 送信 57 AB 06 AA
    • 受信 55
  • GET_IC_VER 01 チップバージョン
    • 送信 57 AB 01
    • 受信 41(など)
  • SET_USB_MODE 15 USBモードを設定(USBメモリ接続の場合は06)
    • 送信 57 AB 15 06
    • 受信 51(CMD_RET_SUCCESS)
この時USBデバイスが挿さっていると追加で15(USB_INT_CONNECT)を受信
以降、現在の状態でUSBデバイスが挿されると15,抜かれると16(USB_INT_DISCONNECT)が返る
  • DISK_CONNECT 30 DISK接続
    • 送信 57 AB 30
    • 受信 14(USB_INT_SUCCESS)が返れば、ディスク接続完了。
  • DISK_MOUNT 31 DISKマウント
    • 送信 57 AB 31
    • 受信 14(USB_INT_SUCCESS)が返れば、ディスクをマウント完了。
これでディスクアクセスの準備完了

接続されたディスクの容量を確認

  • DISK_CAPACITY 3E DISK容量取得
    • 送信 57 AB 3E
    • 受信 14(USB_INT_SUCCESS)が返れば、でディスク容量を取得完了。内部バッファにデータが格納される。
  • RD_USB_DATA0 27 バッファ読み出し
    • 送信 57 AB 27
    • 受信 04 FF FF EF 00(など) バッファ内容が返る。
      • 04(バッファデータバイト長)、00EFFFFF(ディスクセクタ数)
      • →1セクタ512byte(標準)なので0x00EFFFFF * 512 = 8,053,063,168 bytesとなり8GBのUSBメモリであることがわかる。

読み込みテスト

ルートディレクトに「1234.TXT」があり、内容は「1234567890ABCDEF」であるとする。
  • SET_FILE_NAME 2F 操作ファイル名を設定
    • 送信 57 AB 2F 2F 31 32 33 34 2E 54 58 54 00
      • 2F 31 32 33 34 2E 54 58 54 00 がファイル名(ファイルパス)"/1234.TXT\0"
    • 受信 (なし)
  • FILE_OPEN 32 ファイルオープン
    • 送信 57 AB 32
    • 受信 14(USB_INT_SUCCESS)が返れば成功
  • BYTE_READ 3A ファイルから内部バッファへ読み込み
    • 送信 57 AB 3A 08 00
      • 08 00 (読み出しバイト数、0008(8byte))
    • 受信 1D(USB_INT_DISK_READ)が返れば成功
  • RD_USB_DATA0 27 バッファ内容を取得
    • 送信 57 AB 27
    • 受信 08 31 32 33 34 35 36 37 38(など)が返る。
      • 08(バッファデータ長)、31 32 33 34 35 36 37 38(バッファ内容="12345678")
BYTE_READ, RD_USB_DATA0を繰り返しファイル末端へ到達した場合
  • RD_USB_DATA0 27 バッファ内容を取得
    • 送信 57 AB 27
    • 受信 00
      • 00(バッファデータ長)が返れば、それはファイル末尾まで読み出し完了し、読み込めたバイト数が0(なし)であることを示す。
  • FILE_CLOSE 36 ファイルクローズ
    • 送信 57 AB 36 00
      • 00(ファイルサイズの自動更新をしない)
    • 受信 14(USB_INT_SUCCESS)が返れば成功

書込みテスト

  • SET_FILE_NAME 2F 操作ファイル名を設定
    • 送信 57 AB 2F 2F 57 52 49 54 45 2E 54 58 54 00
      • 2F 57 52 49 54 45 2E 54 58 54 00 がファイル名(ファイルパス)"/WRITE.TXT\0"
  • FILE_CREATE 34 ファイル作成/オープン
    • 送信 57 AB 34
    • 受信 14(USB_INT_SUCCESS)が返れば成功。
      • すでに存在するファイル名の場合、その内容は削除される
  • BYTE_WRITE 3C 書き込みバッファ領域確保
    • 送信 57 AB 3C 05 00
      • 05 00(データバイト長0005(5byte))
    • 受信 1E(USB_INT_DISK_WRITE)が返れば成功
  • WR_REQ_DATA 2D 書き込みデータ送信
    • 送信 57 AB 2D 31 32 33 34 00
      • 31 32 33 34 00 が"1234\0"
    • 受信 05(など)が返る。
      • 05(書き込みできたバイト数05(5byte))
  • BYTE_WR_GO 3D 書き込みを完了させる(?)(Flush?)
    • 送信 57 AB 3D
      • 次の書き込み要求待ちにする(?) これについては詳細不明だが、このコマンドがないと実際にデータが書き込みされない。
  • FILE_CLOSE 36 ファイルクローズ
    • 送信 57 AB 36 01
      • 01(ファイルサイズの自動更新をする)
    • 受信 14(USB_INT_SUCCESS)が返れば成功

2013/10/23(水)ビットマップをEPS(ベクターデータに)

MBEからCNCの基板切削での変換で悩んでいたが、漸くラスターデータ(Botmap)からベクターデータ(EPS)へのメドがたった。
ピクトブログというところで紹介されている
画像を簡単にベクターデータに変換できる「Potrace」
Potraceというソフト。
コマンドプロンプトのソフトだが、基本的にはEXEにBMPファイルを突っ込めばOK
私はMBEからBMP出力で508dpi出力しているので、コマンドにdpi設定の「-r 508」を追加している。

やっと自分にとって使いやすいのを見つけた。
Adobeのイラストレータ買えば済むんですけどね…。

2013/03/16(土)Stereo誌1月号、シリコンハウスのケース

1月に購入してほったらかしになっていた話、ものすごく今更感が否めない日記になりました。
USB-DAC基板付録につられて初めてオーディオ雑誌を購入。完成品基板がついている時点でもはや雑誌買ってるのか基板買っているのか分からない状態。
Stereo 2013年1月号
雑誌はケーブル一本数万円とかのを聞き比べてどっちが良いとか…そもそもそんな高級なもの自分には買えないので読んでもよく分かりません(笑)

本題、この付録基板にぴったりのケースがシリコンハウスから発売されてます。
ステレオ誌USB-DAC用アルミケースパーツセット
ケースの出来は良いのですが…
CASELXU-OT2_01.jpg
 
CASELXU-OT2_02.jpg

付録基板の方を見てちょっと不安になりました。
CASELXU-OT2_03.jpg
 
CASELXU-OT2_04.jpg
 
CASELXU-OT2_05.jpg

ボリュームが見事に曲がっていますね…。裏からみてもがっつり
CASELXU-OT2_06.jpg

不安的中、ケースにはまりませんでした。これ付録基板の作りが悪かったらこうなるし、ほかの人も出てるんじゃないかな~と思います。そんなわけでちょちょっと直して、
CASELXU-OT2_07.jpg
 
CASELXU-OT2_08.jpg


きれいにケースに収まりました。

2012/09/02(日)コミックトレジャー20

今日はコミトレ20に行ってきました。
午前中は兵庫県の伊丹市に行ってそのまま大阪にかえるのもアレなんで、南港で開催されているので勢いで行ってきました。

2012-09-02_intex_01.jpg
  
2012-09-02_intex_02.jpg


アニメとかゲームとかのイベントなのですが、自分は殆ど興味が無く知り合いに会いに行ったくらいです。写真右の電柱の本は知り合いの本で、今度ゲームラボに掲載されるそうです。

で、今回の最大の収穫はそういうのではなく、3Dプリンターの簡易で安価なものを見つけたことです。写真にあるBlade-1というやつです。200umと結構な精度もでるようでCNC持ってる自分にとってはこれもあれば最強か?と思うわけです。価格も14万円程度と非常に安いです。
本家サイト:Hotproceed

いやぁ収穫があって良かったw