STM32F4系列+FreeRTOS+USB方式驱动有方4G模块

2023-05-16

USB方式驱动有方4G模块

参考博客如下:
1: https://blog.csdn.net/ZCShouCSDN/article/details/78936456
2: https://blog.csdn.net/gyzw_mx/article/details/115642075
3: https://blog.csdn.net/liao_512/article/details/100654476
4: https://blog.csdn.net/lutao614/article/details/88284922

开发环境:IAR
MCU:STM32F4xx
4G模块:NEOWAY
操作系统:FreeRTOS
0. 操作系统主要工作:开一个任务对模块进行读设备描述符、配置描述符、接口和端点配置等工作;当模块重启之后会产生中断使( phost->device.is_connected = 1);注意这是所有USB状态机后续操作的基础;

  1. USB状态机( USBH_Process)与中断函数配合可以获取到设备的上述描述符等配置;
  2. 获取到描述符之后重点是interface和EP的选着,有方的模块有5个接口每个接口有3个EP和EC20不同的地方在于comm口和data口用的是不同的interface的端口(这里需要多尝试确定);
  3. 使用STM32F4系列的OTG_HS端口的FS功能使用片内PHY,可参考上诉文章使用STM32CUBEMX软件生成基础软件;
    需要修改地方:
    1)OGT_HS的中断函数 等。。。。
    void OTG_HS_IRQHandler(void)
    {
    /* USER CODE BEGIN OTG_HS_IRQn 0 */
    // static uint16_t counter = 0;

/* USER CODE END OTG_HS_IRQn 0 /
// counter++;
HAL_HCD_IRQHandler(&hhcd_USB_OTG_HS);
// printf("------COUNTER= %u\r\n",counter);
/
USER CODE BEGIN OTG_HS_IRQn 1 */

/* USER CODE END OTG_HS_IRQn 1 */
}

2)修改DM+、DM-的引脚配置,一般CUBE生成之后就不用改了,还有MCU-模块的RESET引脚;
3)一般CUBE生成的代码FREERTOS又包含了一层,可参考https://www.taterli.com/2940/ 剥离CMSIS-OS层;
4)剥离结束之后,重点修改一下三个内容:
/Communication Class codes/
//#define USB_CDC_CLASS 0x02
#define USB_CDC_CLASS 0xFF //厂商自定义classcode
#define COMMUNICATION_INTERFACE_CLASS_CODE 0x02
HOST_CHECK_CLASS状态下匹配设备描述符claacode;
在这里插入图片描述
*修改 static USBH_StatusTypeDef USBH_CDC_InterfaceInit (USBH_HandleTypeDef phost)函数,commitf使用interface2-EP0; dataitf使用interface4-EP0和EP1;
调试打印+(AT+GMR\r\n)信息如下:
[16:39:18.902]收←◆USB Device Attached

