0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

NXP FRDM-MCXA153 RT-Thread实践指南之UART介绍

恩智浦MCU加油站 来源:恩智浦MCU加油站 2024-10-18 10:03 次阅读

近期,我们即将推出一系列关于MCXA153 RTT的深度文章,这一系列将全面而细致地探讨该系列微控制器的多个核心功能模块,旨在为广大电子爱好者、工程师及研发人员提供宝贵的技术资源和见解。首当其冲的将是关于12C、SPI、FLASH、ADC、GPIO以及UART的精彩介绍。

MCXA153 RTT系列作为业界领先的微控制器产品,其强大的功能和广泛的应用领域一直备受瞩目。从高速数据传输的SPI接口,到精准模拟信号采集的ADC模块;从灵活多用的GPIO端口,到稳定可靠的UART通信协议,每一个功能模块都蕴含着丰富的技术内涵和实用价值。

我们诚邀各位读者持续关注这一系列文章,相信通过我们的深入剖析和实例演示,您将对MCXA153 RTT系列微控制器有更全面、更深入的了解,并在实际工作中受益匪浅。让我们一同探索MCXA153 RTT的无限可能,共同推动电子技术的发展与创新!

今天为大家带来NXP FRDM-MCXA153 RT-Thread实践指南1-UART介绍:

前言

本系列文章为根据RT-Thread官网在线文档整理整合后发布的恩智浦FRDM-MCXA153开发实践指南,旨在协助开发者快速熟悉掌握FRDM-MCXA153在RT-Thread下的环境搭建以及驱动程序的使用。本指南将详细介绍恩智浦FRDM-MCXA153的开发实践步骤,包括环境配置、驱动程序的使用等内容,希望对小伙伴有所帮助!

开发板介绍

FRDM-MCXA153是恩智浦(NXP)推出的一款紧凑且可扩展的开发平台,专为MCX A14和A15系列MCU的快速原型设计而打造。该开发板提供了丰富的行业标准接口,便于访问MCU的I/O、集成的开放标准串行接口以及外部闪存。板载MCU-Link调试器进一步简化了开发流程。

2.1 MCXA153微控制器核心特性

Arm Cortex-M33内核

128KB闪存

32kB SRAM

8kB ECC RAM, LPLUART、LPSPI、LPI2C、FS USBDMALDO

超低功耗设计,适用于广泛的应用场景

FRDM-MCXA153开发板外观

987c09f2-8ce4-11ef-a511-92fbcf53809c.png

2.2 开发板主要资源:

1. 微控制器

MCXA15x Arm Cortex-M33内核

128KB闪存

32kB SRAM

8kB ECC SRAM LPUART、LPSPI、LPI2C、FS USB、DMA和LDO

2.连接性

全速USB端口(Type-C接口,支持主机/设备模式)

高速USB Type-C接口

SPI/I2C/UART扩展接口(PMOD/mikroBUS、DNP)

Wi-Fi扩展接口(PMOD/mikroBUS、DNP)

3.调试

板载MCU-Link调试器(支持CMSIS-DAP)

JTAG/SWD接口

4. 传感器

P3T1755DPJ I3C/I2C温度传感器

5. 扩展选项

Arduino兼容排针

FRDM标准接口

FlexIO LCD接口

Pmod (DNP)

mikroBUS

RGB用户LED、复位、ISP和唤醒按钮

2.3 MCXA153特色功能:

支持MIPI I3C总线,为传感器连接提供高效解决方案

深度睡眠模式下可使用LPUART作为唤醒源(需使用FRO16k作为时钟源)

支持全速USB功能,可实现虚拟COM端口等应用

2.4 推荐开发环境:

MDK-Arm Microcontroller Development Kit (Keil) 5.33或更高版本

更多详细信息请参考NXP官方网站

RT-Thread UART实践

3.1 实验目标

rt-thread中 FRDM-MCXA153默认的serial驱动只支持默认uart0, 此实验主要增强串口驱动,增加uart2的支持, 并记录移植过程。

3.2 UART驱动架构

988e4734-8ce4-11ef-a511-92fbcf53809c.png

1. IO设备管理层: 向应用层提供统一接口(如rt_device_read、rt_device_write等)

2. 设备框架层(serial_v2.c):

对接IO设备管理层

为驱动层提供统一的UART操作接口(configure、control、putc、getc、transmit等)

3. 驱动层:

实现rt_hw_serial_register和rt_hw_serial_isr接口(drv_usartv2.c)

实现struct rt_uart_ops中定义的各种方法(drv_usart.c)

通过rt_hw_serial_register注册设备到系统

3.3 驱动开发流程

1. 扩展struct rt_serial_device

