GD32单片机USB HID模式连续发送多包数据,出现丢包现象

2023-11-12

项目背景:

        产品使用GD32F103单片机实现USB HID模式,周期发送数据包。在特定情况下,需要连续发送三包数据,测试发现,只接收到了最后一包数据,前面的数据丢失了。

故障排查:

        原发送函数如下,再调用custom_hid_report_send()函数后,并未做相关的状态判断,导致数据覆盖,发送失败。

void USB_Send_SensorX_Data(void)
{
	uint8_t  cnt  = 0;
	uint8_t  Buffer[DATA_LENGTH] = {0};

	Buffer[cnt++] = 0x5B;
	Buffer[cnt++] = 0x31;
	Buffer[cnt++] = 0x36;
    /*校验和*/
	Buffer[cnt++] = 0x5D;
	/* 发送数据包*/
	if (usb_device_dev.status == USBD_CONFIGURED) 
	{
		custom_hid_report_send (&usb_device_dev, Buffer, CUSTOMHID_IN_PACKET);
	}
}

解决方案:

        由于USB设备通过端点发送/接收数据,所以需要对端点的状态进行判断,查找固件库,找到相关函数获取端点状态和端点状态的宏定义,对发送部分做如下更改:

#define EPTX_VALID   ENDP_TXSTAT(3U)/* transmission state is enabled */

custom_hid_report_send (&usb_device_dev, Buffer, CUSTOMHID_IN_PACKET);
while(usbd_ep_status_get(&usb_device_dev, EP1_IN) == EPTX_VALID );

        当端点的状态为 “发送使能” 时,则一直等待,直到发送完成,端点状态变更。增加状态判断后,连续发送数据包正常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GD32单片机USB HID模式连续发送多包数据,出现丢包现象 的相关文章

  • Vue项目打包部署总结配合nginx部署

    你可能还想了解 https blog csdn net weixin 52901235 article details 129437990 spm 1001 2014 3001 5502 使用Vue做前后端分离项目时 通常前端是单独部署 用
  • NAT穿透解决方案介绍

    最近公司要实现在各种网络环境下面的多屏互动 机顶盒 android phone iphone及PC端 的需求 由于IP地址资源有限的原因 目前我们使用的各种终端设备都位于局域网后面也就是多台设备共享同一个公网IP 例如 如果位于局域网里面的
  • Html源代码加密?

    什么是Html源代码加密 使用JavaScript加密转化技术将Html变为密文 以此保护html源代码 这便是Html源码加密 同时 这种加密技术还可实现网页反调试 防复制 链接加密等功能 应用场景 什么情况下需要Html源代码加密 Ht
  • SpringBoot下swagger3.0的配置

    SpringBoot下swagger3 0的配置 1 swagger3 0依赖 2 swagger配置类 3 我的application yml配置 4 访问地址 5 Swagger注解说明 1 swagger3 0依赖

