いんくさんにエッジを削ってもらったので全て組み立てた。そのうち 5 個が書き込み途中にエラーが出る。回路上の問題はなさそうだ、では、なぜ。
USB のつなぎ方
なんでこうなるかしらないが、ハブを経由させずポートに直接つなぐとおそい。テストプログラムを組んでハブ経由で計測したら 20 秒かかった。ハブを経由させると 3 秒かかる。
ここでちょっとに気になったので、5年以上前のノートPCを出してきて計測したら、6 秒かかった。さらに書き込み途中でエラーがでた 4 個も正常に動いた(うち1個は配線ミスっぽいので無関係とする)。
ハードの個体差
通信エラーがでるのに3段階あったことに気づく。
- テスト速度 3 秒, write packet 加工なし
- 試作品では問題なく動いた。
- テスト速度 3 秒, write packet 加工あり
- PCB のうち 18/23 は問題なく動いた。
- テスト速度 6 秒, write packet 加工あり
- PCB のうち 22/23 は問題なく動いた。
どこの部品で差が出る、というのはわからないが、テスト速度 3 秒はぎりぎりの性能だったようだ。
write packet の加工
NRZI の符号変換関連で、V-USB が受信時に bit stuffing をちゃんとやれてないのが原因。コメントにいただいた記事は bit struffing を減らしてパフォーマンスをあげようという意図であって、ちょっと違うことに注意。
そんなかんじで
キット販売で楽しみにしている方にはもしかしたら、原因不明の通信エラートラブルを食らうかもしれない(ごめんなさい)。
テスト速度 3 秒で動くのとテスト速度 6 秒で動くのはきちんと記載して、値段にも差を付けるので、ご理解していただきたい。