IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32F4系列+FreeRTOS+USB方式驱动有方4G模块 -> 正文阅读

[嵌入式]STM32F4系列+FreeRTOS+USB方式驱动有方4G模块

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引脚之后获取的中断每次都不一样,导致设备识别状态机的处理无法正常往下走,不知道该怎么处理?有相似情况的小伙伴可以交流一下。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章           查看所有文章
加:2021-07-22 23:02:56  更:2021-07-22 23:03:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/6 18:20:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码