原创 STM32 USB joystick程序

2008-4-23 19:16 3971 5 5 分类: MCU/ 嵌入式

痛下决心一定要把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
5
关闭 站长推荐上一条 /2 下一条