我的用例要求 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 的特性?除了对接收缓冲区中字节的到达进行计时之外,用户如何区分与位爆炸相关的字节和串行端口字节?