日志档案

发表于 2008-4-23 19:16:04

1

标签: STM32  USB  Joystick  

STM32 USB joystick程序

痛下决心一定要把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
}

系统分类: ARM   |   用户分类: STM32 ARM Cortex   |   来源: 原创   |   【推荐给朋友】

    阅读(235)    回复(0)  

投一票您将和博主都有获奖机会!