フォト
2025年3月
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
無料ブログはココログ

« NeoPixel(WS2812B)の制御 その3 | トップページ | Lenovo Miix 2 8 を久々に使ってみる »

2018年6月11日 (月)

CH340E搭載小型USB-シリアル変換モジュールの調査

AliexpressにてCH340Eを使った小型USB-シリアル変換モジュールを見つけ入手しました。

1PCS CH340E USB to TTL Serial Converter, 5V/3.3V Model:BTE17-06 Alternative CH340G Module
00

1個 $0.53ですが、送料が$1.32かかります。1個だけの注文だと割高になるので5個購入。
5個でも送料は$1.32でした。

このモジュールはaitendoでも販売されているようです。

到着したモジュール
Dscn8178

基板の実装状態は良好な製品です。

GND、5V、TXD、RXD、DTR、3.3Vの6端子があります。
DTRが使えるので、シリアル経由のプログラム書き込みにも利用出来ます。
ポリヒューズが乗っており過電流の対策も施されています。
3.3Vは内蔵レギュレーターで生成しています。

Dscn8188

早速、Arduino Pro mini (5V 16MHz)で書き込みテストを行ってみました。

Dscn8202

Lチカスケッチは問題なく書き込めました。

次に秋月で購入したATmega328P(内部RC 8MHz)への書込みを試してみます。

Dscn8205

書込みでエラー発生。

02

念のため、コマンドラインにて接続チェックをしましたがやはりエラー発生です。

01

ケーブルやリセット回りの実装等を見直すも、原因不明です。
様子的にはDTRによるリセットはちゃんの行われているようですが、
それ以降のデータ通信が上手く行っていないようです。

念のため利用実績のあるCP2102搭載のUSB-シリアル変換モジュールで
書込み確認してみました。

Dscn8209

問題無く書き込み出来ました。何回やってもエラーなしです。

04_2

当然、接続確認も問題なし。

03


CH340E搭載モジュール固有の問題のようです。
Arduino Pro mini (5V 16MHz)では問題なく書き込めていたので、
CH340EがRC発振8MHzの精度の悪さに敏感なためエラーになっているのかもしれません。

CH340E搭載モジュールとCP2102搭載を直結して57600bps設定で通信が出来ることを
確認したので、57600bps設定の通信も問題無く出来ています。

原因については、ロジックアナライザ等を使ってもう少し調べてみることにします。

2018/06/12 追記
ロジックアナライザにて正常書込みが出来るCP2102モジュールと上手くいかない
CH340Eの信号を調べてみました。

CP2012モジュール利用時
06

CH340Eモジュール利用時
05

どうも、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出力から短いワンショットパルスを生成します。   

07
Dscn8210

これにより、DTR信号からRESET信号を生成できました。
一番下が生成したRESET信号です。

08

CP2012モジュールのDTRとほぼ同じ信号が生成出来ました。
ただし、これでも書込みがうまくいきません。
もう少し調べてみることにします。

« NeoPixel(WS2812B)の制御 その3 | トップページ | Lenovo Miix 2 8 を久々に使ってみる »

通販」カテゴリの記事

arduino」カテゴリの記事

コメント

初めまして。
このボードの情報を探していてこちらにたどり着きました。
DTRの信号に問題がありそうということで、データシートを探したのですが、中国語のものしか見つかりません。とはいえ、図くらいは読めます。そのデータシートに寄ると、CH340EチップにはDTRという信号はなさそうです。基板にはしっかり「DTR」と書かれているのですけど…。
こちらのURLが見つけた中国語のデータシートです。応用回路に「E」タイプのものがなく、情報が少なくて残念です。
https://datasheet.lcsc.com/szlcsc/Jiangsu-Qin-Heng-CH340E_C99652.pdf

jh4vaj さん

はじめまして、情報ありがとうございます。
このボードのDTRは、CH340EのRTS(Request To Send:出力、LOWでアクティブ)に接続しているようです。
場合のよっては、この信号でDTRの代用(信号の立下りをトリガとして利用する場合)として使えるみたいですが、LOWが出っぱなしなので利用には注意が必要ですね。

なるほど。RTSが出ているのですか。そうすると、基板の印字のミスと思って良さそうですね。
入手、検討してみます。ありがとうございました。

参考になりました。ありがとうございます。

スマホ寿司さん、ご報告ありがとうございます。

Ch340モジュール+内臓RC8Mhz発振で書き込みできない 検索でここへ来ました。
当方でも、同様で、ダイオードを追加しても、ダメでした。
その後、情報はありますでしょうか。よろしくお願いいたします。

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

ありがとうございます。(秋月の回路図にもあった)RTSとReset間には、CとRは、配線済みで、ダイオードなど追加してみましたが、ダメでした。同じファームでも、チップによって、書き込みがOKだったり、NGだったり。ATMega328P内臓8Mhz(クロックの不安定が原因?10%の誤差があるとの情報があり)と、Ch340(速度にシビア?)を使った書き込みには、現状不安定さが残っています。対策は、未解決(外部発振をつけてしまえば、多分解決)ですかね・・。

追記 ちなみに、同じ内臓8Mhzファーム・ATMega328Pチップで、ArduinoIDEからCh340ではNGなものが、CP2102のUSBシリアルモジュールでは問題なく安定して書込めます。完全に、Ch340との問題。Ch340は、Windows10以降ではドライバインストールが不要、便利なので、どうしても使いたいですね・・・

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: CH340E搭載小型USB-シリアル変換モジュールの調査:

« NeoPixel(WS2812B)の制御 その3 | トップページ | Lenovo Miix 2 8 を久々に使ってみる »