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

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

3天内不再提示

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

大大通 ? 2023-03-29 14:27 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、 S32K144 LPUART 介绍

1. LPUART 模块特性

低功耗通用异步收发器(Low Power Universal Asynchronous Receiver/Transmitter, LPUART)支持带有DMA 接口功能的基本UART,和x4 到x32 的过采样波特率,支持LIN 主从操作。该模块在Stop 和VLPS 模式提供的时钟保持启用时,仍可保持功能。

在S32K144 中有如下三个LPUART 模块:



S32K144 LPUART模块具备以下特点:

  • 全双工,标准的非归零(non-return-to-zero, NRZ)格式
  • 编程的波特率(13 位数模转换器)与可配置的比率从x4 到x32 的过采样
  • 发送和接受波特率可以异步操作到总线时钟:
    • 波特率可以配置独立的总线时钟频率
    • 支持在Stop 模式下操作
  • 中断,DMA 或者拉起操作
    • 发送数据寄存器为空,发送完成
    • 接收数据寄存器满
    • 接收溢出,奇偶校验错误,帧错误,噪声干扰
    • 闲置接收器检测
    • 接受引脚边缘有效
    • 支持LIN的中断检测
    • 接收数据匹配
  • 硬件奇偶校验生成和检查
  • 可编程的7-bit,8-bit,9-bit 或10-bit 的字符长度
  • 可编程的1-bit 或者2-bit 停止位
  • 3 种接收器唤醒方法:
    • 闲置线唤醒
    • 地址标记唤醒
    • 接收数据匹配
  • 自动地址匹配,减少中断服务程序(ISR)开销
    • 地址标志匹配
    • 闲置线地址匹配
    • 地址匹配开始和结束
  • 可选的13-bit 终止字符生成/11-bit 终止字符检测
  • 可配置的空闲长度检测,支持1, 2, 4, 8, 16, 32, 64 或128 空闲字符
  • 可选的发送器输出和接收器输入极性
  • 硬件流控制支持RTS(request to send)和CTS(clear to send)信号
  • 可选的4 归零变换(return-to-zero-inverted, RZI)格式,可编程脉宽
  • 独立的FIFO 收发结构:
    • 可独立配置水印的收发请求
    • 如果接收FIFO 不是空的,在可配置的闲置字符长度后,可以选择让接收器声明请求

2. LPUART运行模式

S32K144运行模式

工作状态

Run Mode

正常工作

Stop Mode

时钟使能则保留功能(可产生中断)

Wait Mode

等待模式(DOZEEN 位置1时)

Debug Mode

保留功能


3. LPUART 发送/接收器结构框图


LPUART 发送器部分示意图



LPUART 接收器部分示意图

4. LPUART 寄存器映射

以下寄存器用来控制波特率,选择LPUART 选项,报告LPUART 状态,收发数据等。访问有效内存映射之外的地址将产生总线错误。查询寄存器请参考《S32K144 Reference Manual,Page -1092》



LPUART寄存器映射地址


二、 S32DS LPUART 例程简介与应用

下面我们以S32DS 开发环境中自带的例程LPUART_s32k144为例。

1. 例程导入

  • 打开S32 Design Studio,点击:“File”->“New”->“S32DS Project from Example”。



  • 在弹出的窗口选取S32K144 目录下的LPUART_s32k144 例程,点击“Finish”。


  • 点击左上角“Build”按钮,编译例程。



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


2. 例程简介

  • LPUART 例程介绍

此例程实现了一个简单的UART 9600 波特率的数据从COM 端口传到电脑。不包含FIFOs 中断和DMA。在此评估板上可以使用OpenSDA(micro USB),板上UART 信号可以通过USB 接口传输。通过串口调试工具(例如安信可串口调试助手)可以发送并查看接收到的信息。

  • 例程框图


3. 例程设计思路

  • 初始化系统晶振(SOSC)为8MHz,系统时钟为80MHz,RUN 模式80MHz
  • 禁止看门狗
  • 初始化端口引脚:
  • PORT C模块时钟使能
  • PTC6,PTC7:配置为LPUART_RX,LPUART_TX
  • 初始化LPUART1:
  • 使能时钟源为SOSC_DIV2_CLK
  • 配置波特率:9600 波特,1 个停止位,8 个字符位
  • 不使用终端,DMA 或匹配特征
  • 配置LPUART1 控制:使能发送器,接收器,无极性,8 位字符
  • 发送两个字符串:
  • 每个字符串发送的判断:如果发送数据准备状态位置1,将字符写入数据寄存器
  • 回传收到的字符:
  • 发送提示字符'>'
  • 等到RDRF 标志位被置1,然后读取字符
  • 发送回读取到的字符

三、 例程效果演示

  1. 我们使用S32K144 EVB (LQFP-100)评估板连接电脑,接线方式如图。OpenSDA(micro USB)串口通信


  1. 注意哪个COM 端口是OpenSDA,例如:COM4。注:串口号可在“计算机管理”->“设备管理器”->“端口”中查看。


  1. 打开串口通信工具,根据例程设置“串口号:COM4”“波特率:9600”,点击打开串口。



  1. 点击“Debug”按钮。进入例程Debug页面。
  1. 点击运行程序
  1. 按钮,在终端模拟器中“发送”中输入任意单个字符,观察接受窗口数据内容。S32K144 EVB开发板接收到输入的单个字符并回传。

四、 参考文献