struct mcx_uart
{
struct rt_serial_device *serial;//设备信息和操作
LPUART_Type *uart_base;//串口句柄
IRQn_Type irqn;//中断
clock_name_t clock_src;//时钟选择
clock_attach_id_t clock_attach_id;
clock_ip_name_t clock_ip_name;
clock_div_name_t clock_div_name;
char*device_name;
};
2. 配置串口参数

9899a14c-8ce4-11ef-a511-92fbcf53809c.png

struct serial_configure
{
rt_uint32_t baud_rate; //比特率
rt_uint32_t data_bits :4;//数据长度
rt_uint32_t stop_bits :2;//停止位
rt_uint32_t parity :2;//校验位
rt_uint32_t bit_order :1;//小段发送
rt_uint32_t invert :1;//模式选择 正常模式 归零编码方式
rt_uint32_t bufsz :16;//buf大小
rt_uint32_t flowcontrol :1;//硬件流控制
rt_uint32_t reserved :5;//保留的位
};

3. 实现rt_uart_ops接口

struct rt_uart_ops
{
rt_err_t(*configure)(structrt_serial_device*serial,structserial_configure*cfg);
rt_err_t (*control)(struct rt_serial_device *serial, int cmd, void *arg);
int (*putc)(struct rt_serial_device *serial, char c);
int (*getc)(struct rt_serial_device *serial);
rt_ssize_t(*dma_transmit)(structrt_serial_device*serial,rt_uint8_t*buf, rt_size_tsize,intdirection);
};
3.4 关键接口实现

1. configure: 配置串口基本属性(波特率等)

2. control: 控制UART设备

#define RT_DEVICE_CTRL_RESUME 0x01 /**< resume device */
#define RT_DEVICE_CTRL_SUSPEND 0x02 /**< suspend device */
#define RT_DEVICE_CTRL_CONFIG 0x03 /**< configure device */
#define RT_DEVICE_CTRL_CLOSE 0x04 /**< close device */
#define RT_DEVICE_CTRL_NOTIFY_SET 0x05 /**< set notify func */
#define RT_DEVICE_CTRL_SET_INT 0x06 /**< set interrupt */
#define RT_DEVICE_CTRL_CLR_INT 0x07 /**< clear interrupt */
#define RT_DEVICE_CTRL_GET_INT 0x08 /**< get interrupt status */
#define RT_DEVICE_CTRL_CONSOLE_OFLAG 0x09 /**< get console open flag */
#define RT_DEVICE_CTRL_MASK

3.5 putc: 发送一个字符

LPUART_WriteByte(uart->uart_base, ch);

3.6 getc: 接收一个字符

if (kLPUART_RxDataRegFullInterruptEnable & LPUART_GetStatusFlags(uart->uart_base))
{
return LPUART_ReadByte(uart->uart_base);
}
3.7 实现步骤

1. 在pin_mux.c中初始化引脚

2. 注册和使用UART设备
#define UART2_NAME "uart2"
static rt_device_t uart2_serial;
char str[] = "hello rttread!
";
uart2_serial = rt_device_find(UART2_NAME);
rt_device_open(uart2_serial, RT_DEVICE_FLAG_INT_RX);
rt_device_write(uart2_serial,0,str,(sizeof(str)-1));

结语

本文详细介绍了如何在FRDM-MCXA153开发板上扩展RT-Thread的UART驱动支持。这不仅展示了RTThread优秀的可扩展性,也为开发者提供了实用的UART驱动开发参考。希望本文能够帮助更多开发者在恩智浦MCU平台上充分利用RT-Thread的强大功能。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 微控制器
    +关注

    关注

    48

    文章

    7382

    浏览量

    150573
  • 恩智浦
    +关注

    关注

    14

    文章

    5803

    浏览量

    105830
  • 开发板
    +关注

    关注

    25

    文章

    4829

    浏览量

    96757
  • RT-Thread
    +关注

    关注

    31

    文章

    1247

    浏览量

    39683
  • MCUs
    +关注

    关注

    0

    文章

    59

    浏览量

    3456

原文标题:MCXA153 RTT技术盛宴来袭,精彩不容错过!

