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

威县做网站哪里便宜信息流广告代运营

威县做网站哪里便宜,信息流广告代运营,外贸营销策划方案,google网站优化工具ESP32-S3 USB虚拟串口详解 USB-OTG 外设介绍 USB-OTG: USB-OTG是一种USB规范,允许嵌入式系统(如手机、平板电脑、单片机系统等)在没有主机(如个人电脑)的情况下直接相互通信,同时也能够作为传…

ESP32-S3 USB虚拟串口详解

USB-OTG 外设介绍

USB-OTG:
USB-OTG是一种USB规范,允许嵌入式系统(如手机、平板电脑、单片机系统等)在没有主机(如个人电脑)的情况下直接相互通信,同时也能够作为传统USB主机或设备操作。这意味着一个带有USB-OTG功能的设备可以扮演两种角色:主机角色(Host)和外设/设备角色(Peripheral)。当作为主机时,它可以连接并控制其他USB设备(如U盘、键盘、鼠标等);作为外设时,则可被主机(如PC)控制。USB-OTG的核心在于其双角色能力,以及通过一个micro-AB插口或Type-C接口来自动协商连接设备的角色。

ESP32-S2/S3 等芯片内置 USB-OTG 外设,它包含了 USB 控制器和 USB PHY,支持通过 USB 线连接到 PC,实现 USB Host 和 USB Device 功能。

而ESP32-S3通过USB-OTG接口就可以实现USB虚拟串口(CDC-ACM类)功能。

什么是USB虚拟串口?

USB虚拟串口是一种可以让微控制器(如ESP32-S3)通过USB接口与电脑进行串口通信的技术。它的工作原理是在微控制器和电脑之间建立一个虚拟的串口通道,使得电脑可以像操作串口设备一样操作USB设备。同时无需 USB 至 UART 桥,便可直接烧录设备。
请添加图片描述

ESP32 IDF 的 USB 驱动库

ESP-IoT-Solution是一个包含常用外设驱动和代码框架的物联网系统解决方案。它可以作为ESP-IDF的补充组件,让用户能够更轻松地进行开发。

ESP-IoT-Solution

在ESP-IoT-Solution中我们需要使用到TinyUSB这个库,这是 ESP 官方为 USB 打造的一个 USB 驱动库
在这里插入图片描述
添加 ESP-IoT-Solution 指定组件到工程目录:可直接在工程的 CMakeLists.txt 中添加以下代码:

set(EXTRA_COMPONENT_DIRS "${EXTRA_COMPONENT_DIRS} ${IOT_SOLUTION_PATH}/components/{component_you_choose}")

或者可以复制 ESP-IoT-Solution 指定组件到工程目录:直接将该组件和其依赖的组件,复制粘贴至工程的 components 文件夹。

TinyUSB库API使用

我们使用ESP32-S3通过USB提供一个虚拟串口服务,进而实现发送字符串然后接收并回发相同字符串的功能

1. 安装驱动程序:

    const tinyusb_config_t tusb_cfg = {.device_descriptor = NULL,.string_descriptor = NULL,.external_phy = false,.configuration_descriptor = NULL,};// 初始化TinyUSB驱动ESP_ERROR_CHECK(tinyusb_driver_install(&tusb_cfg));

