当前位置: 首页 > news >正文

STM32H743-ARM例程25-USB_VCP

目录

  • 实验平台
  • USB虚拟串口简介
  • USB CDC协议简介
  • 实验程序
  • 实验现象

实验平台

硬件:银杏科技GT7000双核心开发板-ARM-STM32H743XIH6,银杏科技iToolXE仿真器
软件:最新版本STM32CubeH7固件库,STM32CubeMX v6.10.0,开发板环境MDK v5.35,串口工具UartAssit

USB虚拟串口简介

  USB虚拟串口,简称VCP,是VirtualCOMPort的简写,它是利用USB的CDC类来实现的一种通信接口。
  USB虚拟串口属于USB通信设备类。在物理层通过USB总线,采用虚拟串口的方式为主机提供一个物理串口。在系统内部,USB控制器提供了一个批量传输IN端点和一个批量传输的OUT端点,用于数据的接收和发送,模拟串口的RX和TX线。另外USB控制器还提供中断IN端点,发送当前串口的状态,实现对串口传输的控制。串口设备的数据,由系统的串口采集,在芯片内完成USB包的封装,通过USB总线上传至主机,再由相应的串口应用程序进行处理。对用户来说,看到的是基于串口的数据采集和传输,而实际上实现的是基于USB协议包的数据传输。
  我们可以利用STM32自带的USB功能,来实现一个USB虚拟串口,从而通过USB,实现电脑与STM32的数据互传。上位机无需编写专门的USB程序,只需要一个串口调试助手即可调试,非常实用。
  本实验利用STM32自带的USB功能,连接电脑USB,虚拟出一个USB串口,实现电脑和开发板的数据通信。

USB CDC协议简介

  在前面章节STM32H743-ARM例程22-USB_CDC我们详细介绍过CDC通信协议,有兴趣的读者可以阅读前面章节
  本小节我们来介绍下实验流程
  主要修改usbd_cdc_if.c和main.c,会使用这四个函数,就可以用单片机与PC进行USB基本通信:
(1) CDC_Control_FS()
  来自主机请求的回调函数;CDC控制命令处理,列举了主机有可能向设备发送的一些命令。没有具体的处理过程,需要用户自己编写。其中包括串口参数的设置,要做串口转USB通信的话需要修改这里。只是为了用USB与PC通信则不用管这里。每个命令具体的意思需要查询CDC类手册。
(2) CDC_Receive_FS()
  接收数据回调函数;Buf为接收缓存。这个缓存实际上就是CDC_Init_FS()中设置的UserRxBufferFS[]数组。这个全局数组的定义在usbd_cdc_if.c文件中。Len为接收到数据的长度。这个变量不是全局的,需要用户声明变量把这个传出去。
(3) CDC_Transmit_FS()
  用来发送数据。
(4)CDC_TransmitCplt_FS()
  回调函数。

实验程序

1. 主函数

int main(void)
{MPU_Config();SystemClock_Config();MX_GPIO_Init();MX_USB_DEVICE_Init();while (1){len=sprintf(USB_TxBuf,"Hello! I am GT7000!\r\n");CDC_Transmit_HS((uint8_t*)USB_TxBuf,len); //用来发送数据HAL_Delay(1000);}
}

2. CDC_Control_FS()函数

static int8_t CDC_TransmitCplt_HS(uint8_t *Buf, uint32_t *Len, uint8_t epnum)
{uint8_t result = USBD_OK;UNUSED(Buf);UNUSED(Len);UNUSED(epnum);return result;
}

3. USB_printf函数,方便直接输出字符串

#include <stdarg.h>
void usb_printf(const char *format, ...)
{va_list args;uint32_t length;va_start(args, format);length = vsnprintf((char *)UserTxBufferHS, APP_TX_DATA_SIZE, (char *)format, args);va_end(args);CDC_Transmit_HS(UserTxBufferHS, length);
}

实验现象

在这里插入图片描述

http://www.dtcms.com/a/513145.html

相关文章:

  • A星寻路算法
  • 网站换代理天津市建设工程管理信息网
  • 项目开发手册-开发流程
  • 图像基础知识
  • 温岭自适应网站建设wordpress体育直播
  • Wincc报表自动导出Excel文件并以时间方式命名
  • 网站建设代运营方案给我一个网站图片
  • 网站价格明细表哪个网站做兼职有保障
  • 东莞市网站建设平台小型企业网站开发价格
  • 郑州市城乡建设局网站centos7 wordpress 安装
  • 做论坛网站需要哪些前置审批网站做那个效果好
  • 通过pandas merge_asof模糊匹配,快速计算财务同比指标
  • 重庆建网站要多少钱微慕WordPress小程序
  • 三合一网站搭建价格上海公司车辆怎么查询违章
  • 百度自己网站排名长春招聘网智联
  • leetcode 28 找出字符串中第一个匹配项的下标
  • 广州建设网站平台app与微网站的区别是什么意思
  • docker和docker compose离线安装-2-报错
  • 烟台放心的一站式网站建设佛山网站建设凤软
  • 网站调用网页怎么做国外那些网站做展厅比较好
  • 第2部分-线程的创建与管理
  • ORA-600 kokasgi1故障处理(sys被重命名)---惜分飞
  • 建电子商务网站需要多少钱攻略类型网站如何做产品营销
  • 曲阜官方建设局网站免费域名的选择方法
  • 网站主机是什么意思图片制作器在线制作
  • 03-Machine-2-dht.py K230外接数字温湿度传感器DHT11模块演示
  • 前端代码练习网站包工头接活网站app
  • 深圳知名网站设计公司排名苏州建设监理有限公司网站
  • 长沙做网站seo衡阳网站建设开发价格
  • 网站网页翻页设计展厅展览设计