清除 FT201X I2C-Slave 的内部发送缓冲器

Posted

技术标签:

【中文标题】清除 FT201X I2C-Slave 的内部发送缓冲器【英文标题】:Purging the internal transmit buffer of FT201X I2C-Slave 【发布时间】:2022-01-03 13:44:53 【问题描述】:

我正在尝试清除 FT201X I2C-Slave 的 FX-Buffer。不知何故,它似​​乎不起作用,即使在调用 purge-function 之后,master 仍然读取旧数据集。我将 C++(Visual Studio 2019) 与 D2XX-Programmers-Guide 中给出的 D2XX 函数一起使用。

我确实尝试在清除命令之前和之后使用 StopInTask 和 RestartInTask 函数,但它仍然没有清除我的缓冲区。

status = FT_StopInTask(fthandle);
    if (status != FT_OK) 
        printf("status not ok %d\n", status);
    
    status = FT_Purge(fthandle, FT_PURGE_TX); // Purge Tx buffer
    if (status != FT_OK) 
        printf("status not ok %d\n", status);
    
    status = FT_RestartInTask(fthandle);
    if (status != FT_OK) 
        printf("status not ok %d\n", status);
    

我什至尝试过FT_W32_PurgeComm(fthandle, PURGE_TXABORT | PURGE_TXCLEAR),即使函数返回true,缓冲区似乎仍然没有被清除。

【问题讨论】:

使用 FT_SetLatency、FT_SetUSBParameters 和 FT_SetTimeouts 似乎有所帮助,但我仍然无法始终如一地清除缓冲区。 【参考方案1】:

不知何故FT_Purge(fthandle, FT_PURGE_RX) 清除了两个缓冲区,即存储来自主机(通过 FT_Write 发送)的数据的缓冲区以及存储来自外部 I2C 主控器的数据的缓冲区。将信号 RXF(值:10)映射到 CBUS 引脚并使用 FT_GetBitMode 读取引脚可以指示存储来自主机的数据的缓冲区是否为空。

【讨论】:

以上是关于清除 FT201X I2C-Slave 的内部发送缓冲器的主要内容,如果未能解决你的问题,请参考以下文章

读取Colaso ft Packet Player用Qt发送的网络数据

使用挤压从 3D 数据中提取 2D

i.MX6ULL驱动开发 | 37 - FT5426电容触摸屏幕调试并修复驱动问题(基于linux 5.4.32内核)

单片机怎么清中断标志位

android内部存储与外部存储理解

如何通过href将变量发送到路由并由控制器接收