FT260的DIO都有复用功能,可以通过配置设置不同的功能。
byte[] buf = new byte[64];
buf[0] = 0xa1;
buf[1] = 0x08;
buf[2] = func;
hid.setFeature(buf, 64);
除了使用USB命令修改,也可以使用eFuse或者外部EEPROM修改该IO的默认功能。
同DIO1,当Uart Mode为非RTS_CTS mode时,该IO为GPIOE,否则为CTSN。
当{DCNF1, DCNF0}设置了UART接默认RXD,当没有设置UART是默认GPIOC。
当{DCNF1, DCNF0}设置了UART接默认TXD,当没有设置UART是默认GPIOD。
默认是SCL(Open Drain输出),可配置为GPIO0
默认是SDA(Open Drain输出),可配置为GPIO1
DIO7
默认SUSPOUT_N,低电平表示设备进入Suspend(可通过编程外部EEPROM改成高电平)。
PWREN_N:当FT260枚举成功后,该引脚输出低电平。
GPIO2
byte[] buf = new byte[64];
buf[0] = 0xa1;
buf[1] = 0x08;
buf[2] = func;
hid.setFeature(buf, 64);
除了使用USB命令修改,也可以使用eFuse或者外部EEPROM修改该IO的默认功能。
DIO8
INTRIN(默认):作为外部中断输入源
WAKEUP:作为USB远程唤醒输入源。
GPIO3
byte[] buf = new byte[64];
buf[0] = 0xa1;
buf[1] = 0x05;
buf[2] = func;
hid.setFeature(buf, 64);
该IO由Set UART Mode控制复用选项。当设置DTR_DSR mode,该IO为DTRN,其他模式则为GPIOF。
DIO10
默认为GPIO4,可通过命令设置为DCD。设置为DCD的命令如下:
该命令会同时配置DIO11为RI。
byte[] buf = new byte[64];
buf[0] = 0xa1;
buf[1] = 0x07;
buf[2] = 1;
hid.setFeature(buf, 64);
默认为GPIO5,可通过命令设置为RI。
BCD_DET(默认):当设备连接到电池充电器端口时,作为电池充电器检测指示器输出。
RX_LED:当UART RX端口上接收数据时,作为LED驱动源。
PWREN_N:当FT260被USB枚举时,用于指示电源使能。
GPIOG:
该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);