使用GD32USBFS复合设备数据发送时出现错误问题

news/2024/11/17 0:56:23/

问题现象

  • 解决方法
  • 排查过程

最近使用GD32F4定义了一个USB复合设备,有三个接口Interface,第一个接口用于HID键盘,后两个用于自定义信息发送。设备插入电脑显示设备枚举成功,三个接口都在,在使用的时候发现前设备两个接口是正常的,最后一个接口接受消息正常,但是发送的时候上位机Bushound抓到的包是错误的。

解决方法

先说本问题的解决方法,将GD32的USBFS的发送FIFO大小改小,GD32F4USBFS设备模式的接受FIFO和三个发送FIFO的总大小为1.25K,发送FIFO和接受FIFO的总大小需要小于320个字
在这里插入图片描述
我之前程序中配置的大小为(以32位字为单位):

#define RX_FIFO_FS_SIZE    128
#define TX0_FIFO_FS_SIZE   64 
#define TX1_FIFO_FS_SIZE   64
#define TX2_FIFO_FS_SIZE   64
#define TX3_FIFO_FS_SIZE   64

FIFO总大小还包括接收RXFIFO的大小所以超出了范围1.25K,后面我把TXFIFO都改为40就好了。

排查过程

GD32USB发送和接受的数据会放在接受FIFO和发送FIFO中,跟踪调试监控放在TXFIFO的内容及相关的寄存器状态都是对的,但是接收方收到的是错的,说明可能发送的时候取值的地址不对,最后定位是TX3发送FIFO超出范围导致的。


http://www.ppmy.cn/news/796585.html

相关文章

oxe通信服务器组件是什么,ALE OminiPCX OXE

1.1 OmniPCX Enterprise Stand-alone System● 用户线 (包括所有类型用户): 15,000 ● 中继线 (包括公网、专网): 10,000 ● 媒体网关/远端模块 (包括IP媒体网关和Crystal媒体网关): 240 ● 远端存活模块 (PCS): 240 ● 支持85个时区 ● VoIP应用: 支持H.323/SIP标准 ● 压缩算…

GD32利用CubeMX构建代码的测试

前言 近期搞到一块GD32F103c8t6的开发板,号称是和STM32F103C8T6 Pin To Pin兼容的,查了一些资料,很多老哥也搞过类似的测试,多半结果是不兼容,具体哪里不兼容,哪些共功能不兼容,老哥们基本不说…

linux php gd库安装,Linux系统gd库安装步骤说明

gd库是PHP处理图形的扩展库,它提供了一系列用来处理图片的API(应用程序编程接口),使用gd库可以处理图片或者生成图片。在网站上,gd库通常用来生成缩略图,或者对图片加水印,或者生成汉字验证码,或者对网站数…

rhel安装php,如何在CentOS和RHEL上安装PHP7

php7.3是php的最新稳定版本,yum存储库正在为php7提供RPM包。本篇文章将使用remi和epel-yum存储库在你的系统上安装所需的软件包,将介绍在CentOS和Redhat7服务器上安装php 7.3、php 7.2、php 7.1。 设置yum存储库 首先,需要在系统上启用Remi和…

JVM 调优测试Jmeter 压测

Jmeter 内存不足了,修个5个线程吧 测试结果: Jmeter配置参数 5个线程,每个线程1秒跑1000次 测试串行吞吐量 -XX:PrintGCDetails -Xmx128M -Xms128M -XX:HeapDumpOnOutOfMemoryError -XX:UseSerialGC -XX:PermSize32M GC回收4次 吞吐量138…

RK1126从入门到放弃:(一)编译篇

安装必备软件: apt-get install repo git ssh make gcc libssl-dev liblz4-tool \ expect g patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \ qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g-multilib unzip \ device-t…

keil GD32编译过程中出现“No space in execution regions with .ANY selector matching”问题

用keil GD32官方的例程基础上移植了自己的测试demo,编译验证成功,然后开始移植FreeRTOS,移植完就遇到了这个问题。 网上找到一篇文章,说是keil模拟的芯片内存远小于实际芯片内存。 因为每个人遇到的情况可能都不太一样&#xff0…

GD32F4xx调试笔记

GD32F4xx调试笔记 RCUSystickGPIOUSARTBasic TimerPWMDAC RCU 设置输入晶振频率 默认25MHz,需要根据硬件设备进行调整,这里设置为8MHz。/* define value of high speed crystal oscillator (HXTAL) in Hz */ #if !defined (HXTAL_VALUE) #define HXTAL…