离开 bit-bang 模式后如何使用 libftdi 清除 FTDI FT232 接收缓冲区?

问题描述 投票:0回答:1
将 libftdi 1.5 与 FTDI FT232 USB 串行转换器一起使用时,我遇到了一种情况,其中 bit-bang 模式导致设备用不需要的数据填充一些内部接收缓冲区,而这些数据无法使用正常的缓冲区刷新例程清除。

我的用例要求 FT232 上的一个引脚在 bit-bang 模式 (

BITMODE_BITBANG

) 下使用几秒钟,然后立即返回到串行/FIFO 模式以读取远程端将开始发送的数据。问题:返回到正常串行模式后,对 
ftdi_read_data()
 的调用将立即返回,读取值为 0xFC 或 0xFF 的字节(我猜这代表了 bit-bang 引脚状态。)只有在像这样读取 256 个字节之后才会
ftdi_read_data()
 开始返回实际到达串行线路的字节。缓冲区中 0xFC/0xFF 字节的数量似乎与 bit-bang 模式下花费的时间量相对应,但它很快就会被填满——整个 256 字节缓冲区将在几毫秒内被填满。

离开 bit-bang 模式后调用

ftdi_tciflush()

 似乎没有任何效果; 
ftdi_read_data()
仍然会先返回不需要的数据。

这是 FTDI 部分的预期行为,还是 libftdi 的特性?除了对接收缓冲区中字节的到达进行计时之外,用户如何区分与位爆炸相关的字节和串行端口字节?

ftdi libftdi
1个回答
0
投票
ftdi_tciflush 是错误的清除 RX 缓冲区的函数。你尝试过 FT_Purge 吗?

© www.soinside.com 2019 - 2024. All rights reserved.