将 USB 信号转换为 UART,便于在 POS 终端、游戏控制器和数据记录仪等设备中轻松集成 USB 连接功能
A
A
硬件概览
它是如何工作的?
USB UART 6 Click 基于 Silicon Labs 的 CP2102C USB-转-UART 桥接芯片,为工程师提供了一种简单方式将 USB 信号转换为 UART 串行通信。CP2102C 在单一封装内集成了 USB 2.0 全速功能控制器、USB 收发器、振荡器及通用异步收发器(UART),无需外部元件即可消除固件复杂度,使开发者能够以最少的开发时间为应用增加 USB 功能。凭借这些特性,USB UART 6 Click 是将 RS-232 设计升级至 USB 的理想选择,也适用于 POS 终端、USB 加密狗、游戏控制器、医疗设备和数据记录仪等需要高速 USB-转-UART 通信的应用场景。其集成的 USB 收发器无需外部电阻,并包含 512 字节发送与接收缓冲区,内部 48MHz 振荡器也免去了外部晶振需求。设备支持 USB 2.0 全速(12Mbps)运行,且兼容标准 CDC 驱动程序,无需自定义驱动,即可简化在多种操作系统下的集成。该 Click 板采用 MIKROE 新推出的 “Click Snap” 独特设计格式。与标准版 Click 板不同,该设
计允许主传感器/IC/模块区域通过断开 PCB 独立使用,从而为实现带来更多可能性。借助 Snap 功能,CP2102C 可通过标记为 1-8 的引脚直接访问信号实现自主运行;Snap 部分还包含指定的固定螺丝孔位,用户可将其稳固安装在目标位置。该板通过标准 UART RX/TX 引脚与主机 MCU 建立通信,并通过 CTS 和 RTS 引脚实现硬件流控。默认通信速率为 115200bps,确保高效数据交换。板上还配有黄色 SUS LED 指示灯,当总线检测到挂起信号时显示 CP2102C 进入挂起模式;进入挂起状态时,CP2102C 会同时断言 USB Suspend 和 Resume 信号,用于自身及外部电路的电源管理;在 USB 枚举期间设备复位后,挂起信号也会保持断言直至配置完成。为了在 Snap 区域有限空间内提供完整功能并全面访问 CP2102C 信号,板上将 IC 的部分引脚引至未焊接的 1×8 排针,以便设计者可接入复位、USB 挂起(SUS)信号,以及 RI、DCD、DTR、DSR 等调制
解调器控制信号(振铃指示、载波检测、终端就绪、数据集就绪),确保所有关键控制与状态线在高级配置、调试和定制应用中可用。为管理 CP2102C IC 的工作,USB UART 6 Click 集成了 Analog Devices 的 MAX40200,通过 EN 引脚实现传感器的使能或禁用。该 Click 板仅支持 3.3V 逻辑电平工作;此外,可通过 Snap 区域的 VIO SEL 跳线选择逻辑电压源,用户可在 3.3V mikroBUS 电源轨和通过 VDD 引脚外部供电(3V\~3.6V 范围)之间切换,确保多种系统供电配置下的灵活性。Snap 区域还设有 VRG SEL 跳线,可选择 IC 内部 5V 稳压器的电源来源。当使用内部稳压器并处于 USB 连接激活(自供电模式)时,VDD 引脚提供 3.3V 输出电压,便于外部使用或监控。在使用不同逻辑电平的 MCU 之前,板上必须进行适当的电平转换。此外,USB UART 6 Click 提供配套软件库,包含易用函数与示例代码,可作为后续开发的参考。
功能概述
开发板
Nucleo-64搭载STM32L073RZ MCU提供了一个经济实惠且灵活的平台,供开发人员探索新的想法并原型化其设计。该板利用了STM32微控制器的多功能性,使用户能够为其项目选择性能和功耗之间的最佳平衡。它采用LQFP64封装的STM32微控制器,并包括一些必要的组件,例如用户LED,可以同时作为ARDUINO®信号使用,以及用户和复位按钮,以及用于精准定时操作的32.768kHz晶体振荡器。设计时考虑了扩展性和灵活性,Nucleo-64板具有ARDUINO®
Uno V3扩展连接器和ST morpho扩展引脚标头,为全面项目集成提供了对STM32 I/O的完全访问权限。电源选项具有适应性,支持ST-LINK USB VBUS或外部电源,确保在各种开发环境中的适应性。该板还配备了一个内置的ST-LINK调试器/编程器,具有USB重新枚举功能,简化了编程和调试过程。此外,该板还设计了外部SMPS,以实现有效的Vcore逻辑供电,支持USB设备全速或USB SNK/UFP全速,以及内置的加密功能,增强了项目的功耗效率和安全性。通过专用
连接器提供了额外的连接性,用于外部SMPS实验、ST-LINK的USB连接器和MIPI®调试连接器,扩展了硬件接口和实验的可能性。开发人员将通过STM32Cube MCU软件包中全面的免费软件库和示例得到广泛的支持。这与与各种集成开发环境(IDE)的兼容性相结合,包括IAR Embedded Workbench®、MDK-ARM和STM32CubeIDE,确保了平稳高效的开发体验,使用户能够充分发挥Nucleo-64板在其项目中的功能。
微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M0
MCU 内存 (KB)
192
硅供应商
STMicroelectronics
引脚数
64
RAM (字节)
20480
你完善了我!
配件
Click Shield for Nucleo-64 配备了两个专有的 mikroBUS™ 插座,使得所有的 Click board™ 设备都可以轻松地与 STM32 Nucleo-64 开发板连接。这样,Mikroe 允许其用户从不断增长的 Click boards™ 范围中添加任何功能,如 WiFi、GSM、GPS、蓝牙、ZigBee、环境传感器、LED、语音识别、电机控制、运动传感器等。您可以使用超过 1537 个 Click boards™,这些 Click boards™ 可以堆叠和集成。STM32 Nucleo-64 开发板基于 64 引脚封装的微控制器,采用 32 位 MCU,配备 ARM Cortex M4 处理器,运行速度为 84MHz,具有 512Kb Flash 和 96KB SRAM,分为两个区域,顶部区域代表 ST-Link/V2 调试器和编程器,而底部区域是一个实际的开发板。通过 USB 连接方便地控制和供电这些板子,以便直接对 Nucleo-64 开发板进行编程和高效调试,其中还需要额外的 USB 线连接到板子上的 USB 迷你接口。大多数 STM32 微控制器引脚都连接到了板子左右边缘的 IO 引脚上,然后连接到两个现有的 mikroBUS™ 插座上。该 Click Shield 还有几个开关,用于选择 mikroBUS™ 插座上模拟信号的逻辑电平和 mikroBUS™ 插座本身的逻辑电压电平。此外,用户还可以通过现有的双向电平转换器,使用任何 Click board™,无论 Click board™ 是否在 3.3V 或 5V 逻辑电压电平下运行。一旦将 STM32 Nucleo-64 开发板与我们的 Click Shield for Nucleo-64 连接,您就可以访问数百个工作于 3.3V 或 5V 逻辑电压电平的 Click boards™。
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
软件支持
库描述
USB UART 6 Click 演示应用程序使用 NECTO Studio开发,确保与 mikroSDK 的开源库和工具兼容。该演示设计为即插即用,可与所有具有 mikroBUS™ 插座的 开发板、入门板和 mikromedia 板完全兼容,用于快速实现和测试。
示例描述
本示例演示了 USB UART 6 Click 开发板作为 USB-转-UART 桥接器的功能。它可在 USB 主机与 UART 设备之间实现双向通信,通过在 USB 与 UART 接口间转发接收到的数据来完成数据交互。
关键功能:
usbuart6_cfg_setup- 此函数将 Click 配置结构体初始化为默认值。usbuart6_init- 此函数初始化该 Click 开发板所需的全部引脚和外设。usbuart6_generic_write- 此函数通过 UART 串行接口写入指定数量的数据字节。usbuart6_generic_read- 此函数通过 UART 串行接口读取指定数量的数据字节。usbuart6_enable_device- 此函数通过将 EN 引脚设置为高电平来启用设备。
应用初始化
初始化日志记录器和 Click 开发板,并启用设备。
应用任务
持续从一个 UART 接口读取数据并转发到另一个接口,实现无缝的 USB 与 UART 数据双向传输。
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* @file main.c
* @brief USB UART 6 Click Example.
*
* # Description
* This example demonstrates the USB UART 6 Click board's ability to act as a USB-to-UART bridge.
* It enables bidirectional communication between a USB host and a UART device by forwarding
* received data between the USB and UART interfaces.
*
* The demo application is composed of two sections :
*
* ## Application Init
* Initializes the logger and the Click board and enables the device.
*
* ## Application Task
* Continuously reads the data from one UART interface and forwards it to the other,
* enabling seamless USB to UART data transfer and vice versa.
*
* @note
* Make sure the USB UART 6 Click is properly connected to a USB host and the
* mikroBUS socket, and that both UART interfaces are configured for the same baud rate.
*
* @author Stefan Filipovic
*
*/
#include "board.h"
#include "log.h"
#include "usbuart6.h"
#define PROCESS_BUFFER_SIZE 200
static usbuart6_t usbuart6;
static log_t logger;
static uint8_t app_buf[ PROCESS_BUFFER_SIZE ] = { 0 };
static int32_t app_buf_len = 0;
void application_init ( void )
{
log_cfg_t log_cfg; /**< Logger config object. */
usbuart6_cfg_t usbuart6_cfg; /**< Click config object. */
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
usbuart6_cfg_setup( &usbuart6_cfg );
USBUART6_MAP_MIKROBUS( usbuart6_cfg, MIKROBUS_1 );
if ( UART_ERROR == usbuart6_init( &usbuart6, &usbuart6_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
usbuart6_enable_device ( &usbuart6 );
log_info( &logger, " Application Task " );
Delay_ms ( 100 );
// Dummy read to enable RX interrupts
uart_read( &usbuart6.uart, app_buf, 1 );
uart_read( &logger.uart, app_buf, 1 );
}
void application_task ( void )
{
if ( uart_bytes_available ( &logger.uart ) )
{
app_buf_len = uart_read( &logger.uart, app_buf, PROCESS_BUFFER_SIZE );
if ( app_buf_len > 0 )
{
uart_write ( &usbuart6.uart, app_buf, app_buf_len );
memset( app_buf, 0, app_buf_len );
app_buf_len = 0;
}
}
if ( uart_bytes_available ( &usbuart6.uart ) )
{
app_buf_len = uart_read( &usbuart6.uart, app_buf, PROCESS_BUFFER_SIZE );
if ( app_buf_len > 0 )
{
uart_write ( &logger.uart, app_buf, app_buf_len );
memset( app_buf, 0, app_buf_len );
app_buf_len = 0;
}
}
}
int main ( void )
{
/* Do not remove this line or clock might not be set correctly. */
#ifdef PREINIT_SUPPORTED
preinit();
#endif
application_init( );
for ( ; ; )
{
application_task( );
}
return 0;
}
// ------------------------------------------------------------------------ END
额外支持
资源
类别:通用串行总线

































