弊社の一部の製品にはPCのUSBポートに接続して使用するものがあり、大半はPCからシリアルポートとしてアクセスする仕様になっています。
USBデバイスとしてFTDI社のチップを採用しており、専用のデバイスドライバをインストールする事でPCに新しいシリアルポートが増設されます。
いくつか問題が発生するケースが見受けられるため、本ページにそれらの情報を集約しておきます。
FTDI社のホームページにデバイスドライバが公開されています。
Windows版は現時点でVersion2.12.36.4が最新です。インストーラタイプのWindows用デバイスドライバはこちら、ZIPにて圧縮されたWindows用デバイスドライバはこちらから入手できます。
PCにUSBデバイスを接続する前にこのZIPファイルをダウンロードし任意の場所に展開しておきます。展開したEXEファイルを管理者権限で実行するとデバイスドライバに関連するファイルがWindowsへ登録されるので、以後はUSBデバイスをPCに接続するだけで自動的にデバイスドライバが適用されるはずです。
なお、何度か発生している現象として、ドライバをインストールするEXEファイルを初めて実行すると、実際にはコピーされずに終了してしまうケースがある様です。その場合はもう一度EXEファイルを実行してみてください。
スキルがあればこちらの方法を選んでも構いません。
予めこのZIPファイルをダウンロードし任意の場所に解凍しておきます。USBデバイスをPC接続しドライバファイルを要求されたら、先に解凍しておいた場所を指定して適用させます。
内蔵されるUSBシリアル変換チップによって若干異なりますが、接続されているUSBシリアル変換デバイスが1台であってもデバイスマネージャの「ユニバーサルシリアルバスコントローラ」と「ポート(COMとLPT)」にそれぞれ対になったデバイスが登録されます。
TINY JTAG-ICE2を接続した場合を例にとりますと、デバイスマネージャ(種類別)では以下のデバイスが登録されます。
接続別でみると以下の様になります。
COM10の数字部分はデバイスドライバをインストールした際に、既に予約されているCOMポート番号を除く最も若い番号が割り当てられますが、デバイスのプロパティで手動で変更する事もできます。このCOM番号を頼りにシリアル通信を行いますので、メモしておくべきです。
Q:新旧バージョンのドライバが混在して訳が分からなくなってしまった 。
A:FTDI社のUtilitiesにCDM Uninstallerなるツールが公開されています。USBデバイスをPCから取り外した状態でこのツールを使ってPCにインストール済みであるドライバファイルを削除します。その後PCを再起動し、再度USBデバイスをPCに接続してインストールしてみてはどうでしょう。
Q:ドライバのインストールは問題無い様に見えるが、なぜかCOMポートが追加されない 。
A:原因はいくつかあるのですが、時折そういった状態に陥る場合があります。WindowsのCOMポートとして認識されない場合は、まずデバイスマネージャから「USB Serial Converter」を見つけます。
そのプロパティを開き、詳細設定タブにある「VCPをロードする」のチェックを入れてOKを押します。
その後再度USBデバイスを抜き差しすれば、ポート(COMとLPT)に「USB Serial Port(COMxx)」がインストールされるはずです。
Q:なんかもう良くわからない状態に 。
A:まず環境変数に「devmgr_show_nonpresent_devices」を追加し、値に1を設定します。その後デバイスマネージャで「非表示のデバイスの表示」にチェックを入れると、接続していないデバイスも要不要に関わらず表示される様になりますので、勇気があればそこから手動で削除するのも良いかと思います。
Q:PCにUSBコネクタがたくさんあるのですが何処に挿したら良いでしょう?
A:複数のUSBコネクタがあるPCは大抵USBハブが内蔵されています。お好きなところにどうぞと言いたい所ですが、時々認識し辛いUSBコネクタがある様ですので、その場合はちゃんと動く所を見つけるまで片っ端から挿すしかありません。
なお、大抵の場合接続するUSBコネクタを変更すると、再度デバイスドライバのインストールが要求されると思います。その場合は以前使用していたUSBコネクタで増設されたCOMポート番号とは違う番号が割り振られる様です。
Q:Windows UpdateにFTDIのデバイスドライバ更新が出ているのだが適用して良い?
A:Microsoftから提供されるデバイスドライバはWHQLにより安定性を保証している事となっていますが、FTDI社から提供されているものよりも古いために不都合が生じる場合も実際に発生しています。
何かしら不都合が無い限りそのまま適用しても良いでしょう。しなしながら、不都合があるか否かは適用してみないと分からないものです。
Q:自分でポートをアクセスするプログラムを組んでいるが、どうしても通信できない。
A:シリアルポートをアクセスするコーディング方法まではレクチャー出来ません。ごめんなさい。各製品用のサンプルプログラムを参考にして下さい。
それ以外には、ポートを開く際にハードフロー制御を要求する設定がなされていると通信できない製品もあります。ひとまずフロー制御は無しとし、必要に応じて活性化しましょう。