电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

STM32USB设计原理

6页
  • 卖家[上传人]:工****
  • 文档编号:471937335
  • 上传时间:2022-08-16
  • 文档格式:DOC
  • 文档大小:31.50KB
  • / 6 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、广州虹科电子科技有限公司http:/STM32 USB设计原理首先,我们来看看USB的工作过程。 当USB设备接入到主机时,主机开始枚举USB设备,并向USB设备发出指令, 要求获取USB设备的相关描述信息,其中包括设备描述(device descriptor)、配置描述(configuration descriptor)、接口描述(interface descriptor)、端点描述(endpoint descriptor)等。这些信息是通过端点0(endpoint 0)传送到主机的。获取各种描述信息后,操作系统会为其配置相应的资源。这样主机就可以与设备之间进行通信了。 USB通讯有四种通讯方式控制(control)、中断(interrupt)、批量(bulk)和同步( synchronous)。USB通讯是通过管道(pipe)实现的。管道是一个抽象的概念,指的是主机与设备之间通讯的虚拟链路。比如说一个USB通讯主机A和设备B,其中有bulk in(批量输入)、bulk out(批量输出)、control out(控制输出)三种通讯方式,那么A与B之间的通讯管道就有三个。(这里明确一

      2、个概念,在USB通信中数据流向都是相对设备来说的,in表示设备向主机传送数据,out表示表示主机箱设备传输数据)。在设备一端,每个管道对应一个端点,端点配置相关的寄存器和缓冲区。在通讯之前需对端点进行相关设置。在通信中,只需向缓冲写或读数据,并置位相关比特位即可。 下面具体从USB的中断输入输出来讲述基于keil C mdk开发环境的STM32的USB接口单片机程序设计。值得一提的是,ST或相关公司给我们提供许多封装函数和相关例子,我们可以根据其中的例子并进行修改即可实现我们自己需要的USB通讯程序。1.USB描述符配置 从上面的讲述可以看出,USB描述符是USB通讯的前提。主机必须先了解设备后才能与其进行通讯。在ST提供的例子中,描述符都在USB_des.c文件进行定义,下面就其中的Joystick例子说明USB描述负的配置。1.1设备描述符const u8 Joystick_DeviceDescriptorJOYSTICK_SIZ_DEVICE_DESC = 0x12, /*本描述长度*/ USB_DEVICE_DESCRIPTOR_TYPE, /*指明为设备描述符*/ 0x00,

      3、 0x02, 0x00, 0x00, 0x00, 0x40, /*最大数据包大小为64字节(对于端点0而言)*/ 0x84, /*生产商ID*/ 0x19, 0x06, /*产品ID*/ 0x04, 0x00, 0x02, 1, 2, 3, 0x01 /*配置描述符数目*/ 设备描述符两个重要参数是生产商ID和产品ID,主机将根据以上两个ID为设备选择相应驱动程序。在我们的应用中,我们一般只需修改例子中的这儿两个参数即可完成设备描述符的设置。1.2配置描述符const u8 Joystick_ConfigDescriptorJOYSTICK_SIZ_CONFIG_DESC = 0x09, USB_CONFIGURATION_DESCRIPTOR_TYPE, JOYSTICK_SIZ_CONFIG_DESC, 0x00, 0x01, /*接口数目*/ 0x01, /*Set_Configuration命令所需要的参数值*/ 0x00, /*描述该配置的字符串的索引值*/ 0xE0, /*供电模式的选择,bus供电、自供电、支持wakeup*/ 0x32, /*最大供电电流*/* 接口1配

      4、置*/ 0x09, USB_INTERFACE_DESCRIPTOR_TYPE, 0x00, /*接口编号*/ 0x00, 0x02, /*端点数*/ 0x00, 0x00, 0x00, 0, /*接口描述符索引值*/ /* 端点1输出描述*/ 0x07, USB_ENDPOINT_DESCRIPTOR_TYPE, 0x81, /*端点地址,b.7表示方向(1为in,0为out)b.0-b.3为端点标号*/ 0x03, /*端点数据传输方式*/ 0x08, /*最大数据包大小*/ 0x00, 0x20, /* 端点1输入描述*/ 0x07, USB_ENDPOINT_DESCRIPTOR_TYPE, 0x01, /*端点地址*/ 0x03, /*端点数据传输方式*/ 0x40, /*最大数据包大小*/ 0x00, 0x20, 配置描述符中包括了接口、端点的配置。如果设备为HID设备,在配置描述符中还应加入HID描述,具体描述可以参照Joystick例子的配置。 还有一些其他配置可以参可相关资料与例子加以理解。2.USB通讯的执行过程。 首先,当主机数据传送到USB设备,USB怎样接收命

      5、令和数据呢?USB首先会产生一个中断,这个中断在stm32fxxx_it.c文件的USB_HP_CAN_TX_IRQHandler和USB_LP_CAN_RX0_IRQHandler中定义,一般使用USB_LP_CAN_RX0_IRQHandler。在这个函数中继续调用USB_Istr()函数,这个函数是USB通讯的关键。它接收到主机命令,指派调度相应函数进行处理。对于这一点,详细过程我现在还不是很明白。如果以后搞懂了再补述。 当USB设备接入主机时,主机要枚举该USB设备,他将要求USB设备提供自身相关信息,这是通过endpoint0实现的。endpoint0是一个特殊的端点,每一个接口(interface)必须有endpoint0。一般情况下,我们需要使用多个端点(如前所述,配置描述符定义了端点的数目、类型、传输数据大小等)。在使用端点前需对端点进行初始化。这个过程在USB_prop.c文件中的xxx_reset()函数定义。如我定义端点1的两种传输方式:/* Initialize Endpoint 1 */SetEPType(ENDP1, EP_INTERRUPT);SetEPR

      6、xAddr(ENDP1, ENDP1_RXADDR);SetEPRxCount(ENDP1, 8); SetEPRxStatus(ENDP1, EP_RX_VALID);/* Initialize Endpoint 1 */SetEPType(ENDP1, EP_INTERRUPT);SetEPTxAddr(ENDP1, ENDP1_TXADDR);SetEPTxCount(ENDP1, 64);SetEPTxStatus(ENDP1, EP_TX_NAK); 在定义完端点后,我们就可以使用端点进行数据传输了。向主机输入数据(in):IN传输过程是1.向缓冲区填入数据;2.设定USB数据计数器:3.设置USB输出有效。XXX_send()/*copy mouse position info in ENDP1 Tx Packet Memory Area*/UserToPMABufferCopy(sendBuffer, ENDP1_TXADDR, 2); /*sendBuffer为要输出的数据,ENDP1_TXADDR端点1的向外传输缓冲区,2为数据大小byte为单位*/ SetEPTxC

      7、ount(ENDP1, 2);/* enable endpoint for transmission */SetEPTxValid(ENDP1); 注意一般情况下,端点的输入输出缓冲区地址没有定义,须在USB_conf.h中定义具体定义可以参考端点0的定义。 读从主机输出的数据(out):out传输过程是1.定义out回调函数;2.从缓冲区读出数据:3.设置USB输入有效。void EP1_OUT_Callback(void)u8 DataLen; DataLen = GetEPRxCount(ENDP1);PMAToUserBufferCopy(rcvData, ENDP1_RXADDR, DataLen);SetEPRxValid(ENDP1); 注意在一般情况下,EPX_OUT_Callback()回调函数的申明为空执行函数。需将USB_conf.h中#define EPX_IN_Callback NOP_Process隐掉。再在合适的地方从新定义void EP1_OUT_Callback(void)(合适的位置是指定义之后运行不会出现EP1_OUT_Callback为申明的错误就行)。 总结,在此将stm32芯片的USB通讯进行了简单的阐述。本人

      《STM32USB设计原理》由会员工****分享,可在线阅读,更多相关《STM32USB设计原理》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    监控施工 信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.