在现代嵌入式系统设计中,异步串行通信接口长期以来一直是单片机和嵌入式系统的标准外设。然而随着个人计算机通用外围设备对串口需求的减少,串口正在逐渐从个人计算机特别是便携式电脑上消失。面对这种情况,嵌入式开发人员常常会发现自己新购置的计算机缺乏串口或调试现场用户的计算机没有配备串口,这种尴尬的情况引发了一个问题:是否可以利用USB接口替代传统串口实现PC与嵌入式系统之间的通信?
USB虚拟串端设计之可行性探讨
首先,市场上涌现出越来越多带有USB接口的器件,如具备USB接口的单片机或独立USB接口器件,其成本已经相当于使用RS232电平转换芯片所需成本相近。此外,还有一些市场上的USB到串端转换芯片,它们一头连接为物理端子,一头为USB端子,在内部完成协议转换。这类芯片通过USB连接至个人电脑后,在操作系统中表现为一个物理端子的设备,从而使得原有的调试工具(如HyperTernimal)及基于物理端子的应用程序能够无缝工作。
尽管如此,这些器件并未采用标准的USB设备类,因此在Windows和Linux操作系统上需要额外安装驱动程序。此外,由于数据经过了两次转换,即由物理端子到物理端子,再由从设备到主设备,这可能导致调试过程中的复杂性,使得难以确定问题出现在哪个环节。
因此,我们应该使嵌入式系统直接与PC通过USB总线进行连接,而不是依赖于第三方介质。我们可以利用单片机内置或者外扩的一块专用的微控制器晶体管集成电路(IC),即AT89C5131,该晶体管集成电路不仅集成了CPU核心,还包含了一块完整且高效率的小型存储空间,并且具有丰富的输入输出功能,可以作为数据交互桥梁。
了解CDC类及其作用
CDC类全称为“通信设备类”,它是根据不同类型和特性的通信设备定义的一系列规范。在这些规范中,有一种名为抽象控制模型,它适用于模拟电话服务提供商,以及其他支持原始数据流传输(Raw Data Stream)的硬件终结点。这个模型允许主控硬件终结点作为若干个虚拟COM波特数设置,以此来支持多种不同的应用需求,同时也能保持最小化软件改动。
AT89C5131简介
为了进一步降低成本并简化设计,我们选择了Atmel公司生产的一个51单片微处理器——AT89C5131,该产品融合了52内核架构、32KB Flash存储空间、1KB EEPROM存储空间以及丰富输入输出功能,比如10位ADC、I2C总线管理等,使其成为实现本地处理任务并同时进行高速数字信号处理非常理想的手段之一。
基于AT89C5131 CDC类实现
由于AT89C5131内置了7个可配置终点,我们可以将这7个终点分配给两个部分:0号和1号终点用于通信接口管理;2号和3号终点则用于数据交互;剩余两个用于特殊目的。此方式既满足了CDC抽象控制模型对于不同类型结束节点要求,也提高了资源利用率,为更复杂项目留出了足够空间以添加更多功能。