近期,我們即將推出一系列關(guān)于MCXA153 RTT的深度文章,這一系列將全面而細(xì)致地探討該系列微控制器的多個核心功能模塊,旨在為廣大電子愛好者、工程師及研發(fā)人員提供寶貴的技術(shù)資源和見解。首當(dāng)其沖的將是關(guān)于12C、SPI、FLASH、ADC、GPIO以及UART的精彩介紹。
MCXA153 RTT系列作為業(yè)界領(lǐng)先的微控制器產(chǎn)品,其強(qiáng)大的功能和廣泛的應(yīng)用領(lǐng)域一直備受矚目。從高速數(shù)據(jù)傳輸?shù)腟PI接口,到精準(zhǔn)模擬信號采集的ADC模塊;從靈活多用的GPIO端口,到穩(wěn)定可靠的UART通信協(xié)議,每一個功能模塊都蘊(yùn)含著豐富的技術(shù)內(nèi)涵和實(shí)用價值。
我們誠邀各位讀者持續(xù)關(guān)注這一系列文章,相信通過我們的深入剖析和實(shí)例演示,您將對MCXA153 RTT系列微控制器有更全面、更深入的了解,并在實(shí)際工作中受益匪淺。讓我們一同探索MCXA153 RTT的無限可能,共同推動電子技術(shù)的發(fā)展與創(chuàng)新!
今天為大家?guī)?a target="_blank">NXP FRDM-MCXA153 RT-Thread實(shí)踐指南1-UART介紹:
前言
本系列文章為根據(jù)RT-Thread官網(wǎng)在線文檔整理整合后發(fā)布的恩智浦FRDM-MCXA153開發(fā)實(shí)踐指南,旨在協(xié)助開發(fā)者快速熟悉掌握FRDM-MCXA153在RT-Thread下的環(huán)境搭建以及驅(qū)動程序的使用。本指南將詳細(xì)介紹恩智浦FRDM-MCXA153的開發(fā)實(shí)踐步驟,包括環(huán)境配置、驅(qū)動程序的使用等內(nèi)容,希望對小伙伴有所幫助!
開發(fā)板介紹
FRDM-MCXA153是恩智浦(NXP)推出的一款緊湊且可擴(kuò)展的開發(fā)平臺,專為MCX A14和A15系列MCU的快速原型設(shè)計(jì)而打造。該開發(fā)板提供了豐富的行業(yè)標(biāo)準(zhǔn)接口,便于訪問MCU的I/O、集成的開放標(biāo)準(zhǔn)串行接口以及外部閃存。板載MCU-Link調(diào)試器進(jìn)一步簡化了開發(fā)流程。
2.1 MCXA153微控制器核心特性
Arm Cortex-M33內(nèi)核
128KB閃存
32kB SRAM
8kB ECC RAM, LPLUART、LPSPI、LPI2C、FS USB、DMA和LDO
超低功耗設(shè)計(jì),適用于廣泛的應(yīng)用場景
FRDM-MCXA153開發(fā)板外觀
2.2 開發(fā)板主要資源:
1. 微控制器
MCXA15x Arm Cortex-M33內(nèi)核
128KB閃存
32kB SRAM
8kB ECC SRAM LPUART、LPSPI、LPI2C、FS USB、DMA和LDO
2.連接性
全速USB端口(Type-C接口,支持主機(jī)/設(shè)備模式)
高速USB Type-C接口
SPI/I2C/UART擴(kuò)展接口(PMOD/mikroBUS、DNP)
Wi-Fi擴(kuò)展接口(PMOD/mikroBUS、DNP)
3.調(diào)試
板載MCU-Link調(diào)試器(支持CMSIS-DAP)
JTAG/SWD接口
4. 傳感器
P3T1755DPJ I3C/I2C溫度傳感器
5. 擴(kuò)展選項(xiàng)
FRDM標(biāo)準(zhǔn)接口
FlexIO LCD接口
Pmod (DNP)
mikroBUS
RGB用戶LED、復(fù)位、ISP和喚醒按鈕
2.3 MCXA153特色功能:
支持MIPI I3C總線,為傳感器連接提供高效解決方案
深度睡眠模式下可使用LPUART作為喚醒源(需使用FRO16k作為時鐘源)
支持全速USB功能,可實(shí)現(xiàn)虛擬COM端口等應(yīng)用
2.4 推薦開發(fā)環(huán)境:
MDK-Arm Microcontroller Development Kit (Keil) 5.33或更高版本
更多詳細(xì)信息請參考NXP官方網(wǎng)站
RT-Thread UART實(shí)踐
3.1 實(shí)驗(yàn)?zāi)繕?biāo)
rt-thread中 FRDM-MCXA153默認(rèn)的serial驅(qū)動只支持默認(rèn)uart0, 此實(shí)驗(yàn)主要增強(qiáng)串口驅(qū)動,增加uart2的支持, 并記錄移植過程。
3.2 UART驅(qū)動架構(gòu)
1. IO設(shè)備管理層: 向應(yīng)用層提供統(tǒng)一接口(如rt_device_read、rt_device_write等)
2. 設(shè)備框架層(serial_v2.c):
對接IO設(shè)備管理層
為驅(qū)動層提供統(tǒng)一的UART操作接口(configure、control、putc、getc、transmit等)
3. 驅(qū)動層:
實(shí)現(xiàn)rt_hw_serial_register和rt_hw_serial_isr接口(drv_usartv2.c)
實(shí)現(xiàn)struct rt_uart_ops中定義的各種方法(drv_usart.c)
通過rt_hw_serial_register注冊設(shè)備到系統(tǒng)
3.3 驅(qū)動開發(fā)流程
1. 擴(kuò)展struct rt_serial_device
struct mcx_uart { struct rt_serial_device *serial;//設(shè)備信息和操作 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. 配置串口參數(shù)
struct serial_configure { rt_uint32_t baud_rate; //比特率 rt_uint32_t data_bits :4;//數(shù)據(jù)長度 rt_uint32_t stop_bits :2;//停止位 rt_uint32_t parity :2;//校驗(yàn)位 rt_uint32_t bit_order :1;//小段發(fā)送 rt_uint32_t invert :1;//模式選擇 正常模式 歸零編碼方式 rt_uint32_t bufsz :16;//buf大小 rt_uint32_t flowcontrol :1;//硬件流控制 rt_uint32_t reserved :5;//保留的位 };
3. 實(shí)現(xiàn)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 關(guān)鍵接口實(shí)現(xiàn)
1. configure: 配置串口基本屬性(波特率等)
2. control: 控制UART設(shè)備
#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: 發(fā)送一個字符
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 實(shí)現(xiàn)步驟
1. 在pin_mux.c中初始化引腳
2. 注冊和使用UART設(shè)備
#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));
結(jié)語
本文詳細(xì)介紹了如何在FRDM-MCXA153開發(fā)板上擴(kuò)展RT-Thread的UART驅(qū)動支持。這不僅展示了RTThread優(yōu)秀的可擴(kuò)展性,也為開發(fā)者提供了實(shí)用的UART驅(qū)動開發(fā)參考。希望本文能夠幫助更多開發(fā)者在恩智浦MCU平臺上充分利用RT-Thread的強(qiáng)大功能。
-
微控制器
+關(guān)注
關(guān)注
48文章
7552瀏覽量
151417 -
恩智浦
+關(guān)注
關(guān)注
14文章
5860瀏覽量
107457 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5050瀏覽量
97456 -
RT-Thread
+關(guān)注
關(guān)注
31文章
1289瀏覽量
40124 -
MCUs
+關(guān)注
關(guān)注
0文章
59瀏覽量
3485
原文標(biāo)題:MCXA153 RTT技術(shù)盛宴來襲,精彩不容錯過!
文章出處:【微信號:NXP_SMART_HARDWARE,微信公眾號:恩智浦MCU加油站】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論