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

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

3天内不再提示

【S32K 进阶之旅】 LPUART 模块的例程解读

大大通 2023-04-06 16:43 次阅读

上篇【S32K 进阶之旅】系列博文介绍了 S32K 中的 LPUART 模块,并以 S32DS 开发环境中自带的例程 LPUART_s32k144 为例,使用 S32K144-EVB 评估板烧录进行了演示。为了帮助新手快速的入门 LPUART 模块,本文将逐句解析例程 LPUART_s32k144

一、 串口初始化:void LPUART_init(void)

1. 开启时钟


初始化确保时钟关闭。

查询 S32K144 参考手册,设置 LPUART 时钟源为 SOSCDIV2_CLK(0b001),并使能时钟。


2. LPUART1->BAUD:LPUART波特率寄存器

用于配置串口波特率。




下图为 32 位寄存器 BAUD 的图表:

LPUART BAUD寄存器

通过查询 LPUART BAUD 寄存器位功能可知:波特率=baud clock / ((OSR+1) * SBR)。baud clock为 SOSCDIV2_CLK= 8 MHz,OSR 默认值为F=15,则可以算出波特率为 9600 时,SBR的值约为 52,即 0x34。不使用BAUD寄存器的其他功能,则给 BAUD 寄存器赋值0x0F000034。


3. LPUART->CTRL:LPUART 控制寄存器

控制 LPUART 系统的多种可选特性,只有在发送器和接收器被禁止时才可以更改。



根据下图32 位寄存器 CTRL 的图表可知:TE=1,RE=1(0x000C0000)


LPUART CTRL寄存器

查寄存器字段知:设置收发使能,8-bit数据位,1-bit停止位,无校验位,不使用中断功能。

二、 功能函数

1. 发送单字符:void LPUART1_transmit_char(char send)

下图为 32 位寄存器 STAT 的图表:


LPUART STAT寄存器

已知:LPUART_STAT_TDRE_MASK=0x800000u,LPUART_STAT_TDRE_SHIFT=23u

函数功能:在发送器缓冲器空的时候,将 send 代表的数据放入 LPUART->DATA 中发送。


2. 字符串发送函数:void LPUART1_transmit_string(char data_string[])

函数功能:通过循环调用 LPUART1_transmit_char函数发送单个字符直到检测到字符串结尾‘\0’,来实现发送字符串的功能。

3. 单字符接收函数:char LPUART1_receive_char(void)

已知:LPUART_STAT_RDRF_MASK=0x200000u;LPUART_STAT_RDRF_SHIFT=21u。

函数功能:等待接收器缓冲器满的时候,读取 LPUART->DATA 的数据赋值给 receive,并返回 receive 的值。



3. 单字符接收并回传函数:void LPUART1_receive_and_echo_char(void)

函数功能:使用 LPUART1_receive_char 函数接收 send代表的字符,并通过LPUART1_transmit_char 函数重新发送。

注: “\r”是回车,“\n”是换行, Windows 系统中每行结尾应按 <回车><换行>的顺序,即 “\r\n”。需要将例程中所有的“\n\r”改为“\r\n”,否则串口工具显示输出字符串将不会换行,出现错误格式。

三、 初始化引脚:void PORT_init (void)


函数功能:使能 PORTC 时钟,配置引脚复用 PTC6为接收引脚,PTC7 为发送引脚。

注:各引脚功能具体查询 S32K144 参考手册。

ALT1

ALT2

ALT3

ALT4

ALT5

ALT6

PTC7

LPUART1_TX

CAN1_TX

FTM3_CH3

FTM1_QD_PHA

PTC6

LPUART1_RX

CAN1_RX

FTM3_CH2

FTM1_QD_PHB

四、 主循环:

函数功能:发送一个输入提示字符‘>’,等待主机回传,并将收到的字符再次回传。

五、 参考文档

[1] S32K144 Reference Manual.pdf,NXP

[2] S32K1xx Series Cookbook.pdf,NXP

[3] S32K1xx Series Reference Manual.pdf,NXP

[4] S32K144_IO_Signal_Description_Input_Multiplexing,NXP

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

    关注

    60

    文章

    1214

    浏览量

    177249
  • 汽车电子
    +关注

    关注

    2999

    文章

    7455

    浏览量

    161593
  • S32k144
    +关注

    关注

    1

    文章

    6

    浏览量

    1797