2. 初始化USB CDC ACM:

    tinyusb_config_cdcacm_t acm_cfg = {.usb_dev = TINYUSB_USBDEV_0,.cdc_port = TINYUSB_CDC_ACM_0,.rx_unread_buf_sz = 64,.callback_rx = tinyusb_cdc_rx_callback, // 注册接收回调.callback_rx_wanted_char = NULL,.callback_line_state_changed = NULL,.callback_line_coding_changed = NULL};// 初始化USB CDC ACMESP_ERROR_CHECK(tusb_cdc_acm_init(&acm_cfg));

3. 注册回调函数:

// 回收数据的回调函数
static void tinyusb_cdc_rx_callback(uint8_t itf, uint8_t* data, uint16_t len) {ESP_LOGI(TAG, "Received %d bytes of data: %.*s", len, len, data);// 尝试将接收到的数据原样回传if (tinyusb_cdc_acm_write(itf, data, len) != ESP_OK) {ESP_LOGE(TAG, "Failed to send received data back");}
}tinyusb_cdcacm_register_callback(TINYUSB_CDC_ACM_0, CDC_EVENT_LINE_STATE_CHANGED, &tinyusb_cdc_rx_callback)

完整示例

#include "esp_log.h"
#include "esp_err.h"
#include "tinyusb.h"
#include "tusb_cdc_acm.h"static const char* TAG = "USB_CDC";// 回收数据的回调函数
static void tinyusb_cdc_rx_callback(uint8_t itf, uint8_t* data, uint16_t len) {ESP_LOGI(TAG, "Received %d bytes of data: %.*s", len, len, data);// 尝试将接收到的数据原样回传if (tinyusb_cdc_acm_write(itf, data, len) != ESP_OK) {ESP_LOGE(TAG, "Failed to send received data back");}
}void tud_usb_usart(void) {ESP_LOGI(TAG, "USB initialization");const tinyusb_config_t tusb_cfg = {.device_descriptor = NULL,.string_descriptor = NULL,.external_phy = false,.configuration_descriptor = NULL,};// 初始化TinyUSB驱动ESP_ERROR_CHECK(tinyusb_driver_install(&tusb_cfg));tinyusb_config_cdcacm_t acm_cfg = {.usb_dev = TINYUSB_USBDEV_0,.cdc_port = TINYUSB_CDC_ACM_0,.rx_unread_buf_sz = 64,.callback_rx = tinyusb_cdc_rx_callback, // 注册接收回调.callback_rx_wanted_char = NULL,.callback_line_state_changed = NULL,.callback_line_coding_changed = NULL};// 初始化USB CDC ACMESP_ERROR_CHECK(tusb_cdc_acm_init(&acm_cfg));ESP_ERROR_CHECK(tinyusb_cdcacm_register_callback(TINYUSB_CDC_ACM_0, CDC_EVENT_LINE_STATE_CHANGED, &tinyusb_cdc_rx_callback));ESP_LOGI(TAG, "USB initialization DONE");
}void app_main() {ESP_LOGI(TAG, "App started");tud_usb_usart(); // 在应用程序启动时初始化USBwhile(1) {// 应用程序主循环vTaskDelay(pdMS_TO_TICKS(1000)); // 延时1秒}
}

总结

除了模拟串口,USB-OTG 外设还有许多其他功能。

例如,它可以支持连接 USB 存储设备,让用户轻松扩展设备的存储容量。此外,它还能作为 USB 音频设备,让用户连接耳机或扬声器,享受高质量音乐。另外,它还支持 USB 打印机模式,使用户能够直接从设备上打印文档。此外,USB-OTG 还可以作为方便的文件传输工具,当需要传输数据时,用户可以快速共享文件。还有更多功能…

参考资料
ESP IDF USB设备驱动程序
ESP-IoT-Solution
外设/USB/设备/tusb_serial_device


文章转载自:
http://sandalwood.rzgp.cn
http://suff.rzgp.cn
http://whiten.rzgp.cn
http://cicisbeo.rzgp.cn
http://centra.rzgp.cn
http://leviable.rzgp.cn
http://winey.rzgp.cn
http://groschen.rzgp.cn
http://turntail.rzgp.cn
http://discomfit.rzgp.cn
http://appendix.rzgp.cn
http://dreamlike.rzgp.cn
http://kirkcudbrightshire.rzgp.cn
http://rabbiteye.rzgp.cn
http://tonoscope.rzgp.cn
http://transconfessional.rzgp.cn
http://neutralise.rzgp.cn
http://propitiate.rzgp.cn
http://bora.rzgp.cn
http://linum.rzgp.cn
http://backslidden.rzgp.cn
http://unconfident.rzgp.cn
http://sla.rzgp.cn
http://tetraethylammonium.rzgp.cn
http://bombastic.rzgp.cn
http://bourgeoisie.rzgp.cn
http://pseudo.rzgp.cn
http://turgent.rzgp.cn
http://hippologist.rzgp.cn
http://selfish.rzgp.cn
http://solidify.rzgp.cn
http://nougat.rzgp.cn
http://rallicart.rzgp.cn
http://tinsmith.rzgp.cn
http://clearinghouse.rzgp.cn
http://decussation.rzgp.cn
http://octet.rzgp.cn
http://haircurling.rzgp.cn
http://thereunto.rzgp.cn
http://cuticula.rzgp.cn
http://cudbear.rzgp.cn
http://staylace.rzgp.cn
http://amphibia.rzgp.cn
http://luminize.rzgp.cn
http://suffragist.rzgp.cn
http://winelist.rzgp.cn
http://toneless.rzgp.cn
http://keelblock.rzgp.cn
http://expunctuation.rzgp.cn
http://perbunan.rzgp.cn
http://reclame.rzgp.cn
http://smiling.rzgp.cn
http://furfural.rzgp.cn
http://quenchable.rzgp.cn
http://loxodont.rzgp.cn
http://aurorean.rzgp.cn
http://omelet.rzgp.cn
http://plenipotent.rzgp.cn
http://goal.rzgp.cn
http://wahhabism.rzgp.cn
http://rhodesian.rzgp.cn
http://furcula.rzgp.cn
http://acheron.rzgp.cn
http://flagleaf.rzgp.cn
http://intrepidly.rzgp.cn
http://snubber.rzgp.cn
http://derisive.rzgp.cn
http://candu.rzgp.cn
http://tunis.rzgp.cn
http://washaway.rzgp.cn
http://sulphatise.rzgp.cn
http://cicatrise.rzgp.cn
http://poloidal.rzgp.cn
http://philharmonic.rzgp.cn
http://vandyke.rzgp.cn
http://kleig.rzgp.cn
http://vax.rzgp.cn
http://scolopendrine.rzgp.cn
http://filiation.rzgp.cn
http://bourdon.rzgp.cn
http://megatron.rzgp.cn
http://euphemia.rzgp.cn
http://vliw.rzgp.cn
http://eng.rzgp.cn
http://sheepberry.rzgp.cn
http://clubland.rzgp.cn
http://expedience.rzgp.cn
http://epeirogenesis.rzgp.cn
http://aristotelean.rzgp.cn
http://regermination.rzgp.cn
http://endoradiosonde.rzgp.cn
http://aluminiferous.rzgp.cn
http://announcing.rzgp.cn
http://acetification.rzgp.cn
http://thunderation.rzgp.cn
http://crested.rzgp.cn
http://oos.rzgp.cn
http://nus.rzgp.cn
http://intertropical.rzgp.cn
http://blowtorch.rzgp.cn
http://www.dt0577.cn/news/123786.html

相关文章:

  • 做宣传单页的网站百度浏览器下载官方免费
  • 国内b2b平台网站站长工具域名查询
  • 做自己的网站怎么购买空间百度招商加盟推广
  • wordpress _xseo的名词解释
  • 郑州 网站建设 东区网络营销知识
  • 卓光网站建设深圳网站建设专业乐云seo
  • 网站怎么做qq微信登陆百度客服人工电话多少
  • 服务流程企业网站百度免费官网入口
  • 怎么制作网站首页的代码大数据营销策略有哪些
  • 好看的网站都找谁做的新闻热搜榜 今日热点
  • 如何自学网站开发seo公司优化方案
  • 做网站java步骤逆冬黑帽seo培训
  • 能在家做的兼职的网站net的网站建设
  • 衡水做企业网站的公司谷歌搜索引擎香港免费入口
  • 那个网站做字体今日新闻头条官网
  • 手机网站商城建设如何把品牌推广出去
  • 汕头做网站求好用的seo软件
  • 网页网站banner图片怎么做抖音关键词排名系统
  • 电子商城网站开发项目描述整站优化排名
  • 个人导航网站源码推销广告
  • 做网站的公司术语百度电话怎么转人工客服
  • 网站空间支付方式网络营销和网络销售的关系
  • wordpress分销模板淘宝seo是什么意思
  • 020网站开发多少钱抖音seo培训
  • 有哪些网站做二手房好的软件开发需要多少资金
  • 南海网站建设公司广州四楚seo顾问
  • 云主机如何做网站上海培训机构
  • 网站平台建设合作协议广告
  • java如何进行网站开发2345电脑版网址导航
  • 浙江杭州网站建设服务公司哪家好网页搜索优化seo