H8/3069F-USBホストボードを実用したい

装置への組み込みについて
実際に装置内に組み込む際にUSBケーブルを如何に処理すべきか
USBホストボードのUSBコネクタを直接装置の外部コネクタとするのはいやである
中継ケーブルを介してUSB外部コネクタを設けることにする

USBホストボードのUSBコネクタ>>USBケーブル>>USB中継アダプタ(=外部コネクタ)

こうすれば、コネクタがへたってもUSB中継アダプタ交換で対処できる

さて気がかりなのが、USBホストボードのUSBコネクタとここに挿入するUSBケーブルのことである
USBケーブルのコネクタ部分は相当かさばる。そしてケーブルも柔軟性に乏しく狭い筐体ではかなりコネクタ勘合部にストレスがかるようだ
振動などでやがて外れることがないのだろうか?
と言うかコネクタ部分のかさばりは想定していなかったので筐体におさまらない!

よって、かつて基板作成時(fusionPCB)にあまった余白にUSBコネクタのピンピッチを2.54milのピッチに変換する基板を作った
(1)これにUSBコネクタを実装しケーブルを直接接続する

f:id:su_ta_lir:20171207163543j:plain
(1)

(2)USBホストボードのUSBコネクタを除去しこの基板をくっつけて一般的なコネクタに変換、ケーブル側は、勘合するコネクタを取り付ける

f:id:su_ta_lir:20171207165644j:plain
(2) XHコネクタをつけた



現状(1)で対処している。
(2)はUSBコネクタの除去が案外大変だし、改造しすぎ(手間かかりすぎ!)
でも、USBホストボードのUSBコネクタのフレームのリードはNTH穴なのでハンダできないし、周りのGNDにハンダするのはもってのほか
大変でも(2)に切り替えたい

H8/3069F-USBホストボードを実用したい

10種類ほどの読み込み可能実績をへて最近、SonyUSBメモリが読めないことが判明した

USBバスリセットの後、GetDiscriptorでエラーになり、リトライも失敗

 

試行錯誤の結果、USBバスリセットがうまくいっていない様子だった

<フロー>

① USBメモリの読み取りの冒頭でSL811HSTの各レジスタをゼロクリア(CTRL2:0Fhは80h)し、バスリセット

② レジスタ設定。

③ エニュメレーション中にエラー(NAK)だったら

④ USBバスリセット

⑤ レジスタ設定。

⑥ ③からやり直し。

 

といった処理だが、④のUSBバスリセットは、各レジスタをゼロクリアせずにCTRL1:05hの[BIT4を0],[BIT3を1],[BIT0を0]を書き込むところから行う処理

これがNGらしい

SL811HSTの説明書を見るが、各設定フラグの優先順位とか条件のマトリックスが解読できない

CTRL1レジスタの説明によるとUSB Engine Resetといった記述がある。

これは、チップ内部の状態にも影響があることを意味するのか?

それとも、別のレジスタのフラグ設定(チップの状態)が優先し、逆に影響していないのか?

これまで実績があるだけに、後者なのかもしれない

 

結局、USBバスリセットは、冒頭のリセット処理を行うとすんなり読めた

 

① SL811HSTの各レジスタをゼロクリア(CTRL2:0Fhは80h)し、バスリセット

② レジスタ設定。

③ エニュメレーション中にエラー(NAK)だったら

④ ①からやり直し。

 

結果オーライ

H8/3069F-USBホストボードを実用したい

ソフトウエアの説明

用途:工場の機械で使います。

 

機能概要

シングルタスク

メディアデバイスからのデータ読み取り機能

構内LANのPCからのデータ取り込みと簡単なステータス通知機能

UIはキャラクタディスプレイそして、入出力

 

詳細

(1)メディアはUSBメモリ専用&読み取り専用

ポートは1個です。ハブなどもってのほか

FAT32(FAT)でルートディレクトリのファイルのみ読み込む

 

(2)LANはUDP転送

データフォーマットは、オリジナル形式(PCのアプリケーションもオリジナル)

構内のLANなので汎用性は排除できる

 

 

=================================

<ソフトウエア>

H8/OS 3.51から必要部分を抜きだし改造

USB制御部分は、CQ出版の”組み込み機器へのUSBホスト実装技法”、”インターフェース2014年12月号”を参照し追加

LAN部分は、TCP/IPを削除(たぶんTCP/IPは重すぎて実用に耐えないと判断)

 

コンパイラバージョンは以下の通り

 

Reading specs from xx\cygwin\home\owner\usr\local\bin\..\lib\gcc-lib\h8300-hms\3.3.1\specs

Configured with: ../gcc-3.3.1/configure --target=h8300-hms --host=i586-mingw32 --build=i686-pc-linux-gnu --enable-languages=c,c++ --with-newlib

Thread model: single

gcc version 3.3.1

 

 

=================================

<ハードウエア>

(1)H8/3069FーUSBホストボード(改造) + 増設LAN基板をおこす

 

(2)H8/3069Fーネット対応LANボード(25MHz化) + 増設USB基板をおこす

 

のどちらかだが SL811HSTとRTL8019の手ハンダ付けを考えたら(1)の組み合わせとした(失敗?)

H8/3069FーUSBホストボードは、改造が多すぎるので、今後(2)の試験に着手したい

*ベース基板(マイコンボードの搭載、増設基板のバス、入出力その他)は当然準備

*(1)、(2)は、LANとUSBのマッピングアドレスが入れ替わるだけなのでソフトウエア的には同じ

*オリジナルの基板はすべてfusionPCB

 

 

=================================

USBメモリ以前は H8/3069Fーネット対応LANボード(20MHz) + 増設FDC(フロッピィディスク)基板で実用化していた

LANも、テスト版として準備していた。そんでもってUSBメモリ版は、数年前に導入できたつもりだが、USBメモリの相性を少しでも解消したい

H8/3069F-USBホストボードを実用したい

SL811-HSTのエラッタにしたがいQ2(12MHz)周辺を変更する

R3、C11、C12、Q2を除去する

アキズキの4X4穴基板に 1Mオーム、100オーム、22pF、22pF、12MHzを実装しマイコンボードのQ2跡地?に空中実装する、また22pFのGNDは、C9のGND側にそっと接続する

尚、12MHzは、新品を使いました

 

仕上げに使わないQ3、Q4、Q5を除去する(面倒なのでR7、R8、R9はそのまま残す)

 

 

H8/3069F-USBホストボードを実用したい

SL811-HSTのエラッタにしたがいC13を変更する

J1(DCアダプタコネクタ)の横のチップC(C13)を除去

そこにセラミックC 4700pF(472)50Vをつける

 

さらに、IC4(NJU7223)の出力とGND間に電解C 10uF・16VをIC4の足に直付け

(3端子REGの出力には電解Cを接続しないと発振する場合(品種)があるので)

あわせて、C9(10uF)を除去したいところですがこれは、そのままにした

 

 

H8/3069F-USBホストボードを実用したい

USBコネクタのフレームの下に信号パターンがあるので対策。

(IC5(SL811)のIRQ信号…CN1ー20(P80/IRQ0)のこと)

幸運にも未使用なのでパターンを切る(USBコネクタとのオーバーラップ部分 2ヶ所)

コネクタをこじったりするといつの日か接触すると思うのは大げさでしょうか