文章出处:【微信号:NXP_SMART_HARDWARE,微信公众号:恩智浦MCU加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    RT-Thread记录(十一、UART设备—源码解析)

    一文带你深入理解 RT-Thread I/O 设备模型 — UART 设备源码分析。
    的头像 发表于 07-01 11:24 5317次阅读
    <b class='flag-5'>RT-Thread</b>记录(十一、<b class='flag-5'>UART</b>设备—源码解析)

    RT-Thread记录(十二、UART设备—使用测试)

    UART 设备开始学会使用 RT-Thread I/O 设备模型
    的头像 发表于 07-02 12:42 4848次阅读
    <b class='flag-5'>RT-Thread</b>记录(十二、<b class='flag-5'>UART</b>设备—使用测试)

    FRDM-MCXA153开发板的开箱体验

    FRDM-MCXA153 以及NXP 的全新logo。这种设计比较简洁明了,使开发者一眼便能识别其核心信息,为开发人员带来轻松上手、高效开发的体验。
    的头像 发表于 02-25 09:45 798次阅读
    <b class='flag-5'>FRDM-MCXA153</b>开发板的开箱体验

    RT-Thread编程指南

    RT-Thread编程指南——RT-Thread开发组(2015-03-31)。RT-Thread做为国内有较大影响力的开源实时操作系统,本文是RT
    发表于 11-26 16:06 0次下载

    2022 RT-Thread全球技术大会:萤石EZIOT SDK对RT-Thread的支持

    2022 RT-Thread全球技术大会:RT-Thread在摄像头及IoT设备上的实践经验分享
    的头像 发表于 05-27 11:08 1239次阅读
    2022 <b class='flag-5'>RT-Thread</b>全球技术大会:萤石EZIOT SDK对<b class='flag-5'>RT-Thread</b>的支持

    RT-Thread全球技术大会:RT-Thread对POSIX的实现情况介绍

    RT-Thread全球技术大会:RT-Thread对POSIX的实现情况介绍             审核编辑:彭静
    的头像 发表于 05-27 16:52 1804次阅读
    <b class='flag-5'>RT-Thread</b>全球技术大会:<b class='flag-5'>RT-Thread</b>对POSIX的实现情况<b class='flag-5'>介绍</b>

    RT-Thread文档_RT-Thread 简介

    RT-Thread文档_RT-Thread 简介
    发表于 02-22 18:22 5次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> 简介

    RT-Thread文档_RT-Thread 潘多拉 STM32L475 上手指南

    RT-Thread文档_RT-Thread 潘多拉 STM32L475 上手指南
    发表于 02-22 18:23 9次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> 潘多拉 STM32L475 上手<b class='flag-5'>指南</b>

    RT-Thread文档_Nordic BSP 上手指南

    RT-Thread文档_Nordic BSP 上手指南
    发表于 02-22 18:26 7次下载
    <b class='flag-5'>RT-Thread</b>文档_Nordic BSP 上手<b class='flag-5'>指南</b>

    RT-Thread文档_RT-Thread SMP 介绍与移植

    RT-Thread文档_RT-Thread SMP 介绍与移植
    发表于 02-22 18:31 9次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>RT-Thread</b> SMP <b class='flag-5'>介绍</b>与移植

    RT-Thread文档_UART 设备

    RT-Thread文档_UART 设备
    发表于 02-22 18:32 2次下载
    <b class='flag-5'>RT-Thread</b>文档_<b class='flag-5'>UART</b> 设备

    RT-Thread设备驱动开发指南》基础篇--以先楫bsp的hwtimer设备为例

    :对RT-thread以及设备框架进行介绍,再分别介绍基于IO框架中常用的外设设备,分别是UART、PIN、SPI/QSPI、HWTIMER、PWM、RTC、ADC、DAC
    的头像 发表于 02-24 08:16 1141次阅读
    《<b class='flag-5'>RT-Thread</b>设备驱动开发<b class='flag-5'>指南</b>》基础篇--以先楫bsp的hwtimer设备为例

    【上海】5月25日-基于恩智浦MCX N系列MCU结合RT-Thread的应用与实践 线下培训

    5月25号,RT-Thread将携手恩智浦共同举办基于恩智浦MCXN系列MCU结合RT-Thread的应用与实践线下培训。我们将为大家带来恩智浦MCXN系列MCU的详细介绍、精彩Dem
    的头像 发表于 05-13 18:19 582次阅读
    【上海】5月25日-基于恩智浦MCX N系列MCU结合<b class='flag-5'>RT-Thread</b>的应用与<b class='flag-5'>实践</b> 线下培训

    【本周六-上海】RT-Thread+NXP线下培训,快速上手新系列MCU

    5月25号,RT-Thread将携手恩智浦共同举办基于恩智浦MCXN系列MCU结合RT-Thread的应用与实践线下培训。我们将为大家带来恩智浦MCXN系列MCU的详细介绍、精彩Dem
    的头像 发表于 05-22 08:35 446次阅读
    【本周六-上海】<b class='flag-5'>RT-Thread+NXP</b>线下培训,快速上手新系列MCU

    NXP FRDM-MCXC444开发板在RT-Thread环境下的上手过程

    NXP FRDM-MCXC444开发板是一款基于MCX C444 MCU的高性能开发板,它集成了丰富的硬件资源和接口,支持快速原型设计。本文将为读者提供一份详细的RT-Thread上手指南
    的头像 发表于 10-12 11:51 155次阅读
    <b class='flag-5'>NXP</b> <b class='flag-5'>FRDM</b>-MCXC444开发板在<b class='flag-5'>RT-Thread</b>环境下的上手过程