qinyunti 发表于 2023-10-29 23:07

【ST多款开发板返场测评】STM32F767 Nucleo-144USB HID设备测试

<div class='showpostmsg'> 本帖最后由 qinyunti 于 2023-10-29 23:09 编辑

<h1>dea60e52f47cbe26111995cd3fb93e91<br />
&nbsp;</h1>

<h1><b>前言</b></h1>

<p>本文我们来实现USB开发环境的搭建,实现USB通讯,为后面的UVC摄像头实现做准备。</p>

<p>&nbsp;</p>

<h1><b>USB模块</b></h1>

<p>原理图部分</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>USB模块详见手册章节,</p>

<p>41 USB on-the-go full-speed/high-speed</p>

<p>(OTG_FS/OTG_HS)</p>

<p>支持全速和高速,高速时需要使用外接PHY,全速时使用内置PHY。</p>

<p>&nbsp;</p>

<h1><b>USB HID设备</b></h1>

<p>以官方的Demo,HID为例进行USB开发的体验。</p>

<p>&nbsp;</p>

<p>打开工程STM32Cube_FW_F7_V1.17.0\Projects\STM32F767ZI-Nucleo\Applications\USB_Device\HID_Standalone\MDK-ARM\Project.uvprojx</p>

<p>编译运行</p>

<p>CN13 MicroUSB接电脑,可以看到枚举的设备</p>

<p>PID &amp;VID 分别是 0x5710 &amp; 0x0483,代码中使用如下宏定义</p>

<p> &nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>按键USER可以看到鼠标左右移动。详见视频。</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>使用UsbTreeView查看描述符如下</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>使用bushound抓包如下</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<h1><b>相关代码介绍</b></h1>

<p>Core下面是usbd的驱动</p>

<p>Usbd_hid部分是HID设备类相关代码</p>

<p>Usbd_conf.c是PCD相关代码</p>

<p>Usbd_desc.c是描述符相关内容</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>初始化过程</p>

<p>USBD_Init-&gt;</p>

<p>USBD_RegisterClass-&gt;注册设备类</p>

<p>USBD_Start-&gt; usb连接,对于全速即上拉DP的1.5K电阻。</p>

<p>&nbsp;</p>

<p>USB基本是中断驱动的,大部分是在中断回调中处理即</p>

<p>OTG_FS_IRQHandler-&gt;HAL_PCD_IRQHandler,在中断中处理各种事件。</p>

<p>&nbsp;</p>

<p>BSP_PB_Init</p>

<p>按键进入外部中断服务函数更新HID报告数据</p>

<p>HAL_GPIO_EXTI_Callback-&gt;USBD_HID_SendReport</p>

<h1><b>总结</b></h1>

<p>注意CBN13的USB接口为Micro USB-AB,方形口,和普通Micro USB弧形的不太一样,不过线可以通用注意方向,注意接触不好可以稍微压一下。</p>

<p>&nbsp;</p>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>
页: [1]
查看完整版本: 【ST多款开发板返场测评】STM32F767 Nucleo-144USB HID设备测试