[16:39:19.005]收←◆PID: 4d12h
VID: 1782h
Address (#1) assigned.
Manufacturer : NEOWAY
Product : NEOWAY-N58
Serial Number : N/A
Enumeration done.
This device has only 1 configuration.
Default configuration set.
No registered class for this device.

[16:39:20.690]收←◆USB Device disconnected

[16:39:21.704]收←◆USB Device Attached

[16:39:21.809]收←◆PID: 7401h
VID: 2949h
Address (#1) assigned.
Manufacturer : NEOWAY
Product : NEOWAY-N58
Serial Number : N/A
Enumeration done.
This device has only 1 configuration.
Default configuration set.
Switching to Interface (#2)
Class : ffh
SubClass : 0h
Protocol : 0h
CDC class started.

[16:39:22.186]收←◆AT+GMR
+GMR: N58-R07-STD-BZ_V20-06
OK

[16:39:27.521]收←◆
+EUSIM:ERROR

问题:1.有方模块PID和VID在初始化时会有两种,按道理一般就CDC类别(PID=7401,VID=2949)?
2. 软件中操作RESET引脚之后获取的中断每次都不一样,导致设备识别状态机的处理无法正常往下走,不知道该怎么处理?有相似情况的小伙伴可以交流一下。

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

STM32F4系列+FreeRTOS+USB方式驱动有方4G模块 的相关文章

  • Android Studio 无法将 Nexus 7 识别为设备

    我在 Nexus 7 上运行我在 Android Studio 中开发的应用程序时遇到问题 在使用同一台平板电脑和计算机 运行 Windows 8 之前 我已成功使其正常工作 但自从我的笔记本电脑修好并且所有内容都被擦除后 我确信我的开发环
  • 批量传输和 Android USB API

    我有一个程序 我尝试通过 USB 将我的 Android 设备连接到网络摄像头 我在一些事情上遇到了麻烦 即正确传输数据 我尝试过使用bulkTransfer 但似乎无法识别它的使用情况 我一直在尝试寻找可能对我有帮助的例子 例如here
  • 有可用的 FreeRTOS 解释语言库吗?

    我在一家公司工作 该公司使用 FreeRTOS 为多个设备创建固件 最近 我们对新功能的要求已经超出了我们固件工程师的工作能力 但我们现在也无力雇用任何新人 即使进行微小的更改 也需要固件人员在非常低的级别上进行修改 我一直在为 FreeR
  • 在c#中读取PVOID,我应该读取多少位?

    我正在读取 URB 类型的 USB 数据包 URB 标头定义于http msdn microsoft com en us library windows hardware ff540409 v vs 85 aspx http msdn mi
  • 使用 DeviceWatcher 监视 USB 驱动器并检索设备信息?

    I m a WinForms开发人员和我已经知道如何使用 WMI 监视连接或断开连接的 USB 但不久前我发现了设备观察者 http msdn microsoft com en us library windows devices enum
  • 软件和与外部设备串行通信的波特率限制

    我使用 USB 端口作为虚拟 COM 端口运行 以使用 MATLAB 或 Visual Basic 6 实现与外部设备的串行通信 我面临波特率限制 具体取决于我用于与设备通信的软件 MATLAB 2018a 没有问题 因为它可以设置高波特率
  • python的跨平台usb模块?

    我有兴趣在 python 中使用 USB 设备进行一些跨平台工作 关于可以执行此类操作的模块有任何提示或建议吗 我浏览了 SF 和 googlecode 但运气不佳 thanks ct PyUSB http pyusb berlios de
  • Mac中如何获取usb设备的设备描述符和配置描述符?

    I have minimum exposure to xcode and I Okit framework I have seen device descriptor and configuration descriptor of a us
  • Android 上的 HP TouchPad USB 驱动

    我可以在运行的 HP TouchPad 上进行应用程序开发吗氰基模组 http en wikipedia org wiki CyanogenMod 9 我有一个安装了 CyanogenMod 9 的 HP TouchPad 并且正在尝试从E
  • USB 调试 - 安装 Epson Moverio 驱动程序时出现问题

    Android 开发新手 我使用以下命令制作了一个小应用程序Eclipse http en wikipedia org wiki Eclipse 28software 29在虚拟 Android 设备上完美运行 现在 我想在真实的设备上运行
  • 如何对 USB/HID/蓝牙适配器进行逆向工程。使用什么工具?

    需要对蓝牙USB鼠标适配器进行逆向工程 并使用鼠标板测量距离 并用绘图库 http matplotlib org 我发现这些工具可以帮助完成此任务 Linux lsusb usbmon usbhid转储 rfcomm hidrd 转换 xx
  • Windows 8.1 上的 Pyusb - 没有可用的后端 - 如何安装 libusb?

    使用 pyinstaller 3 1 python 2 7 9 和 tkinter 尝试使用 pyusb 而不是 pyserial 但没有可用的后端 调查Windows 上的 Pyusb 没有可用的后端 https stackoverflo
  • GNU Arm Cortex m4 上的 C++ 异常处理程序与 freertos

    2016 年 12 月更新现在还有一个关于此行为的最小示例 https community nxp com message 862676 https community nxp com message 862676 我正在使用带有 free
  • 使用 STM32 USB 设备库将闪存作为大容量存储设备

    我的板上有这个闪存IC 它连接到我的STM32F04 ARM处理器 处理器的USB端口可供用户使用 我希望我的闪存在通过 USB 连接到 PC 时被检测为存储设备 作为第一步 我在程序中将 USB 类定义为 MSC 效果很好 因为当我将主板
  • USBInterfaceOpen总是报kIOReturnExclusiveAccess错误

    最近我遇到了这个问题 很头疼 我已经在这个问题上花了一个星期了 但仍然失败 希望您能帮我把这块石头踢开 非常感谢 我的问题 我们公司为iPhone生产USB存储设备 实际上这个存储设备中有一个SDCard 现在 我们想要开发一个 Mac 应
  • 如何在 C# 中从 USB 令牌读取证书

    我有一个 USB 令牌 其中包含一个加密证书 该证书具有公钥和私钥 现在我想用 C 创建一个应用程序 通过它我可以找到可访问的证书信息 当我插入 USB 令牌时 它会被检测到 但计算机部分上没有显示任何驱动器 就像闪存驱动器一样 如何从 U
  • STM32:从自定义引导加载程序跳转到应用程序时发生硬故障

    我正在开发带有自定义引导加载程序和应用程序的 STM32F401 MCU 编译器是GCC 5 2 1 没有运行优化 在以下跳转序列后的第一次中断后 我遇到了硬故障 引导加载程序 gt 应用程序 gt 引导加载程序 gt 应用程序 从引导加载
  • LibUsb 声明接口访问被拒绝 Java

    我希望能够从 USB 计步器读取数据 我正在 Java 中尝试此操作 并且使用 LibUsb 和 Usb4Java 库 我似乎无法认领 USB 管道或类似的东西 我正在使用的代码 final Context context new Cont
  • STM32 传输结束时,循环 DMA 外设到存储器的行为如何?

    我想问一下 在以下情况下 STM32 中的 DMA SPI rx 会如何表现 我有一个指定的 例如 96 字节数组 名为 A 用于存储从 SPI 接收到的数据 我打开循环 SPI DMA 它对每个字节进行操作 配置为 96 字节 是否有可能
  • libusb 和轮询/选择

    我正在使用 Linux 操作系统 想知道是否有任何文件描述符可以轮询 选择 当数据等待从 USB 设备读取时会触发这些文件描述符 我也在使用 libusb 库 但尚未找到可以使用的文件描述符 Use libusb 的轮询函数 http li

随机推荐

  • 安卓与串口通信-校验篇

    前言 一些闲话 时隔好几个月 xff0c 终于又继续更新安卓与串口通信系列了 这几个月太颓废了 xff0c 每天不是在睡觉就是虚度光阴 xff0c 最近准备重新开始上进了 xff0c 所以将会继续填坑 今天这篇文章 xff0c 我们来说说串
  • vscode的git冲突

    vscode的git冲突 vscode中使用git进行代码管理 xff0c 如果出现冲突了 xff0c git pull会报错 xff0c 需要进行以下步骤 xff1a git stash git pull git stash pop gi
  • 树莓派4b ubuntu mate 18.04设置开机自动登录,解决无HDMI无法开机问题

    一 树莓派4b ubuntu mate 18 04设置开机自动登录 之前安装的是树莓派4b Ubuntu server 的18 04版本 xff0c 通过命令行安装的ubuntu mate 18 04 xff0c 由于官方没有18 04ma
  • TX2 NX核心板-VNC远程桌面

    文章目录 前言一 前期准备二 TX2端安装VNC1 安装vino2 使能VNC服务3 编辑org gnome4 设置为Gnome编译模式5 设置VNC 登录密码6 配置本地网络地址为静态7 开机自启VNC 二 WINDOWS端安装VNC参考
  • docker(三)dockerfile

    文章目录 dockerfile构建过程基础知识dockerfile 的指令简单的dockerfile实验docker historyCMD 和 ENTRYPOUNT的区别举例 tomcat镜像 dockerfile构建过程 编写一个dock
  • FIND_IN_SET函数

    FIND IN SET函数是IN函数的升级版 功能类似 区别在于 如果是常量 xff0c 则可以直接用IN xff0c 否则要用FIND IN SET 函数 MySQL中原型为 xff1a FIND IN SET str strlist 假
  • 浅谈两轮平衡车的控制原理

    前言 xff1a 在IT行业摸爬滚打了好几年 xff0c 好不容易从学生熬成了社会人士 xff0c 通过自己的不断努力又从社会人士熬成了学生 这几年的修行 xff0c 同道博友给了我很多的帮助 xff0c 很早之前就有写博客的想法 xff0
  • 浅谈两轮平衡车的控制原理(续)

    前言 xff1a 上次云里雾里的说了一通 xff0c 不知道对平衡车的控制有没有说到点子上 单纯的讲解原理可能会很无聊 xff0c 但是作为一个技术宅来说 xff0c 就算头皮发麻也要接着看下去 哈哈 xff0c 吾理小子争取用通俗的语言把
  • 基于OpenCV3.0的车牌识别系统设计(一)--系统综述

    写在前面的话 车牌识别是图像处理技术的实际生活中一个非常重要的应用场景 xff0c 目前车牌识别系统已经非常完善 xff0c 识别准确率高达99 以上 作为学生 xff0c 在学习图像处理时 xff0c 自己搭建车牌识别系统是非常有价值的
  • 基于OpenCV3.0的车牌识别系统设计(二)--车牌提取

    写在前面的话 上一篇开篇博文写好之后找女朋友看了一下 xff0c 希望她提一点建设性建议 结果她很委婉的告诉我 xff0c 写的还行就是太表面了 xff0c 告诉我要注意细节的描述与具体的实现过程与原理等等 其实我只是想骗她看一下增加一下点
  • gazebo模型之间的转换:xacro>urdf>sdf

    gazebo模型之间的转换 xff1a xacro gt urdf gt sdf 前言1 xacro转urdf2 urdf转sdf3 其他工具结语 前言 gazebo的模型描述文件有三种形式 xff1a urdf xacro sdf urd
  • 电池SOC仿真系列-基于卡尔曼滤波算法的电池参数辨识

    基于 卡尔曼滤波算法电池参数辨识 本期在已经确定的电池模型的基础上 xff0c 建立二阶RC等效电路模型 以数学模型中的五个参数变量为卡尔曼滤波的状态变量 xff0c 根据已知的端电压数据估算出各个时刻的参数值 xff0c 进而得到相应的模
  • emWin 卡顿 触屏失效 黑屏 解决方法

    emWin初体验 刚学了uC OS体验到了操作系统的方便 xff0c 于是想体验下图形处理第三方的强大 xff0c emWin便是首选 我移植emWin一共遇到了两个问题 1 一直黑屏 最后实在整不出来 xff0c 有点郁闷 把例程和自己的
  • 小白学java——做一个歌手比赛系统(一)

    xfeff xfeff 完整代码加实验报告都在https download csdn net download qq 39980334 11232331 我已经设置成0积分下载了 xff0c 有需要的自行下载 xff0c 有问题的多看看代码
  • 小白学java------做一个歌手比赛系统(二)

    完整代码加实验报告都在 https download csdn net download qq 39980334 11232331 我已经设置成0积分下载了 xff0c 有需要的自行下载 xff0c 如果页面打不开可能还在审核中 xff08
  • 多旋翼无人机入门 第一章 硬件架构(上)

    多旋翼无人机系统概述 四轴 xff08 多轴 xff09 飞行器也叫四旋翼 xff08 多旋翼 xff09 飞行器 xff0c 它有四个 xff08 多个 xff09 螺旋桨 xff0c 四轴 xff08 多轴 xff09 飞行器也是飞行器
  • 多旋翼无人机入门第一章硬件架构(下)

    本篇主要讲解飞控 xff0c 遥控装置 xff0c GPS模块 xff0c 任务设备 xff0c 数据链路 xff0c 上位机 xff08 机载电脑 xff09 1 飞控 xff1a 包括陀螺仪 加速度计 电路控制板 各外设接口 大家可能都
  • 浙江大学Fast-Lab从0制作自主空中机器人公开课教程补充及部分注意事项(适用于ubuntu系统和ROS零基础)

    浙江大学Fast Lab从0制作自主空中机器人公开课纯萌新补充 xff08 适用于从没接触过ubuntu系统 xff09 1 ubuntu的换源 ubuntu系统安装后需要先换源 xff0c 不然没法安装软件 xff0c 推荐ustc源或者
  • SLAM重点摘要1: 相机变换之旋转矩阵与平移向量,R,T,变换矩阵

    注意 xff1a 本章内容简要 xff0c 不涉及具体详细的数学推导 xff0c 只简要介绍相关的数学理论 关键词 xff1a 旋转矩阵 xff0c 平移向量 xff0c 变化矩阵 xff0c 齐次线性坐标 在我的理解中 xff0c 向量
  • STM32F4系列+FreeRTOS+USB方式驱动有方4G模块

    USB方式驱动有方4G模块 参考博客如下 xff1a 1 https blog csdn net ZCShouCSDN article details 78936456 2 https blog csdn net gyzw mx artic