雷鹏 发表于 2022-12-4 14:58:35

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

本帖最后由 雷鹏 于 2022-12-4 15:03 编辑

       昨天看了USB应用实战教程,收获很多,不到半天时间在STM32F407上实现了USB-HS接口开发,并在QT5.12上实现了上位机开发,为了感谢硬汉老师多年对我的帮助,特意发帖分享给大家,希望能在项目上帮助大家。      手上没有开发板,只有一个RS485 RS232 CAN接口工控液晶显示器,这个工控液晶显示器和功能还很多的,有需要了解的朋友可以看硬件平台链接,我就不细说了。

   我主要想说一下这个工控屏把USB接口用MicroUSB接口接出来了,接口电路如图。

网络上有很多采用STM32CubeMX来配置这个接口做虚拟串口的帖子,照着做了一下,居然成功了。但是我现在项目上有很多CAN接口数据要分析,如果用CAN分析仪来抓包,只能产看数据流,不能对数据流进一步的分析和判断。后来看了USB应用实战教程,发现USB通讯操作起来也不是很难。然后照着视频教程先实现了下位机开发。要把这个搞好还是要有点知识,大家想弄的话务必先看视频教程,我把踩坑的地方贴出来说明一下,
RTE配置


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

这里也要两个都要选择上

这个也一定要设置对

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

添加必要的头文件
#include "main.h"
#include "rl_usb.h"
#include "stdlib.h"
#include "math.h"
void app_main ()函数实现
uint8_t usbdata ;
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)
      {
          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的版本,工程目录如图



chart 和chartview是我在网上找的,代码我就不贴图了,有兴趣的朋友可以下载玩一下。最后上效果图。原图

滚动鼠标中间滚轮水平缩放

按住 Ctrl 键 滚动鼠标中间滚轮垂直缩放

点击鼠标右键波形还原,然后点击鼠标左键不放可以拖动波形



硬件平台
【安富莱】新品上市, 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


代码和工程分享
上位机

下位机



chart 和chartviewQT工程












eric2013 发表于 2022-12-5 00:24:23

谢谢楼主分享。

xujun 发表于 2022-12-5 21:38:55

为啥要把fs也选上,

雷鹏 发表于 2022-12-6 17:30:07

xujun 发表于 2022-12-5 21:38
为啥要把fs也选上,

我也不知道不加就编译不通过,加了就OK 了 ,波形显示很OK
页: [1]
查看完整版本: 使用F4的USB-HS接口和电脑通讯