为什么无法使用仅设备硬件实现主机功能?因为USB在主机和设备方面不对称。
在设备端,USB功能是支持称为“SIE”的基本USB协议,即串行接口引擎。该引擎包括设备接收主机请求的能力,从“默认管道”开始,并通过ACK响应获取数据,或发送数据并等待主机ACK完成事务,正确响应。由于USB时序限制(1.7us响应时间),控制事务的最后阶段不能通过软件方式实现,并且设备SIE引擎的大多数部分是硬件编码的。SIE的其他功能是接受地址分配和接受/启用配置,其结束USB附加协议的枚举阶段。然后,SIE支持基本的IN / OUT /其他管道,在相同的协议约束内。简而言之,设备功能是RESPOND。
由于这些硬件限制,不可能将设备引擎用于主机功能,主要是因为主机功能与设备功能完全相反。总线处理遵循非常不同的状态机。主机必须生成周期性帧数据包,并初始化所有事务。然后提供流畅的数据流,所有这些通常都是使用直接内存访问硬件完成的。主机必须提供端口电源功能和端口复位功能,这在设备实现中不存在。
这些是MCU设计有独立主机硬件和设备硬件控制器的主要原因。
为什么无法使用仅设备硬件实现主机功能?因为USB在主机和设备方面不对称。
在设备端,USB功能是支持称为“SIE”的基本USB协议,即串行接口引擎。该引擎包括设备接收主机请求的能力,从“默认管道”开始,并通过ACK响应获取数据,或发送数据并等待主机ACK完成事务,正确响应。由于USB时序限制(1.7us响应时间),控制事务的最后阶段不能通过软件方式实现,并且设备SIE引擎的大多数部分是硬件编码的。SIE的其他功能是接受地址分配和接受/启用配置,其结束USB附加协议的枚举阶段。然后,SIE支持基本的IN / OUT /其他管道,在相同的协议约束内。简而言之,设备功能是RESPOND。
由于这些硬件限制,不可能将设备引擎用于主机功能,主要是因为主机功能与设备功能完全相反。总线处理遵循非常不同的状态机。主机必须生成周期性帧数据包,并初始化所有事务。然后提供流畅的数据流,所有这些通常都是使用直接内存访问硬件完成的。主机必须提供端口电源功能和端口复位功能,这在设备实现中不存在。
这些是MCU设计有独立主机硬件和设备硬件控制器的主要原因。
举报