[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

[5] PS32K144HFT0VLLT-datasheet.pdf,NXP

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

    关注

    146

    文章

    18067

    浏览量

    370704
  • NXP
    NXP
    +关注

    关注

    61

    文章

    1357

    浏览量

    190214
  • 恩智浦
    +关注

    关注

    14

    文章

    5996

    浏览量

    119720
  • S32k144
    +关注

    关注

    1

    文章

    9

    浏览量

    2080
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    简述K3SK8S的区别

    K3s 是CNCF 认证的 Kubernetes 发行版和Sandbox项目,专为低资源环境而设计。由 Rancher Labs 维护着 K3s
    的头像 发表于 04-18 10:27 ?814次阅读

    为什么无法使用Lpuart_Uart_Ip_ 发送任何数据回调中的AsyncSend?

    使用 Lpuart_Uart_Ip_ 发送任何数据回调中的 AsyncSend. 我的 RTD 版本是 3.0.0 P07,S32DS 版本是 3.5 请允许我知道如何解决它,谢谢。
    发表于 04-11 07:51

    S32K148频繁UART_FRAMING_ERROR的原因?

    我在使用 UART 模块时遇到了一些问题,其中UART_FRAMING_ERROR经常发生,只有 20% 的有效载荷被成功接收。 该项目使用 freeRTOS 和 S32 SDK。任务从另一个芯片
    发表于 04-11 07:35

    使用RTD5.0.0的s32k312,C40_Ip擦除pflash存在一些问题求解决

    /t5/s32k/s32k344-c40-ip-hardware-fault-problem/td-p/1697432 但在 RTD 5.0.0 C40_ip.h 中,“Fls_MemMap.h” 不存在 那么,如何将C40_Ip API 放入 RAM 中呢?可以给
    发表于 04-11 06:53

    k32l2b31写入LPUART1-&gt;STAT |= (1&lt;&lt;25)会导致semihost_hardfault是为什么?

    我想在 k32l2b31 上激活 LIN Break 检测 必须在状态寄存器中设置位 LKDE i try LPUART1->STAT |= (1<<25) 但在调试时显示为 “semihost_hardfault” 谁知道为什么呢?
    发表于 04-08 06:36

    FRDM-MCXA156 LPUART1不工作是哪里出了问题?

    我正在使用 FRDM-MCXA156并且MCUXpresso IDE 版本 24.12 我无法让LPUART1工作。 我导入了使用 LPUART0 的示例
    发表于 04-07 06:23

    T-300S+DDC1230+LCR模块介绍

    电子发烧友网站提供《T-300S+DDC1230+LCR模块介绍.pptx》资料免费下载
    发表于 03-31 17:34 ?0次下载

    使用S32K322上的LPUART进行UART通信,接收超过14个字符时遇到问题,求解决

    我正在使用 S32K322 上的 LPUART 进行 UART 通信,并在接收超过 14 个字符时遇到问题。具体来说,在调用 Lpuart_Uart_Ip_GetReceiveStatus我收到错误
    发表于 03-28 07:00

    S32k系列微型机,特别是S32K388具有并行处理功能吗?

    S32k系列微型机,特别是S32K388具有并行处理功能吗?
    发表于 03-26 08:27

    WD50-110S24K1 WD50-110S24K1

    电子发烧友网为你提供AIPULNION(AIPULNION)WD50-110S24K1相关产品参数、数据手册,更有WD50-110S24K1的引脚图、接线图、封装手册、中文资料、英文资料,WD50-110S24K1真值表,WD5
    发表于 03-20 18:59
    WD50-110<b class='flag-5'>S24K</b>1 WD50-110<b class='flag-5'>S24K</b>1

    S32K344将LPUART6添加到Uart_example产生硬故障怎么解决?

    我尝试添加一个串行端口 (LPUART_6),以便能够通过 S32K3x4EVB-T172评估板上的串行转 USB 适配器输出消息。 我正在使用:S32DS 3.6.0、S32Kxx
    发表于 03-20 07:25

    手册描述LPUart1可以工作在APB clock domain,请问用HAL库如何设置?

    你好,看到手册描述LPUart1可以工作在APB clock domain,请问用HAL库如何设置,谢谢! 下面代码应该为independent clock设置,对吧? void
    发表于 03-11 06:12

    S32K 进阶之旅】如何使用 S32K3 PIT 定时器实现精准延时?

    周期中断定时器(PeriodicInterruptTimer,PIT)模块顾名思义,就是通过计时行为引发周期性中断事件的触发器。本文基于S32K312开发板实现延时功能,在此之前先简单介绍下PIT
    的头像 发表于 03-10 16:33 ?840次阅读
    【<b class='flag-5'>S32K</b> <b class='flag-5'>进阶</b><b class='flag-5'>之旅</b>】如何使用 <b class='flag-5'>S32K</b>3 PIT 定时器实现精准延时?

    如何如何集成MCAL到S32DS_S32K344

    集成MCAL到S32DS_S32K344
    发表于 12-30 15:35 ?2次下载

    BOOSTXL-K350QVG-S1 QVGA显示BoosterPack?插件模块用户指南

    电子发烧友网站提供《BOOSTXL-K350QVG-S1 QVGA显示BoosterPack?插件模块用户指南.pdf》资料免费下载
    发表于 12-05 14:45 ?0次下载
    BOOSTXL-<b class='flag-5'>K350QVG-S</b>1 QVGA显示BoosterPack?插件<b class='flag-5'>模块</b>用户指南