CH340E搭載小型USB-シリアル変換モジュールの調査
AliexpressにてCH340Eを使った小型USB-シリアル変換モジュールを見つけ入手しました。
1PCS CH340E USB to TTL Serial Converter, 5V/3.3V Model:BTE17-06 Alternative CH340G Module
1個 $0.53ですが、送料が$1.32かかります。1個だけの注文だと割高になるので5個購入。
5個でも送料は$1.32でした。
このモジュールはaitendoでも販売されているようです。
到着したモジュール
基板の実装状態は良好な製品です。
GND、5V、TXD、RXD、DTR、3.3Vの6端子があります。
DTRが使えるので、シリアル経由のプログラム書き込みにも利用出来ます。
ポリヒューズが乗っており過電流の対策も施されています。
3.3Vは内蔵レギュレーターで生成しています。
早速、Arduino Pro mini (5V 16MHz)で書き込みテストを行ってみました。
Lチカスケッチは問題なく書き込めました。
次に秋月で購入したATmega328P(内部RC 8MHz)への書込みを試してみます。
書込みでエラー発生。
念のため、コマンドラインにて接続チェックをしましたがやはりエラー発生です。
ケーブルやリセット回りの実装等を見直すも、原因不明です。
様子的にはDTRによるリセットはちゃんの行われているようですが、
それ以降のデータ通信が上手く行っていないようです。
念のため利用実績のあるCP2102搭載のUSB-シリアル変換モジュールで
書込み確認してみました。
問題無く書き込み出来ました。何回やってもエラーなしです。
当然、接続確認も問題なし。
CH340E搭載モジュール固有の問題のようです。
Arduino Pro mini (5V 16MHz)では問題なく書き込めていたので、
CH340EがRC発振8MHzの精度の悪さに敏感なためエラーになっているのかもしれません。
CH340E搭載モジュールとCP2102搭載を直結して57600bps設定で通信が出来ることを
確認したので、57600bps設定の通信も問題無く出来ています。
原因については、ロジックアナライザ等を使ってもう少し調べてみることにします。
2018/06/12 追記
ロジックアナライザにて正常書込みが出来るCP2102モジュールと上手くいかない
CH340Eの信号を調べてみました。
CP2012モジュール利用時
CH340Eモジュール利用時
どうも、CH340EモジュールのDTR信号に問題があるようです。
Atmega328Pは外部リセットピンのLOW→HIGHの立上りでMCU起動の遅延タイマが
スタートし始動しますが、これではブートローダが動く前にデータが送られて処理出来ません。
色々調べると、CH340搭載モジュールの一部にはこれと同様の問題があるようです。
参考にしたサイト
・Arduino Forum Topic: CH340 programmer not auto-resetting (Read 2806 times)
・くつしたねこのTinkering,Tinkering and Obliquity - Arduino互換機を作りたい(3)
・Memoteki - Arduinoに書き込めない問題を修正する方法[not in sync]
上記のサイトに解決策があり、早速参考にしてみました。
次の回路を付加してCH340EモジュールのDTR出力から短いワンショットパルスを生成します。
これにより、DTR信号からRESET信号を生成できました。
一番下が生成したRESET信号です。
CP2012モジュールのDTRとほぼ同じ信号が生成出来ました。
ただし、これでも書込みがうまくいきません。
もう少し調べてみることにします。
« NeoPixel(WS2812B)の制御 その3 | トップページ | Lenovo Miix 2 8 を久々に使ってみる »
「通販」カテゴリの記事
- 怪しい、激安?ノートパソコンをポチってみた(2024.10.05)
- β版 IchigoJam Rを予約注文しました(2021.01.23)
- 新型コロナウイルス対策のフェイス シールドを入手しました(2020.05.20)
- SPI接続フラッシュメモリモジュールを入手しました(2020.05.13)
- Aliexpressで注文した使い捨てマスク、やっと届いた(2020.05.08)
「arduino」カテゴリの記事
- Arduino IDE+Arduino STM32環境で指定と異なるgccが使われてしまう(2025.01.23)
- Zorin OSでArduino Uno互換機(CH340)が認識しない(2025.01.19)
- Arduino IDE 2.3.4でArduino STM32を利用する(2025.01.12)
- Arduino用 SKK日本語変換ライブラリの開発 その1(2024.12.28)
- NeoPixel(WS2812B)の制御 その5(2024.09.15)
コメント
« NeoPixel(WS2812B)の制御 その3 | トップページ | Lenovo Miix 2 8 を久々に使ってみる »
初めまして。
このボードの情報を探していてこちらにたどり着きました。
DTRの信号に問題がありそうということで、データシートを探したのですが、中国語のものしか見つかりません。とはいえ、図くらいは読めます。そのデータシートに寄ると、CH340EチップにはDTRという信号はなさそうです。基板にはしっかり「DTR」と書かれているのですけど…。
こちらのURLが見つけた中国語のデータシートです。応用回路に「E」タイプのものがなく、情報が少なくて残念です。
https://datasheet.lcsc.com/szlcsc/Jiangsu-Qin-Heng-CH340E_C99652.pdf
投稿: jh4vaj | 2018年8月 1日 (水) 00時45分
jh4vaj さん
はじめまして、情報ありがとうございます。
このボードのDTRは、CH340EのRTS(Request To Send:出力、LOWでアクティブ)に接続しているようです。
場合のよっては、この信号でDTRの代用(信号の立下りをトリガとして利用する場合)として使えるみたいですが、LOWが出っぱなしなので利用には注意が必要ですね。
投稿: たま吉さん(管理者) | 2018年8月 1日 (水) 08時33分
なるほど。RTSが出ているのですか。そうすると、基板の印字のミスと思って良さそうですね。
入手、検討してみます。ありがとうございました。
投稿: jh4vaj | 2018年8月 1日 (水) 20時54分
参考になりました。ありがとうございます。
投稿: スマホ寿司 | 2021年5月18日 (火) 16時23分
スマホ寿司さん、ご報告ありがとうございます。
投稿: たま吉さん(管理者) | 2021年5月20日 (木) 20時08分
Ch340モジュール+内臓RC8Mhz発振で書き込みできない 検索でここへ来ました。
当方でも、同様で、ダイオードを追加しても、ダメでした。
その後、情報はありますでしょうか。よろしくお願いいたします。
投稿: yama | 2022年12月 9日 (金) 12時03分
yamaさん
秋月電子に、同CH340Eを使ったモジュールが販売されています。
https://akizukidenshi.com/catalog/g/gK-14745/
掲載されているAE-CH340-TYPEC取扱説明書に「Arduino 互換スケッチ書き込み配線図・回路図」が
あり、RTS(DTR)周りの処置の参考になるかもしれません。
https://akizukidenshi.com/download/ds/akizuki/AE-CH340E-TYPEC.pdf
投稿: たま吉さん(管理者) | 2022年12月10日 (土) 08時39分
ありがとうございます。(秋月の回路図にもあった)RTSとReset間には、CとRは、配線済みで、ダイオードなど追加してみましたが、ダメでした。同じファームでも、チップによって、書き込みがOKだったり、NGだったり。ATMega328P内臓8Mhz(クロックの不安定が原因?10%の誤差があるとの情報があり)と、Ch340(速度にシビア?)を使った書き込みには、現状不安定さが残っています。対策は、未解決(外部発振をつけてしまえば、多分解決)ですかね・・。
投稿: yama | 2022年12月13日 (火) 13時40分
追記 ちなみに、同じ内臓8Mhzファーム・ATMega328Pチップで、ArduinoIDEからCh340ではNGなものが、CP2102のUSBシリアルモジュールでは問題なく安定して書込めます。完全に、Ch340との問題。Ch340は、Windows10以降ではドライバインストールが不要、便利なので、どうしても使いたいですね・・・
投稿: yama | 2022年12月13日 (火) 14時17分