STM32 USB joystick程序

技术分类: 微处理器与DSP  | 2008-04-23
作者:cqcrr

      EDN博客精华文章  作者:cqcrr

  痛下决心一定要把USB的程序搞懂,也许表述有很多错误的地方,欢迎指正。

  USB需要一个主机host和设备device。

  USB设备和主机的通信需要先建立virtual pipeline,然后设备传回描述符给主机。joystick属于HID设备,工作在中断方式。但并非通常单片机所谓的中断,而实际上是查询的方式。

  USB采用NRZI编码,而且需要位填塞,但是这些工作通过硬件SIE serial interface engine完成,编程不用关心。

  USB数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输(中断传输、并行传输、批量传输和控制传输)。什么封包格式等好像程序没有涉及。

  而描述符就需要程序来提供了。

  usb_desc.c  提供了设备、端点、接口、字符串、群组、制造商描述符

  usb_prop.c  提供了Device_Property, Device_Table & USER_STANDARD_REQUEST 结构描述,这3个东东定义于usb_core.c。

  hw_config.c  提供了实际硬件需要的操作函数,Joystick_Send()通过函数UserToPMABufferCopy 和 SetEPTxValid 将坐标值发给了USB端口。

  STM32f10x_it.c  里面有

  void USB_LP_CAN_RX0_IRQHandler(void)
{
    USB_Istr();       //定义于usb_istr.c
}

0
0
(请您对文章做出评价)
加载中

对文章的评论

更多评论

剩余字数:  

浏览该文章的用户还看过...

  • 文 章

  • 论 坛

  • 博 客

  • 小 组

设计资源与分销

  • 博客推荐

  • 论坛推荐

  • 在线研讨会