硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1537|回复: 3
收起左侧

使用F4的USB-HS接口和电脑通讯

[复制链接]

82

主题

401

回帖

667

积分

金牌会员

积分
667
QQ
发表于 2022-12-4 14:58:35 | 显示全部楼层 |阅读模式
本帖最后由 雷鹏 于 2022-12-4 15:03 编辑

       昨天看了USB应用实战教程,收获很多,不到半天时间在STM32F407上实现了USB-HS接口开发,并在QT5.12上实现了上位机开发,为了感谢硬汉老师多年对我的帮助,特意发帖分享给大家,希望能在项目上帮助大家。      手上没有开发板,只有一个RS485 RS232 CAN接口工控液晶显示器,这个工控液晶显示器和功能还很多的,有需要了解的朋友可以看硬件平台链接,我就不细说了。
image.png
     我主要想说一下这个工控屏把USB接口用MicroUSB接口接出来了,接口电路如图。
image.png
网络上有很多采用STM32CubeMX来配置这个接口做虚拟串口的帖子,照着做了一下,居然成功了。但是我现在项目上有很多CAN接口数据要分析,如果用CAN分析仪来抓包,只能产看数据流,不能对数据流进一步的分析和判断。后来看了USB应用实战教程,发现USB通讯操作起来也不是很难。然后照着视频教程先实现了下位机开发。要把这个搞好还是要有点知识,大家想弄的话务必先看视频教程,我把踩坑的地方贴出来说明一下,
RTE配置

image.png


重点说一下 要用HS一定要把FS选上
image.png

这里也要两个都要选择上
image.png

这个也一定要设置对
image.png

其他的没什么了,mian函数写点简单代码就可以了

添加必要的头文件
#include "main.h"
#include "rl_usb.h"
#include "stdlib.h"
#include "math.h"
void app_main ()  函数实现
uint8_t usbdata[1024] ;
void app_main ()
{
  USBD_Initialize (1);     /*采用HS接口 这里要写1*/
  USBD_Connect    (1);    /*USB Device 0 Connect */      

  while  (USBD_Configured        (        1) !=usbOK  )
  {
    osDelay(10);
  }

  while(1)
  {

    if(USBD_CDC_ACM_DataAvailable        (1)        !=0)
    {
        USBD_CDC_ACM_ReadData        (1,usbdata,1);

        switch(usbdata[0])
        {
          case 2:
            for(int i=0;i<1024;i++)
            {
              usbdata = rand()%20+sin(5*3.1415*2*i/1024)*100-10;
              USBD_CDC_ACM_WriteData        (1,usbdata,1024);

            }
          break;
        }
    }
    osDelay(1);
  }
}



int main(void)
{

  HAL_Init();

  /* Configure the system clock to 168 MHz */
  SystemClock_Config();
  SystemCoreClockUpdate();

  /* Add your application code here
     */

#ifdef RTE_CMSIS_RTOS2
  /* Initialize CMSIS-RTOS2 */
  osKernelInitialize ();

  /* Create thread functions that start executing,*/
   osThreadNew(app_main, NULL, NULL);

  /* Start thread execution */
  osKernelStart();
#endif

  /* Infinite loop */
  while (1)
  {
  }
}



编译下载就可以了。


上位机开发教程用的是QT6.4,因为波形显示数据量太大,而且不能缩放和移动,之前有做过波形显示,我用的是QT5.12的版本,工程目录如图
image.png


chart 和chartview  是我在网上找的,代码我就不贴图了,有兴趣的朋友可以下载玩一下。最后上效果图。原图
image.png
滚动鼠标中间滚轮水平缩放
image.png
按住 Ctrl 键 滚动鼠标中间滚轮垂直缩放
image.png
点击鼠标右键波形还原,然后点击鼠标左键不放可以拖动波形
image.png


硬件平台
【安富莱】新品上市, RS485 RS232 CAN接口工控液晶显示器
https://www.armbbs.cn/forum.php?mod=viewthread&tid=9905&fromuid=18397
(出处: 硬汉嵌入式论坛)




参考资料


1.USB应用实战教程第3期:手把手玩转USB BULK方式下位机和QT6.4上位机开发(上篇)
https://www.bilibili.com/video/BV1he4y177Ea/?spm_id_from=333.1007.top_right_bar_window_default_collection.content.click&vd_source=53b19f4755911fc0fbe92865325c1c5d


2.USB应用实战第4期:手把手玩转基于QT6.4的USB BULK上位机和下位机开发(下篇)
https://www.bilibili.com/video/BV1nt4y1K7oZ/?spm_id_from=333.788&vd_source=53b19f4755911fc0fbe92865325c1c5d



代码和工程分享
上位机
STM32_USB_QT.rar (15.53 KB, 下载次数: 5)
下位机
STM32_USB_RTE.rar (708.85 KB, 下载次数: 11)


chart 和chartview  QT工程
zoomchart.rar (8.93 KB, 下载次数: 4)











武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106622
QQ
发表于 2022-12-5 00:24:23 | 显示全部楼层
谢谢楼主分享。
回复

使用道具 举报

25

主题

99

回帖

179

积分

初级会员

积分
179
发表于 2022-12-5 21:38:55 来自手机 | 显示全部楼层
为啥要把fs也选上,
回复

使用道具 举报

82

主题

401

回帖

667

积分

金牌会员

积分
667
QQ
 楼主| 发表于 2022-12-6 17:30:07 | 显示全部楼层
xujun 发表于 2022-12-5 21:38
为啥要把fs也选上,

我也不知道  不加就编译不通过,加了就OK 了 ,波形显示很OK  
武汉天纵鹏元科技有限公司。承接嵌入式项目开发,相关技术交流。STM32,物联网,工业控制方向。QQ  408137104
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-26 22:02 , Processed in 0.285740 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表