USB-008に8255を接続 |
||||
|
||||
弊社のFDTI社の次世代高機能USBチップFT2232の評価ボードUSB-008におなじみ8255を接続してみました。 ここでは、NECのuPD71055 を使いました。 |
||||
2004/5/21:実験用基板を作成いたしました クリックして拡大 |
||||
まず、回路図はこうなっております。 詳細タイミングはチェックしておりません。 MCU Host Bus Emulation MODEでは、下位アドレスとデータがマルチプレックスされていますので、下位アドレスは使わず上位アドレスのみを用いています。 |
||||
|
||||
このように、ユニバーサル基板にuPD71055と、LED8個、押しボタンを4個を取り付けました。 | ||||
たとえばLEDの点灯は以下のように行います。 ここに出てくるコマンドについては、FTDI社のアプリケーションノートAN2232C-01_MPSSE_Cmnd.pdfにあります。 下記ソースはDelphiで恐縮ですが、問題なくおわかりいただけると思います。 (Delphiはハード屋がちょとチェックするのに最適のような気がします) |
||||
出力テスト | ||||
procedure TForm1.Button1Click(Sender: TObject); begin Open_USB_Device; Set_USB_Device_BitMode($00, $08 ); // MCU Host Bus Emulation MODEの開始 // 8255のモードセット FT_Out_Buffer[0] := $93; //拡張アドレスによるデータ出力コマンド FT_Out_Buffer[1] := $03; //上位アドレス(コントロール) FT_Out_Buffer[2] := $FF; //下位アドレスはダミー FT_Out_Buffer[3] := $8B; //MODE 0、PORT-Aのみ出力、他は入力 Write_USB_Device_Buffer( 4 ); // 出力 // 8255のPAに0x55を出力(LEDの点灯) FT_Out_Buffer[0] := $93; //拡張アドレスによるデータ出力コマンド FT_Out_Buffer[1] := $00; //上位アドレス(PORT-A) FT_Out_Buffer[2] := $FF; //下位アドレスはダミー FT_Out_Buffer[3] := $55; //出力データ Write_USB_Device_Buffer( 4 ); // 出力 Set_USB_Device_BitMode($00, $00 ); // MCU Host Bus Emulation MODE終了 Close_USB_Device; end; |
||||
入力テスト(8255のモードセットは省略) | ||||
procedure TForm1.Button2Click(Sender: TObject); var rdt,res: integer; begin Open_USB_Device; Purge_USB_Device_Out; Purge_USB_Device_In; Set_USB_Device_BitMode($00, $08 ); // MCU Host Bus Emulation MODEの開始 FT_Out_Buffer[0] := $91; // リード拡張アドレス FT_Out_Buffer[1] := $02; // PORT-C FT_Out_Buffer[2] := $FF; // 下位はダミー Write_USB_Device_Buffer( 3 ); // 受信を待つ repeat res := Get_USB_Device_QueueStatus; until FT_Q_Bytes > 0; // 1バイト受信 Read_USB_Device_Buffer(1); //結果表示 Label1.Caption := inttostr( FT_In_Buffer[0] ); Set_USB_Device_BitMode($00, $00 ); // MCU Host Bus Emulation MODEの終了 Close_USB_Device; end; |
||||
押しボタンを1つ押したとき。 | ||||
リードタイミング波形です。 D0、CS、RDを観測しました。 |
||||
クリックして拡大 | ||||
このように、簡単な手順でUSB-008から8255(uPD71055)を操作できることがわかりました。 | ||||
|