Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
NXP 微控制器
【FRDM-MCXA156测评】使用CherryUSB开启虚拟串口尝试数据收发
发布于 2025-02-26 02:40:22 浏览:258
订阅该版
[tocm] # 前言 收到板子了,盒子的扣子费了点力气打开,打开一看,扑面而来的高级感,拿到手上可以感觉到分量很足,所有元件又整齐又紧凑,底部还有四个塑料柱子支撑防滑防静电,拿上附带的typec线立马插上电点个灯试试先 由于板子缺少了cherryusb必须的一些配置文件,所以需要做一点适配,适配的内容已经提交pr了,不久后应该就能直接用了,所以本文主要演示下FRDM-MCXA156使用cherryusb实现虚拟串口,通过串口可以发数据给虚拟串口 # FRDM-MCXA156开发板介绍   FRDM-MCXA156开发板基于 Arm® Cortex®-M33 核心,提供高达 1MB 的闪存 和 128KB 的 RAM,其中还包括 8KB 的 ECC 内存保护 同时支持CAN-FD, FlexIO, FS USB, I3C, LPLUART, LPSPI, LPI2C, DMA 和 LDO,支持板载的CMSIS-DAP以及JTAG/SWD 其中板子还带有一个精度为±0.5°C的精确温度传感器 # 开发环境 RT-Thread源码: https://github.com/RT-Thread/rt-thread RT-Thread Env工具: https://www.rt-thread.org/download.html 官方教程文档:[NXP FRDM-MCXA156](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/quick-start/frdm_mcxa156/quick-start) # 教程 - 打开env,来到bsp\nxp\mcx\mcxa\frdm-mcxa156目录下输入menuconfig回车  - 打开device模式  - 按照图片选项配置(其中USB Device Speed也可以用FS全速模式)  按下ESC返回,直到提示保存,按下Y 这样就配置好了 输入scons --target=mdk5 用keil打开该bsp下的project.uvprojx 虚拟串口发送数据到串口需要修改下代码 来到cdc_acm_template.c,修改成以下函数代码(去掉原本的注释,换成红色部分的代码)   然后来到cherryusb.c中  粘贴以下代码,这段实现的功能是让虚拟串口发送数据到终端串口(其中的buffer带了cache可能会有点问题,这里仅作为演示) ``` #include
#include
#include "stdio.h" #include "usb_dc.h" #include "usb_config.h" #include "usb_util.h" #ifdef RT_CHERRYUSB_DEVICE_TEMPLATE_CDC_ACM #define CDC_IN_EP 0x81 #define CDC_OUT_EP 0x02 #define CDC_INT_EP 0x83 extern volatile bool ep_tx_busy_flag; /* Register the EMAC device */ static int rt_hw_stm32_cherryusb_cdc_init(void) { extern void cdc_acm_init(uint8_t busid, uintptr_t reg_base); cdc_acm_init(0, 0x400A4000u); return 0; } INIT_COMPONENT_EXPORT(rt_hw_stm32_cherryusb_cdc_init); void cdc_acm_data_send(char *format, ...) { uint8_t str[2048]; uint32_t str_len; va_list arg; va_start(arg, format); vsprintf(str, format, arg); va_end(arg); str_len=strlen(str); ep_tx_busy_flag = true; usbd_ep_start_write(0, CDC_IN_EP, str, str_len); while (ep_tx_busy_flag) { } } static int cherry_usb_cdc_send(int argc, char *argv[]) { char str[100]; if (argc == 2) { rt_strncpy(str, argv[1], 100); rt_kprintf("%s",str); extern void cdc_acm_data_send(char *format, ...); cdc_acm_data_send("%s\r\n",str); } } MSH_CMD_EXPORT(cherry_usb_cdc_send, send the cdc data for test) #endif ``` 按照图片的步骤编译烧写程序到板子上  最后按下开发板的复位即可开始运行程序,板子上的USB FS就是虚拟串口,连接到电脑上 # 运行结果 将板子上的USB FS通过type-c线连接到电脑上,随着一声清脆的叮咚,就可以看到串口被正常识别到了  打开2个串口助手或者XCOM,一个选择板子的调试串口,一个选择虚拟串口 串口终端输入cherry_usb_cdc_send+文本可以发送数据到虚拟串口,反过来直接在虚拟串口发送文本也可以传到串口终端 可以看到两个串口助手之间可以互相传输数据 注意:通过串口终端发送数据前需要先连接虚拟串口,不然会异常  # 结语 在代码中可以这样调用虚拟串口打印数据,cdc_acm_data_send就类似于printf ``` extern void cdc_acm_data_send(char *format, ...); cdc_acm_data_send("Hello World\r\n"); ```
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
alight
该用户没有签名
文章
11
回答
1
被采纳
0
关注TA
发私信
相关文章
1
试贴-消灭0主题
2
LPC M4的一些资料
3
LPC4088的临时分支
4
lpc1788 ad 不稳定
5
1788 LCD控制器缓冲区字节问题
6
一起来学习LPC4088吧
7
上传LPC4088的realtouch主工程
8
RealBoard 4088预定帖 [第一批板子不多,预定提前结束]
9
晒RealBoard LPC4088开箱照啦,速带小板凳前来围观
10
4088主程序需要的SD卡资源
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
DMA
USB
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
FAL
RTC
rt-smart
I2C_IIC
cubemx
UART
ESP8266
WIZnet_W5500
BSP
ota在线升级
PWM
flash
packages_软件包
freemodbus
潘多拉开发板_Pandora
ADC
GD32
定时器
编译报错
flashDB
keil_MDK
socket
中断
rt_mq_消息队列_msg_queue
Debug
ulog
SFUD
msh
C++_cpp
at_device
本月问答贡献
出出啊
1524
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
818
个答案
179
次被采纳
crystal266
555
个答案
162
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
1
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
1
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部