S32K3系列MCAL配置详解之 UART(串口)基于EB tresos

文章详细介绍了UART串口通讯的配置过程,包括在UARTPORTMCU模块中的设置,选择硬件实例,配置波特率,设置时钟参考点,以及在MCU中使能UART模块和中断。此外,还提到了在S32DS中查找并配置相关引脚,以及使用Uart_AsyncReceive和Uart_AsyncSend两个函数进行收发操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UART

串口通讯(Serial Communication)是指外设和计算机间,通过数据信号线、地线等,按位进行传输数据的一种通讯方式。严格意义上来讲串口通讯并不属于AUTOSAR MCAL

模块依赖:UART PORT MCU

串口配置相对比较简单,首先在uartchannel选项卡下新增一个配置项,双击进入

时钟参考等会儿再配置

选择硬件instance为uart0,波特率9600

其他配置如图

接下来配置时钟参考点,可以看到uart0的时钟源为:APIS_PLAT_CLK

接下来打开MCU,在MCU添加一个APIS_PLAT_CLK的时钟参考点

然后回到配置界面选择该时钟参考点

然后我们需要在MCU的模式配置中使能uart0模块

我们使用的中断的方式,因此在Platform中将中断也使能一下

串口通信有两根信号线,一根TX 一根RX,首先要找到这两个引脚

打开S32DS,在引脚图上找到LPUART_0,左键单击即可显示与LPUART_0相关的引脚,我们选择PTA2和PTA3作为TX 和RX

打开PORT,配置两个引脚如下:

串口通信的收发函数分别为:

Uart_AsyncReceive(channelID,buffer,length);

Uart_AsyncSend(channelID,buffer,length);

    传入参数分别为通道逻辑ID,缓冲区,传输数据长度

### S32K3 微控制器 UART 波特率配置方法 在 S32K3 系列微控制器中,UART 的波特率设置是一个重要的环节,它决定了数据传输的速度和准确性。以下是关于如何配置 S32K3 中 LPUART(低功耗通用异步收发器)的波特率及相关参数的内容。 #### 配置环境准备 在开始配置之前,需确保开发环境中已加载必要的驱动程序和支持库。通过 S32DS 开发工具打开项目后,在引脚图上定位到 `LPUART_0` 并选择对应的 TX 和 RX 引脚(如 PTA2 和 PTA3)。这一步骤已在参考资料中提及[^1]。 #### 波特率计算原理 UART 的波特率由以下公式决定: \[ \text{Baud Rate} = \frac{\text{Bus Clock}}{\text{(OSR + 1)} \times \text{Prescaler Value}} \] 其中: - **Bus Clock**: 总线时钟频率。 - **OSR (Over Sampling Ratio)**: 过采样比率,默认值通常为 16 或者其他预定义值。 - **Prescaler Value**: 分频系数,用于调整最终的波特率。 具体实现过程中,可以通过修改寄存器中的分频值来达到目标波特率的要求。 #### 寄存器配置 对于 S32K3 而言,主要涉及以下几个关键寄存器: 1. **BAUD Register** 此寄存器控制波特率的具体数值。其字段包括 BAUD_M[9:0], OSR, 和 BAUDDIV_LPF。这些字段共同影响实际波特率的设定。 2. **CTRL Register** 控制功能使能状态以及停止位长度等选项。例如,启用发送/接收模式、奇偶校验等功能均在此处完成初始化。 3. **DATA Register** 数据缓冲区操作区域,负责存储待发送的数据或者接收到的信息包。 下面展示一段典型的 C 语言代码片段用来演示如何初始化并设置指定的波特率为 115200bps: ```c #include "uart.h" void init_uart(void){ uint32_t clock_speed = CLOCK_GetFreq(kCLOCK_BusClk); // 获取当前总线时钟速度 /* 计算合适的 prescale 值 */ uint16_t baud_prescaler = ((clock_speed / (16 * 115200)) - 1); /* 初始化 LPUART 模块 */ LPUART_Type* base = LPUART0; /* 设置波特率相关的寄存器 */ base->BAUD &= ~(LPUART_BAUD_OSR_MASK | LPUART_BAUD_MAEN1_MASK); base->BAUD |= LPUART_BAUD_OSR(16) | LPUART_BAUD_MBGEN_MASK; base->BAUD &= ~LPUART_BAUD_SBR_MASK; base->BAUD |= LPUART_BAUD_SBR(baud_prescaler >> 4); /* 启用发送与接收功能 */ base->CTRL |= LPUART_CTRL_TE_MASK | LPUART_CTRL_RE_MASK; } ``` 上述代码实现了基本的功能需求,并且遵循了官方文档推荐的最佳实践方式[^2]。 #### 主函数扩展支持 printf 功能 如果希望进一步简化调试过程,则可以引入标准输入输出流的支持机制。将自定义实现版本的 `printf.c` 及头文件加入工程目录下即可满足此目的。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值