FT260学习笔记5-DIO配置与操作

FT260的DIO都有复用功能,可以通过配置设置不同的功能。

 

  1. DIO0,默认TX_ACTIVE

FT260学习笔记5-DIO配置与操作_第1张图片

    byte[] buf = new byte[64];

    buf[0] = 0xa1;

    buf[1] = 0x08;

    buf[2] = func;

hid.setFeature(buf, 64);

除了使用USB命令修改,也可以使用eFuse或者外部EEPROM修改该IO的默认功能。

  1. DIO1,默认GPIOB
    该IO由Set UART Mode控制复用选项。当Uart Mode为非RTS_CTS mode时,该IO为GPIOB,否则为RTSN。
  2. DIO2,默认GPIOE

同DIO1,当Uart Mode为非RTS_CTS mode时,该IO为GPIOE,否则为CTSN。

  1. DIO3

当{DCNF1, DCNF0}设置了UART接默认RXD,当没有设置UART是默认GPIOC。

  1. DIO4

当{DCNF1, DCNF0}设置了UART接默认TXD,当没有设置UART是默认GPIOD。

  1. DIO5

默认是SCL(Open Drain输出),可配置为GPIO0

  1. DIO6

默认是SDA(Open Drain输出),可配置为GPIO1

  1. DIO7

默认SUSPOUT_N,低电平表示设备进入Suspend(可通过编程外部EEPROM改成高电平)。

PWREN_N:当FT260枚举成功后,该引脚输出低电平。

GPIO2

FT260学习笔记5-DIO配置与操作_第2张图片

    byte[] buf = new byte[64];

    buf[0] = 0xa1;

    buf[1] = 0x08;

    buf[2] = func;

hid.setFeature(buf, 64);

除了使用USB命令修改,也可以使用eFuse或者外部EEPROM修改该IO的默认功能。

  1. DIO8

INTRIN(默认):作为外部中断输入源

WAKEUP:作为USB远程唤醒输入源。

GPIO3

FT260学习笔记5-DIO配置与操作_第3张图片

    byte[] buf = new byte[64];

    buf[0] = 0xa1;

    buf[1] = 0x05;

    buf[2] = func;

         hid.setFeature(buf, 64);

  1. DIO9

该IO由Set UART Mode控制复用选项。当设置DTR_DSR mode,该IO为DTRN,其他模式则为GPIOF。

  1. DIO10

默认为GPIO4,可通过命令设置为DCD。设置为DCD的命令如下:

FT260学习笔记5-DIO配置与操作_第4张图片

该命令会同时配置DIO11为RI。

    byte[] buf = new byte[64];

         buf[0] = 0xa1;

         buf[1] = 0x07;

         buf[2] = 1;

         hid.setFeature(buf, 64);

  1. DIO11

默认为GPIO5,可通过命令设置为RI。

  1. DIO12

         BCD_DET(默认):当设备连接到电池充电器端口时,作为电池充电器检测指示器输出。

         RX_LED:当UART RX端口上接收数据时,作为LED驱动源。

         PWREN_N:当FT260被USB枚举时,用于指示电源使能。

         GPIOG:

  1. DIO13

该IO由Set UART Mode控制复用选项。当设置DTR_DSR mode,该IO为DSRN,其他模式则为GPIOH。

 

GPIO的读写也是通过Feature In/Out操作,命令字是0xB0。

private void gpioOutput()

{

    byte[] buf = new byte[64];

    buf[0] = 0xb0;

    buf[1] = (byte)(ioValue & 0x00ff);

    buf[2] = (byte)(ioDir & 0x00ff);

    buf[3] = (byte)((ioValue & 0xff00) >> 8);

    buf[4] = (byte)((ioDir & 0xff00) >> 8);

    hid.setFeature(buf, 64);

}

IO口状态:

byte[] buf = new byte[64];

buf[0] = 0xb0;

buf[1] = (byte)(ioValue & 0x00ff);

buf[2] = (byte)(ioDir & 0x00ff);

buf[3] = (byte)((ioValue & 0xff00) >> 8);

buf[4] = (byte)((ioDir & 0xff00) >> 8);

hid.getFeature(buf, 64);

ioValue = (UInt16)(buf[1] | buf[3] << 8);

ioDir = (UInt16)(buf[2] | buf[4] << 8);

你可能感兴趣的:(USB)