收藏 人收藏

    评论

    相关推荐

    全志R128 SDK HAL 模块开发指南之 LPUART

    LPUART 模块介绍 LPUART 驱动主要实现设备驱动的底层细节,并为上层提供一套标准的 API 接口以供使用。 模块配置 配置路径如下: Kernel Setup --->
    发表于 02-02 10:04

    IGBT和模块的标准体系解读

    IGBT和模块的标准体系解读
    的头像 发表于 12-14 11:38 594次阅读
    IGBT和<b class='flag-5'>模块</b>的标准体系<b class='flag-5'>解读</b>

    在哪里可以找到在s32k中配置回调函数的例子呢?

    嗨社区我需要测量 ptd0、pte11、ptd1 的频率,然后我尝试配置所有通道 iam 配置一个通道,但我配置了输入,它必须调用回调函数它没有调用任何回调函数我去了 ic_pal 示例 int该示例不会调用回调函数 那么我在哪里可以找到在s32k中配置回调函数的例子呢?
    发表于 06-08 07:35

    如何将编码器与s32k连接起来并在freemaster中显示结果?

    没有改变。 我将添加一些我的设置和 slx 文件的图片。谁能帮我将编码器与 s32k 连接起来并在 freemaster 中显示结果。谢谢 正余弦编码器有 4 个引脚输出(正余弦 5v 和 GND
    发表于 06-07 06:31

    求分享s32k116的示例链接描述文件和启动代码

    我已经安装了一个autosar包“SW32K1_RTD_4.4_1.0.1”,在每个插件中,例如“Adc_TS_T40D2M10I1R0”,有一个名为examples的文件夹,每个s32k衍生品
    发表于 06-05 13:09

    S32K144的MBD工具箱,使用Simulink进行仿真时调用的库与生成嵌入式代码时调用的静态库不同?

    我在使用NXP的MBDT时,不仅可以在Simulink中使用它的模块进行仿真,还可以生成S32K的代码,然后在MBDT的安装目录下看到三个库文件。令我困扰的是,使用 Simulink 进行仿真时调用的库与生成嵌入式代码时调用的静态库不同。
    发表于 06-01 06:55

    S32K3在ESD测试时保持运行,PLL_LOL时cpu时钟可以切换到FIRC吗?

    。 我们试图通过改变GM_SET寄存器来提高晶振强度,但没有任何改善。而我们尝试设置DCMRWP3[9]为1,当PLL_LOL时S32K不会复位,但mcu会停止,只有复位才能恢复。 我们需要 S32K3 在 ESD 测试时保持运行。PLL_LOL 时 cpu 时钟可以切换
    发表于 05-30 06:49

    假设我们有QM、ASILB、ASILD三个不同安全级别的软件组件,建议使用多少个S32K CORE?

    1、假设在S32K3的一个CORE中,我们使用MPU按照ASIL级别划分软件组件。 是否仍然无法完全避免连锁故障等问题,原因何在?能否利用RXDC模块S32K内部资源进行分区,解决上述问题
    发表于 05-24 10:07

    下载了S32K的EB Tresos Studio,准备配置MCAL,无法激活是怎么回事?

    我下载了S32K的EB Tresos Studio,准备配置MCAL,但是我用下载界面给的激活码无法激活,能帮忙指点一下吗?
    发表于 05-22 06:09

    S32K144中未检测到LIN中断的原因?

    我们正在尝试将 S32K144 配置为从属配置。 1. LPUART2 配置为 19200 Kb/s 的波特率。 2. 在 LPUART2 中,Tx 和 Rx 通过传输虚拟数据进行测试
    发表于 05-18 07:57

    S32K144 EVB复位LED持续亮起是怎么回事?

    我将 MBDT V4.2 与 MATLAB 2019b 结合使用,并尝试为 S32K144 EVB 运行 GPIO S32K 示例。我一连接电路板,红色 LED 就一直亮着,两个绿色 LED 也亮着
    发表于 05-17 06:35

    无法从LPUART Tx线路获得任何预期的数据是怎么回事?

    我想将 LPUART 接口配置为7 个数据位、偶校验、1 个停止位、无流量控制、9600波特率。 (S32k144EVB-Q100 黄卡,LPUART0 实例,PTB0-Rx PTB1-Tx
    发表于 05-16 08:29

    如何在S32K的simulink中添加FreeRTOS?

    如何在 S32K 的 simulink 中添加 FreeRTOS?工具箱中没有 FreeRTOS 模块
    发表于 05-09 06:52

    具有ID范围的S32K144 CAN如何配置?

    我将 MB0 的 CAN 通信配置为 ID 为 511 的 Tx 缓冲区,将 MB4 配置为 ID 为 555 的 Rx 缓冲区。 现在我需要使用 100 到 108 的 ID 范围来接收数据。你能帮我安排一下S32K DS代码吗?
    发表于 05-09 06:19

    S32K 进阶之旅】Interrupt 模块介绍与应用

    S32K144 Interrupt介绍; S32DS Interrupt例程简介与应用; 例程代码解释以及寄存器介绍
    的头像 发表于 05-04 15:29 1123次阅读
    【<b class='flag-5'>S32K</b> <b class='flag-5'>进阶</b><b class='flag-5'>之旅</b>】Interrupt <b class='flag-5'>模块</b>介绍与应用