共6个API函数,分别是:
1. D2XX_Init:
ED2XX_ErrorCode D2XX_Init(TD2XX_DeviceConfiguration *d2xxDeviceConfig, FD2XX_Callback callbackFn, void *ref)
作用:初始化D2XX库。
参数说明:
[in] d2xxDeviceConfig - 用于配置D2XX,Demo程序中将这部分配置放置在MCU内部Flash的固定位置,可以查看文件ft930_d2xx_default_config.inc,该配置可以通过PC烧录工具配置。这里先不需要修改,用默认的值。
[in] callbackFn - D2XX底层驱动回调函数,其原型如下:
typedef void (*FD2XX_Callback)(ED2XX_EventCode eventID, void *ref, void* param1, void* param2);
[in] ref - 回调函数的参数ref。
返回值:
D2XX_ERR_NONE表示没有错误,D2XX_ERR_INVALID_PARAMETER 表示参数错误,一般是参数d2xxDeviceConfig有问题。
2. D2XX_Exit:
void D2XX_Exit(void)
作用:退出D2XX模式。
3. D2XX_Read:
int32_t D2XX_Read(int32_t interfaceNum, uint8_t *readBuffer, const int32_t length)
作用:读数据,读从USB传过来的数据。
参数说明:
[in] interfaceNum - D2XX接口号,范围从1到n,其中n在文件ft930_d2xx_default_config.inc中有定义:
对于FT93x来说,接口数最大为7.
[in] readBuffer - 读入数据的buffer指针
[in]length - 请求读入数据的长度,可以设置为最大的Transfer大小。同样在文件ft930_d2xx_default_config.inc中有定义,如上图中的MaxTransferSize的定义,分别定义了7个接口各自最大的Transfer大小。
返回值:
返回正数表示实际读到的数据长度。
返回0表示D2XX的buffer是空的。
返回负数表示错误,其中D2XX_ERR_INVALID_PARAMETER表示参数错误,D2XX_ERR_IO表示通信失败,D2XX_ERR_DEVICE表示D2XX设备没有处理请求。
4. D2XX_Write:
int32_t D2XX_Write(int32_t interfaceNum, uint8_t *writeBuffer, const int32_t length)
作用:写数据,发送数据给USB
参数说明:
与D2XX_Read类似
返回值:
返回0表示D2XX的buffer满了。其他与D2XX_Read类似。
5. D2XX_IOCTL:
ED2XX_ErrorCode D2XX_IOCTL(int32_t interfaceNum, int ioctlID, void *param1, void *param2)
作用:该API是处理D2xx除读写外的控制命令。
参数说明:
[in] interfaceNum - 含义与D2XX_Read相同
[in] ioctlID - 命令类型,目前只定义了2个,D2XX_IOCTL_SYS_REMOTE_WAKEUP和D2XX_IOCTL_INTERFACE_WAKEUP。
[in] param1 - 命令的参数,其中1表示唤醒,0表示清楚唤醒
[in] param2 - 当前未使用
返回值:
D2XX_ERR_NONE:成功
D2XX_ERR_INVALID_PARAMETER:参数错误
D2XX_ERR_DEVICE:D2XX未响应命令
D2XX_ERR_NOT_SUPPORTED:未知的IOCTL命令
6. D2XX_Timer
作用:D2XX定时器函数,需要放在定时器中断中。
在初始化D2xx后需要指定一个分频系数为1000的定时器,然后把这个API函数放在定时器中断中。