随机推荐

  • 初学者必看!我的第一个Invideo人工智能文字生成视频

    这是一个使用人工智能生成视频的在线平台 主要功能包括 视频脚本自动生成 可以通过输入主题 由AI自动生成视频故事剧本 人声合成 支持上传脚本 AI会合成自然的人声进行朗读 视频制作 有多种视频模板可选择 支持上传自己的素材 一键生成完整视频
  • 三十多岁的我,为了生活转行Java,开始我的小白之路!

    看你35岁要从体制里出来学java 而且看样子已经下定决心了 我真的替你感到悲哀 我也是java培训出来 转行到互联网的 所以我觉得我可以回答这个问题 跟我一起培训的同学大部分也还在做 我们这些人有的是24岁刚毕业出来的 有的是毕业两年三年
  • C#程序用Settings读取和保存参数

    C 程序用Settings读取和保存参数 通常比较大型的程序开发时 需要读取和保存许多用户设置的参数 比如数据文件夹路径 程序界面的颜色 字体名称 大小等 这些信息怎么能够方便的进行设置和保存呢 在C 开发程序时 可以用系统自带的Setti
  • 智能化工作流程,工作效率开始“狂飙”!|Parabola

    随着 AI 功能的日益强大 能够帮忙人们解决的工作问题越来越多 这也不可避免地引发了一场工作效率革命 尤其助力智能化工作流程的建立 Parabola Parabola是一款强大的自动化处理工具 能够帮助用户轻松地进行数据处理 转换和分析而无
  • Java有哪些自定义异常处理方式

    在Java中 异常是一种常见的处理机制 当程序运行出现错误时 Java会默认抛出一个异常 并通过栈回溯信息提供错误详情 从而让开发人员知道程序何时 为什么以及在哪里发生异常 然而 这仅仅是Java内置异常处理的一部分 Java也提供了许多自
  • Unity使用Xcode将项目打包成IPA

    Unity是个开放性的平台 打包时也可以选择多种打包类型 几乎包含了所有的平台 目前主流Android iOS平台 Android平台可以直接使用Unity自行打包 但iOS平台需要借助Mac电脑进行打包 本博客就iOS打包进行一个简单的说
  • C++知识点总结(三)

    1 什么是二叉搜索树 二叉搜索树又称二叉排序树 它或者是一棵空树 或者是具有以下性质的二叉树 若它的左子树不为空 则左子树上所有节点的值都小于根节点的值 若它的右子树不为空 则右子树上所有节点的值都大于根节点的值 它的左右子树也分别为二叉搜
  • [转] Hyper-V Cluster Shared Volume(叢集共用磁碟區)原理初探

    原文地址 http www dotblogs com tw daniel07793 archive 2012 05 19 72265 aspx 這篇是要來解說Hyepr V在運用Cluster Shared Volume的一些原理 可以先參
  • 【牛客讨论区】第三章:开发社区核心功能

    目录 1 过滤敏感词 2 发布帖子 2 1 dao 2 2 service 2 3 controller 3 帖子详情 4 事务管理 5 显示评论 5 1 实体类 5 2 dao 5 3 service 5 4 controller 6 添
  • 详细讲解SpringBoot快速入门

    https blog csdn net m0 37106742 article details 64438892
  • Open3D(C++) 读取、可视化并保存点云

    目录 一 主要函数 1 读取点云 1 1 从文件中读取点云 1 2 从扩展名中读取点云 2 保存点云 2 1 直接保存 2 2 根据扩展名保存 3 显示点云 二 代码实现 包括读取txt格式 1 读取常见点云 2 读取txt格式的点云 三
  • CRMEB Pro2.0多门店版商城系统源码

    CRMEB Pro2 0多门店版商城系统源码 支持公众号 H5 小程序 PC 模板需另行购买 APP 首页DIY id 665343205554
  • 云服务器怎么弄mac系统,mac系统在云服务器

    mac系统在云服务器 内容精选 换一换 本地Windows操作系统主机 推荐使用 方法1 使用RDP文件登录在控制台单击 远程登录 下载RDP文件至本地 运行RDP文件 输入密码 密钥鉴权方式请先获取登录密码 登录远程桌面 详细操作请参考使
  • 扫盲系列(4):数据仓库ETL流程和ETL工具推荐

    目录 1 数据抽取 2 数据转换 3 数据加载 4 数据仓库ETL工具推荐 结构化数据ETL工具 非结构化 半结构化数据ETL工具 1 数据抽取 数据源是指存储数据的源头 包括结构化数据 半结构化数据 非结构化数据等 1 结构化数据 可以采
  • 一款经典的ThinkPhp6开发的CMS内容管理系统

    项目介绍 一款 PHP 语言基于 ThinkPhp6 x Layui MySQL等框架精心打造的一款模块化 插件化 高性能的前后端分离架构敏捷开发框架 可用于快速搭建前后端分离后台管理系统 本着简化开发 提升开发效率的初衷 框架自研了一套个
  • Oracle下载安装:

    一 Oracle老版本11g下载地址 https www oracle com cn database technologies microsoft windows html 二 安装 解压到同一目录 在解压文件夹中找到可执行文件 setu
  • angular快速入门教程

    angular 安装 1 安装node js 2 安装angular npm i g angular cli 3 创建项目 ng new 项目名 4 文件结构 e2e 测试目录 src index html 网站主页面 main ts 应用
  • React:主题切换

    效果图 useTheme import useState useEffect useRef from react const useTheme active theme gt const LOCAL KEY theme 如果浏览器存有 LO
  • VBA的常见语法整理

    1 for循环 2 字符串连接符 Dim i For i 1 To 10 Cells i 2 第 i 行 Next i 3 设定必须显式声明变量 Option Explicit 4 while循环 Dim j j 1 While Cells
  • GD32单片机USB HID模式连续发送多包数据,出现丢包现象

    项目背景 产品使用GD32F103单片机实现USB HID模式 周期发送数据包 在特定情况下 需要连续发送三包数据 测试发现 只接收到了最后一包数据 前面的数据丢失了 故障排查 原发送函数如下 再调用custom hid report se