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

    文章

    1267

    浏览量

    183216
  • 汽车电子
    +关注

    关注

    3024

    文章

    7865

    浏览量

    166469
  • S32k144
    +关注

    关注

    1

    文章

    7

    浏览量

    1880
收藏 人收藏

    评论

    相关推荐

    解读表面贴装型晶体滤波器:DSF633S 2POLE 与 DSF633S 4POLE

    解读表面贴装型晶体滤波器:DSF633S 2POLE 与 DSF633S 4POLE
    的头像 发表于 07-31 14:21 327次阅读
    <b class='flag-5'>解读</b>表面贴装型晶体滤波器:DSF633<b class='flag-5'>S</b> 2POLE 与 DSF633<b class='flag-5'>S</b> 4POLE

    基于S32K3的ECU参考设计集成电池管理方案

    S32K396/376 BMS-EVB板现已供货,同时S32K39 / 37 / 36系列芯片将于今年6月正式上市。相关的集中式电芯监控参考设计板也已上市。
    发表于 04-26 10:59 479次阅读

    STM32G031J6的LPUART发送导致系统复位怎么解决?

    单片机型号是G031J6MX,其中LPUART是单发送模式。发现LP串口一发送数据,系统就重启,因为LPUART的这个引脚和NRST是同一个引脚,还是怀疑自己配置的问题,请朋友们来帮忙看看有个可能是什么原因
    发表于 04-15 06:41

    stm32L072芯片LPUART1接收发送失败的原因?怎么解决?

    使用stm32扩展库开发L072系列时发现,初始化LPUART1后,所得到得波特率与电脑实际接受不符,且只有波特率在9600以上,串口才不会进入溢出中断。但接受数据仍然不对,初始化如下: void
    发表于 04-09 07:46

    关于STM32L051C8T6芯片LPUART+DMA接收问题求解

    STM32L051C8T6芯片低功耗串口LPUART+DMA。 我用STM32CUBEMX 生成了程序LPUART以及UART2串口+DMA的程序。 重新写了RxCpltCall函数里面有回显功能
    发表于 03-28 07:05

    RK3568驱动指南|驱动基础进阶篇-进阶5 自定义实现insmod命令实验

    RK3568驱动指南|驱动基础进阶篇-进阶5 自定义实现insmod命令实验
    的头像 发表于 02-20 14:10 636次阅读
    RK3568驱动指南|驱动基础<b class='flag-5'>进阶</b>篇-<b class='flag-5'>进阶</b>5 自定义实现insmod命令实验

    基于 NXP S32K311 评估板的方案

    该方案是以 NXP S32K311 芯片为主控制器的评估板方案,S32K311 是基于 ARM Cortex-M7 的嵌入式应用微控制器,有 64 KB 的 Dflash、1 MB 的 Pflash
    的头像 发表于 02-18 11:22 724次阅读
    基于 NXP <b class='flag-5'>S32K</b>311 评估板的方案

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

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

    RK3568驱动指南|驱动基础进阶篇-进阶8 内核运行ko文件总结

    RK3568驱动指南|驱动基础进阶篇-进阶8 内核运行ko文件总结
    的头像 发表于 01-31 14:58 1094次阅读
    RK3568驱动指南|驱动基础<b class='flag-5'>进阶</b>篇-<b class='flag-5'>进阶</b>8 内核运行ko文件总结

    S32K 进阶之旅】 NXP S32K3 以太网 RMII 接口调试(1)

    大联大世平集团推出了一款基于NXP车规级MCUS32K344的开发板——花名“Cavalry”,它使用BGA257封装的32位ArmCortex-M7S32K344作为主控芯片,在69.6
    的头像 发表于 01-18 08:26 2182次阅读
    【<b class='flag-5'>S32K</b> <b class='flag-5'>进阶</b><b class='flag-5'>之旅</b>】 NXP <b class='flag-5'>S32K</b>3 以太网 RMII 接口调试(1)

    DC电源模块的关键参数解读

    BOSHIDA DC电源模块的关键参数解读 BOSHIDA DC电源模块是一种电子设备,用于将交流电(AC)转换为直流电(DC)供电给其他电子设备。关键参数对于了解电源模块的性能和适用
    的头像 发表于 01-12 14:01 755次阅读
    DC电源<b class='flag-5'>模块</b>的关键参数<b class='flag-5'>解读</b>

    芯圣SDK工具 让开发更方便——HC89S103K6

    SDK-HC89S103K6是基于HC89S103K6设计的快速开发工具。SDK-HC89S103K6由HC89S103K6微控制器的主控板和HC-LINKV4.0仿真烧录器两部分组成
    的头像 发表于 01-10 10:33 465次阅读
    芯圣SDK工具 让开发更方便——HC89<b class='flag-5'>S103K</b>6

    PS-1220S插拔力试验机:力学世界的探秘之旅

    PS-1220S插拔力试验机:力学世界的探秘之旅
    的头像 发表于 01-05 09:08 475次阅读
    PS-1220<b class='flag-5'>S</b>插拔力试验机:力学世界的探秘<b class='flag-5'>之旅</b>

    解读模块波长与传输距离的关系 波长是影响光模块传输距离的因素吗

    解读模块波长与传输距离的关系 波长是影响光模块传输距离的因素吗?  光模块波长与传输距离的关系是一个重要的光通信技术问题。波长是光的特性之一,它直接影响了光信号在光纤中传输的性能和距
    的头像 发表于 12-27 11:28 1232次阅读

    IGBT和模块的标准体系解读

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