usb - FTDI Bit-Bang 抖动(FT232R 与 FT232H)
问题描述
当我敲击 FT232H 上的 RX 和 TX 引脚时,输出很漂亮。当我在 FT232R 上重复时,感觉很糟糕。是什么导致 FT232R 上的信号看起来如此糟糕?请注意,我使用的是 FT232R 分线板(来自 sparkfun)和 FT232H 分线板(来自 ADAfruit)。
上图来自在两个分线板上运行的这个 C# 程序:
const byte PIN_TX = 0b00000001;
const byte PIN_RX = 0b00000010;
public static FTDI ftdi = new FTDI();
public static FTDI.FT_STATUS ft_status = FTDI.FT_STATUS.FT_OK;
public static UInt32 bytesWritten = 0;
static void Main(string[] args)
{
// open and configure the FTDI device
ftdi.OpenByIndex(0);
ftdi.SetBitMode(0, 0);
ftdi.SetBitMode(PIN_TX | PIN_RX, 0x01); // Asynchronous Bit Bang Mode
ftdi.SetBaudRate(9600);
// create some data to send
byte[] data = new byte[1234];
for (int i = 0; i < data.Length; i++)
{
data[i] = 0;
if (i % 2 == 1) data[i] |= PIN_RX;
if (i % 4 == 1) data[i] |= PIN_TX;
}
while (true)
{
ftdi.Write(data, data.Length, ref bytesWritten);
}
}
解决方案
显然这是 FT232R 的一个已知问题。它在FT232R 勘误表(第 4 页)中得到解决,并在这些网页上进行了演示:
推荐阅读
- react-native - 安全密码字段在发布时不受保护
- c++ - 定义子类构造函数时使用花括号调用基类构造函数?
- c# - 将预制件作为游戏对象的子对象统一生成
- directshow - GMFBridge DirectShow 滤镜 SetLiveTiming 效果
- java - 覆盖功能区服务器列表以从领事获取主机名列表
- javascript - Firebase 云消息传递每个 then() 都应该返回一个值或抛出 promise/always-return
- python-3.x - 如果响应条件,boto3 无法执行
- python - 用大图像重新训练 MobileNet
- java - 为什么 Espresso 不等待实际观看条件?
- key - Chocolatey 安装期间的产品密钥