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

一、 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页面。
  2. 点击运行程序按钮,在终端模拟器中“发送”中输入任意单个字符,观察接受窗口数据内容。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

 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论