3.3.2 USB设备HID类设计与实现
USB数据传输的软件设计,主要是集中在USB芯片的初始化以及协议的初始化、以及之后的枚举过程,在成功枚举并被主机正确识别之后,只需将数据写入发送缓冲即可将数据发送到主机。在协议的初始化时,需要将协议中规定的各个参数设定都按照设计的要求设定,并且将各种描述符,包括配置描述符、端点描述符、接口描述符、报告描述符等初始完毕,以供枚举过程使用。
USB芯片的初始化过程的最后一步是将其SoftConnect功能打开,从这时起,主机才能开始检测到设备的接入,也从这个时候起,USB芯片才真正开始与主机通信并开始设备枚举过程。在枚举过程中,主机首先向设备发送启动信号,设备在接收到这个信号之后向主机发送回送的协议数据以供主机识别,当识别到这个信号之后,主机则开始向设备获取描述符等信息,进而完成设备枚举过程。
初始化完成之后,主循环实际上不再参与USB通信。每次PDIUSBDl2接口芯片检测到USB总线上主机发给这个设备的信号时候就触发一次单片机的外部中断。中断处理子程序要做的工作就是首先D12读取中断信息,查看D12收到了什么样的封包,然后根据主机的不同要求做出响应,中断处理程序流程如图8所示。
图8中断处理程序流程
本系统设备中,固件程序只须处理端点0的输出和输入要求就可以完成设备的正常配置和基本工作。
在图8中,SOF包处理程序是自定义的部分,是为了更好地配合设备工作而添加的代码,与设备的实质没有太大关系,而结束状态改变引起的中断在这里不需要做处理。由于USB的数据传输都是由D12自动完成,端点1和2的输出/输入中断处理就没有什么实质内容。
4结束语
本设计所实现的基于USB的无线触摸鼠标板除了具有无线空中鼠标的所以功能外,且成本低廉,容易实现,无线传输距离远(20 m),无指向性,适应性强,能广泛应用于现有的多媒体教室。