H8/3069F-USBホストボードを実用したい
装置への組み込みについて
実際に装置内に組み込む際にUSBケーブルを如何に処理すべきか
USBホストボードのUSBコネクタを直接装置の外部コネクタとするのはいやである
中継ケーブルを介してUSB外部コネクタを設けることにする
USBホストボードのUSBコネクタ>>USBケーブル>>USB中継アダプタ(=外部コネクタ)
こうすれば、コネクタがへたってもUSB中継アダプタ交換で対処できる
さて気がかりなのが、USBホストボードのUSBコネクタとここに挿入するUSBケーブルのことである
USBケーブルのコネクタ部分は相当かさばる。そしてケーブルも柔軟性に乏しく狭い筐体ではかなりコネクタ勘合部にストレスがかるようだ
振動などでやがて外れることがないのだろうか?
と言うかコネクタ部分のかさばりは想定していなかったので筐体におさまらない!
よって、かつて基板作成時(fusionPCB)にあまった余白にUSBコネクタのピンピッチを2.54milのピッチに変換する基板を作った
(1)これにUSBコネクタを実装しケーブルを直接接続する
(2)USBホストボードのUSBコネクタを除去しこの基板をくっつけて一般的なコネクタに変換、ケーブル側は、勘合するコネクタを取り付ける
現状(1)で対処している。
(2)はUSBコネクタの除去が案外大変だし、改造しすぎ(手間かかりすぎ!)
でも、USBホストボードのUSBコネクタのフレームのリードはNTH穴なのでハンダできないし、周りのGNDにハンダするのはもってのほか
大変でも(2)に切り替えたい
H8/3069F-USBホストボードを実用したい
10種類ほどの読み込み可能実績をへて最近、SonyのUSBメモリが読めないことが判明した
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のエラッタにしたがいC13を変更する
J1(DCアダプタコネクタ)の横のチップC(C13)を除去
そこにセラミックC 4700pF(472)50Vをつける
さらに、IC4(NJU7223)の出力とGND間に電解C 10uF・16VをIC4の足に直付け
(3端子REGの出力には電解Cを接続しないと発振する場合(品種)があるので)
あわせて、C9(10uF)を除去したいところですがこれは、そのままにした