![仅进行模拟数字转换是否足以将模拟数据传输到 USB?](https://linux22.com/image/1296010/%E4%BB%85%E8%BF%9B%E8%A1%8C%E6%A8%A1%E6%8B%9F%E6%95%B0%E5%AD%97%E8%BD%AC%E6%8D%A2%E6%98%AF%E5%90%A6%E8%B6%B3%E4%BB%A5%E5%B0%86%E6%A8%A1%E6%8B%9F%E6%95%B0%E6%8D%AE%E4%BC%A0%E8%BE%93%E5%88%B0%20USB%EF%BC%9F.png)
正如标题所述...
检波器提供模拟输出。必须先将其数字化,然后才能将其发布到 USB 上。仅仅数字化就足够了吗?数字化之后还必须进行哪些操作,才能将信号发布到 USB 上?
答案1
不,你不能只是“把数据放在USB“。
USB 是通用串行公共汽车。 A公共汽车(在计算机中)是控制和数据通路,在这种情况下用于连接外围设备(又名适配器) 到计算机。USB 连接外围设备就像 PCI 接受适配卡/板一样。USB 主机希望使用 USB 协议与 USB 设备通信。USB 只是外围设备与计算机连接的方法;USB(总线本身)不是最终用户设备或连接。
您很可能将“USB”与串行 (RS-232) 通信 USB 适配器混淆了。您认为的 USB 端口实际上是 USB设备用于串行通信端口。Windows 会将此类 USB 设备报告为 COM 端口;除非您查找更多信息(例如查看设备管理器),否则通过 USB 进行连接的事实是隐藏的。
回答显而易见的后续问题:“不,如果您希望在接收端可靠地读取数据,您不能只将数据放在串行通信链路上”。
- 你只需要把二进制数据放在链接上没有任何完整性检查(一个坏主意)。
- 如果 A-D 转换每个样本产生超过 8 位,则您将获得多字节样本值。您需要某种数据框架对每个样本的字节进行分组和识别。
- 有些线路协议使用(比“正常”时间更长的)时间间隔来指示框架或数据包边界(例如 Modbus),但这需要接收端的串行端口和驱动程序支持才能可靠地工作。在应用程序/用户级别,没有办法准确测量接收字节之间的时间。因此,使用额外的字节来提供帧是最可靠的。
- 在串行链路上发送和接收数据的正确方法是定义和使用协议,尤其是当数据是二进制(而非文本)时。即使数据流是单向的,也要选择固定长度或可变长度的记录,并定义组织传输数据的布局。
答案2
您必须确保数字化频率(采样频率)比输入信号的最大频率(被视为非噪声)大 2 倍。
否则你得到的只是一堆垃圾。
这被称为奈奎斯特采样定理。
答案3
您可能需要将信号标准化为某种标准。您还必须确定要数字化的值的范围。要从数据源重新创建数据,您将使用 8、16 还是 32 位数字化数据。此外,源信号的倾斜度会发生变化,那么您一秒钟会读取多少点才能再次重新创建源数据。
所以是的,仅转换就足够了,但转换的具体细节很重要。你必须进行实验。