自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

上层精灵的赞美诗

记录和分享嵌入式学习历程

  • 博客(38)
  • 收藏
  • 关注

原创 S32K144入门笔记(二十五):FlexCAN初始化序列

初始化控制 1 寄存器(CTRL1),并可选择初始化 CAN 位定时寄存器(CBT)。d. 通过对 PRESDIV 字段进行编程来确定位速率,并可选择对 EPRESDIV 字段进行编程。c. 确定 CAN FD 位定时参数:FPROPSEG、FPSEG1、FPSEG2 和 FRJW。b. 可选择确定位定时参数:EPROPSEG、EPSEG1、EPSEG2 和 ERJW。e. 如果启用了 Rx FIFO 且需要 DMA,则设置 DMA。b. 如果启用了 Rx FIFO,则必须初始化 ID 过滤器表。

2025-04-06 18:50:36 340

原创 S32K144入门笔记(二十四):FlexCAN传输、接收简述

如果CPU试图通过写入C/S字来解决此行为,在读取邮箱后强制执行空代码,而没有事先进行安全停用,则新接收到的与该邮箱的过滤器匹配的帧可能会丢失。接收到的帧的标识符字段始终存储在匹配的邮箱中,因此,如果匹配是由于掩码导致的,则邮箱中 ID 字段的内容可能会发生变化。如果 CTRL1[LBUF] 被否定,那么仲裁过程会搜索具有最高优先级的活动 Tx 邮箱,这意味着当多个外部节点同时竞争 CAN 总线时,该邮箱的帧将有更高的概率在 CAN 总线上赢得仲裁。扫描从编号最低的邮箱开始,并向编号更高的邮箱进行。

2025-04-06 18:17:46 878

原创 S32K144入门笔记(二十三):FlexCAN特性

S32K144的CAN模块由三个,符合ISO 11898和CAN2.0B协议规范,其中CAN0支持CAN FD,具体资源情况如下:CAN模块的系统框图如下图所示。通过RAM访问来接收和发送消息帧验证接收的消息执行错误处理检测CAN FD消息控制器主机接口(CHI)子模块管理用于接收和传输的消息缓冲区选择,负责处理 CAN FD 和非 CAN FD 消息格式的仲裁和 ID 匹配算法。总线接口单元(BIU)子模块控制对内部接口总线的访问,以便与 CPU 及其他模块建立连接。

2025-04-02 00:08:15 1226

原创 S32K144的SDK库中两种时钟初始化的区别(二)

结合上篇的函数分析,可以初步判断如何使用配置工具生成时钟初始化代码而言,两个方案均是根据配置工具的信息来配置时钟寄存器,官方的方法是做了回调函数的一些处理,但是由于配置工具不支持回调函数生成,所以在使用官方配置工具的前提下,两个时钟的初始化方法是雷同的。CLOCK_SYS_UpdateConfiguration函数又两个形参,第一个是配置目标索引,实际上就是代表配置结构体数组的索引值,对于只配置了一套时钟参数来说,那这个值就是0,代表数组的第一个元素。

2025-03-30 23:41:36 688

原创 S32K144的SDK库中两种时钟初始化的区别(一)

笔者第一次使用S32K144时,并没有看官方的例程,一直在使用CLOCK_DRV_Init这个函数来初始化时钟,很明显,这种方式比较简洁,但是不论是3.00的SDK例程还是4.03的SDK例程,均使用了第一种方式来做时钟初始化,那这两种时钟的设置有哪些区别呢?里面的四个参数就是对于时钟相关的信息的初始化,如果使用官方的配置工具,则这4个参数来源于配置工具中对系统各个模块时钟的设置值,注释也说了是SCG、SIM、PCC、PMC这几个模块的配置。这里的程序思路比较简单,接下来我们再来SCG时钟是如何配置的。

2025-03-30 20:29:29 571

原创 PEmicro Multilink FX调试踩坑

既然使用了NXP的芯片,笔者就想使用一下它的专用调试器,这里先说一下,笔者是从朋友那里借了一个调试器,型号为PEmicro Multilink FX Rev B。对于以上功能,不同的调试器支持的功能是有限制的,对于数据的实时刷新显示功能对于所有的PEmicro设备都是支持的,包括NXP官网开发板的阉割版的OpenSDA。这个功能就是使用SWO的单线数据传输来实现串口调试的功能,笔者从未使用过(一直使用串口调试)。由于笔者的调试器是B版本的,是很多年前的版本,所以在上面三个功能的支持上就受到了限制。

2025-03-28 21:41:31 489

原创 S32K144外设实验(七):FTM输出多路互补带死区PWM

互补对的PWM输出是很重要的外设功能,尤其应用再无刷电机的控制。

2025-03-25 23:08:15 1338

原创 S32K144外设实验(六):FTM输出单路PWM

FTM的CPU接口时钟为SYS_CLK,在RUN模式下最高80MHz。模块的时钟结构如下图所示。SYS_CLK固定时钟外部时钟此处需要注意,虽然外部时钟源的可选范围较广,但是配置工具提示,其值不可超过SYS_CLK的4分频,在周期中断的文章中已经使用了系统时钟作为时钟源,本次实验使用外部晶振的分频时钟作为时钟源。外部晶振8MHz,分频系数为1,所以FTM的输入时钟为8MHz。

2025-03-25 21:00:38 1333

原创 S32K144外设实验(五):FTM周期中断

FTM的CPU接口时钟为SYS_CLK,在RUN模式下最高80MHz。模块的时钟结构如下图所示。SYS_CLK固定时钟外部时钟此处需要注意,虽然外部时钟源的可选范围较广,但是配置工具提示,其值不可超过SYS_CLK的4分频,为了追求更高的时钟分辨率,笔者配置计数器的时钟为SYS_CLK。

2025-03-24 21:42:28 700

原创 S32K144外设实验(四):LPSPI(主机发送)

SOSCDIV2_CLK(来源于外部晶振分频)SIRCDIV2_CLK(来源于内部慢速时钟分频)FIRCDIV2_CLK(来源于内部快速时钟分频)SPLLDIV2_CLK(来源于锁相环分频)输入模块的时钟结构如下:如果在RUN模式下,则LPSPI模块的功能时钟最快是40MHz,但是可配置的SCK时钟却达不到40MHz,在入门笔记中有讲到,SCK的时钟至少是功能时钟的2分频。所以在RUN模式下的SCK时钟最高位20MHz。

2025-03-24 07:30:00 1470 1

原创 S32K144入门笔记(二十三):FTM宏观介绍

S32K144的FTM资源情况如下:FlexTimer 模块(FTM)是一个二至八通道的定时器,支持输入捕获、输出比较以及生成用于控制电动机和电源管理应用的 PWM 信号。FTM 的时间基准是一个 16 位计数器,可用作无符号或有符号计数器。

2025-03-23 10:32:24 937

原创 S32K144入门笔记(二十一):LPSPI解读

S32K144芯片配置3个LPSPI模块,分别为LPSPI0、LPSPI1、LPSPI2,并带有4个字深度的发送和接收缓存。LPSPI是一种低功耗串行外设接口(SPI)模块,支持与SPI总线的高效接口,可以作为主设备和/或从设备。LPSPI 旨在使用少量的 CPU 开销,通过 FIFO的DMA卸载寄存器访问。如果有合适的时钟可用,LPSPI 可以在停止模式下继续运行。LPSPI 支持 DMA 访问并生成 DMA 请求。

2025-03-23 07:30:00 1782

原创 S32K144入门笔记(二十二):LPSPI的API的解读

此函数将运行时状态结构初始化,以跟踪正在进行的传输,将时钟解除门控到 LPSPI 模块,重置 LPSPI 模块,配置 IRQ 状态结构,将模块级中断启用到核心,并启用 LPSPI 模块。与配置总线函数相比,此处传入SPI配置结构体的区别在于,配置总线函数返回计算出的波特率,而此函数不返回。与在这里传入SPI配置结构体相比,将其传入配置总线函数的区别在于,配置总线函数会返回计算后的波特率,而此函数不会。用户也可以在传输之前调用配置总线函数,在这种情况下,用户只需在传输函数的设备结构体参数中传入NULL即可。

2025-03-23 06:30:00 1321

原创 AutoSar:软件革命还是技术陷阱?

回过头看看,使用了AutoSar之后,每年要花大几百万,要招聘专职的脚本编写人员,控制器的质量水准是否上升还是个问号。那这个东西是不是一个好东西呢?笔者个人观点,这个概念和套路是非常好的,但是需要判断自己是否适合使用这套东西,如果团队已经遇到软件协作瓶颈,使用AutoSar将会有很大提升,但是如果软件团队水平偏低,而且团队Leader是个非软件工程师出身或没有决策能力的话,那就会有一个相当长的磨合时间,甚至会失败。

2025-03-22 18:03:25 1208

原创 S32K144入门笔记(二十):eDMA的API函数解读

注意:对于与外设之间的传输(到外设或从外设),请确保传输大小等于所使用外设的数据缓冲区大小,否则可能只会传输被截断的数据块(例如,对于具有 8 位数据寄存器的通信 IP,传输大小应为 1 字节,而对于 32 位数据寄存器,传输大小应为 4 字节)。注意:对于内存到外设或外设到内存的传输,确保传输大小等于所使用外设的数据缓冲区大小,否则可能只会传输被截断的数据块(例如,对于具有 8 位数据寄存器的通信 IP,传输大小应为 1B,而对于 32 位数据寄存器,传输大小应为 4B)。配置最后的目标地址调整。

2025-03-22 04:30:00 785

原创 S32K144入门笔记(十九):eDMA

对于不同型号的芯片,通道数如下:增强型直接内存访问(eDMA)控制器是第二代模块,能够执行复杂的数据传输,几乎无需主机处理器的干预。其硬件微架构包含以下组件:eDMA 模块由两个主要子模块构成:eDMA 引擎和传输控制描述符本地内存。详细信息参考用户手册 表18-2和18-3。eDMA 模块是一个高度可编程的数据传输引擎,经过优化以最大限度地减少主机处理器所需的干预。它适用于以下应用场景:事先静态地知道要传输的数据大小,并且数据大小并未定义在传输数据本身中。每个通道需要一个 32 字节的 TCD 来定义所

2025-03-22 03:30:00 1127

原创 S32K144入门笔记(十八):DMAMUX解读

来自TRGMUX模块的触发可以触发前四个DMA通道上的DMA传输,例如,LPIT可以经由TRGMUX触发DMA。异步DMA操作不支持触发器选项。在多个DMA请求被路由到DMAMUX源的情况下,软件需要确保一次只启用一个DMA请求。例如,一个以太网定时器的DMA请求可以在特定时间启用,而其他定时器可以在该时间启用中断。

2025-03-21 20:51:22 809

原创 S32K144入门笔记(十七):PDB的API函数解读

任何已启用且触发输出已启用(preTriggerOutputEnable 和 preTriggerEnable 均为真)的预触发,都必须通过调用 ::PDB_DRV_SetAdcPreTriggerDelayValue 函数将相应的延迟值设置为非零值。在SDK中并没有转为PDB设置专门的PAL驱动,在基本的DRIVER库中一共有21个API函数,本文将解读这些函数的功能。当 PDB 被设置为使用软件触发作为输入时,调用此函数会触发 PDB。此函数在 PDB 模块中获取 ADC 预触发标志。

2025-03-21 18:55:30 543

原创 S32K144外设实验(三):ADC单通道连续采样(中断)

笔者配置了ADC通道12的连续转换并使能了通道中断,关键的点就在中断这里,通过查看SDK中的代码发现,配置后的代码并没有在SDK的初始化代码中使能NVIC中的中断开关,一定要注意在使用中断的时候配置中断优先级以及使能NVIC中的中断开关。这次的实验比较简单,主要目的就是验证一下ADC的中断功能,思路是使用软件触发ADC的连续单通道采样,将采样值通过串口发送到上位机观察数是否正确。

2025-03-20 20:41:18 459

原创 电子工程师转战汽车OEM主机厂之路

第一篇分享一个笔者2018年的一个心得文章,回头想想从事汽车行业也小8年了,从懵懂稚嫩到所谓的老油条,也是难忘的经历,希望我的经历对从事电子行业和汽车行业的小伙伴有所帮助。

2025-03-19 23:48:47 1411

原创 S32K144外设实验(二):ADC单通道单次采样(软件触发)

S32K144的ADC应该说是特别灵活,笔者采用循序渐进的方式来学习使用这个很重要的外设。在《入门笔记系列》专栏中对用户手册进行了翻译和解读,这里在回顾一下ADC的基本功能,第一次实验我们不使用过于复杂的触发方式。只使用一个通道来理解S32K144的ADC。

2025-03-19 22:54:51 1298

原创 S32K144入门笔记(十六):ADC的API函数解读

这里说明一下,SDK中关于ADC的配置还有一种PAL库函数,它类似于STM32的HAL库函数,但是实话实说,NXP做的没有STM32完善,并不是所有的外设都可以使用PAL来驱动,这就造成在配置时,有的外设需要使用DRIVER,有的使用PAL。在使用此结构通过 ADC_DRV_ConfigConverter() 配置转换器之前,应在此结构上调用此函数,否则所有成员都必须由用户写入(初始化)。在使用该结构配置通道(ADC_DRV_ConfigChan)之前,应在此结构上调用此函数,否则调用者必须写入所有成员。

2025-03-18 21:33:48 994

原创 S32K144外设实验(一):LPIT的周期中断

S32K144的LPIT的基础中断实验,通过通道0闪烁LED。

2025-03-17 21:54:34 982

原创 S32K144入门笔记(十三):LPIT的API函数解读

解读LPIT的SDK函数,基于4.03版本

2025-03-17 20:52:24 1263

原创 S32K144入门笔记(十五):ADC(转换器部分)的解读

OFS 是一个二进制补码、左对齐的寄存器,其中包含由校准产生的偏移误差校正值。OFS(偏移校准寄存器)是一个采用二进制补码格式且左对齐的寄存器,用于存储校准生成的偏移误差校正值。该寄存器中的数值会从模数转换结果中扣除,修正后的结果将被传输到结果寄存器 Rn 中。如果修正后的结果超过当前工作模式的最大允许值或低于最小允许值,系统将强制将其限制在该模式对应的有效范围内。OFS 寄存器的数据格式与数据结果寄存器 Rn 不同,这种设计旨在无论选择何种转换模式,都能保留校准值的分辨率。

2025-03-16 16:57:07 1251

原创 S32K144入门笔记(十四):ADC(触发配置)的解读

S32K144 100引脚封装的芯片配置两个ADC模块:ADC0和ADC1,两个ADC都配有16个采样通道,与其他Cortex-M4内核的芯片设计差不多,这些引脚均与其他GPIO复用。每个ADC由4个内部通道,ADC0的内部通道0位供电监控,其他通道和ADC1的所有内部通道均为保留。

2025-03-15 23:25:37 1865

原创 S32K144入门笔记(十):TRGMUX的初始化

书接上回,TRGMUX本质上是一个多路选择开关,根据用户手册中的描述,它可以实现多个输入的选择输出,本篇文章将验证如何通过配置工具来生成初始化配置代码。

2025-03-14 21:18:57 623

原创 S32K144入门笔记(十二):LPIT的解读

当启用时,定时器会递减并生成输出预触发和触发输出。定时器可以配置为始终从编程的起始值递减,或在选定的触发输入或前一个通道超时(当通道链接时)时递减。当一个定时器达到编程计数时,相应的定时器通道将生成预触发和触发输出信号,并且这些预触发和触发输出可用于触发设备上的其他模块。不同的通道可以级联成32位定时器,每个通道可以设置位周期或单次模式。定时器触发接口如图1所示。也就是说定时器的通道是基于外设功能时钟运行的。当选定的触发输入被置位时,定时器的值会被捕获(在定时器值寄存器中),定时器可用于进行测量。

2025-03-14 00:25:17 1006

原创 S32K144入门笔记(十一):PDB的解读

PDB是一个S32K144上的延时模块,每个芯片上的PDB有两个槽PDB0和PDB1,每个槽由1个触发源、1个脉冲输出和8个预触发器组成。根据笔者对于官网手册的理解,这个PDB槽与ADC模块有着对应的关系,那么这个模块的设计初衷最重要的一点就是让ADC的使用更加灵活。

2025-03-13 23:27:53 488

原创 S32K144入门笔记(九):TRGMUX的解读

TRGMUX是Trigger MUX Control的缩写,顾名思义它是用来做触发源的多路选择控制的。TRGMUX提供了一个非常灵活的结构,用于触发源于多个引脚或外设的连接。一个可用的外设总是拥有一个32位的专用触发源选择寄存器。这个寄存器最多支持4个触发源。但并不是所有的模块都有标准的4个触发源,可以少于4个,也可以多于4个,对于多于4个的情况,该模块就配置了多个触发源选择寄存器。如图1所示。

2025-03-13 20:36:14 372

原创 S32K144入门笔记(八):PCC的初步解读

每个外设模块的时钟都可以使用PCC模块单独开启和关闭。在任何形式的复位之后,PCC都会禁用相应外设模块的时钟以节省电力。在初始化模块之前,在PCC寄存器中设置相应的时钟门控控制位以启用时钟。在关闭时钟之前,请确保禁用该模块。如果模块具有功能时钟,则其PCC寄存器可以通过编程外围时钟选择(PCS)字段来提供时钟源的选项。对于有时钟分频器的模块,通过将外围时钟分频器(PCD)字段与分数(FRAC)字段一起编程来选择。在配置功能时钟之前,必须禁用模块的接口时钟(CGC=0)。

2025-03-11 22:50:21 1266

原创 S32K144入门笔记(七):LPUART基本解读(printf支持)

本文讨论串口调试使用频率最高的printf的支持问题,和其他arm内核的单片机类似,要支持printf函数打印调试信息,只需要将输出函数重映射到串口就可以了。笔者使用的是S32DS开发环境,在第一篇中已经提到过,这个开发环境可以支持GCC和IAR两种编译器,所以本文将记录在以上两种编译器上的具体实现。

2025-03-09 22:49:25 814

原创 S32K144入门笔记(六):LPUART基本解读(发送函数)

该模块不支持低泄露和等待模式,且在VLPS模式下RTS和CTS功能被禁用。

2025-03-08 23:08:42 1361

原创 S32K144入门笔记(五):中断管理

S32K144是属于低功耗Cortex-M4F内核的芯片,一般的厂家对于中断上的处理都有类似的对方(比如STM32L4XX系列),本文将对S32K144的中断系统做分析并举例一个中断过程的实现。

2025-03-07 23:21:13 751

原创 S32K144入门笔记(四):GPIO的解读

S32K144共有个GPIO的端口实例化,从GPIOA到GPIOE。有关寄存器的具体信息此处不再列出,参考手册中均有描述,也是比较简单,各个单片机都差不多。

2025-03-06 22:36:05 1103

原创 S32K144入门笔记(三):系统定时器SysTick

上篇文章初步讨论了S32K144H的时钟和基本配置,由于S32K144的独特设计,使得其时钟和电源模式有着千丝万缕的联系。因此趁热打铁,在对时钟系统有了基本认识的基础上继续研究一下整个系统的时钟和电源模式切换的机制。

2025-03-05 22:51:58 1192

原创 S32K144入门笔记(二):时钟基本配置

本文的主要内容是分析S32K144的时钟系统并验证配置的正确性。由于S32K144的时钟系统与电源管理系统相互有很多牵连,所以本篇只讨论时钟的基本配置,有关于时钟与模式切换的内容在后续文章中讨论。

2025-03-03 23:14:54 1464 2

原创 S32K144入门笔记(一):环境搭建与配置

开发板支持USB与12V外部电源两种供电方式,可以通过板子上的跳线调整。具体设置如表所示。丝印配置描述J1041-22-3 (默认设置)复位信号到OpenSDA,进入调试器的boot模式。复位信号直接复位主控芯片。J1071-22-3 (默认设置)12V供电模式。USB供电模式。J109/J1081-2 (默认设置)移除CAN模块的终端电阻。开发板配置的外围实验器件比较丰富,包括LED、电位器、CAN通信、Lin通信等。与主控芯片的接口如表1-2所示。板载芯片。

2025-03-01 20:50:39 2154 1

tc275-men-mcal

autosar TC275的mcal内存管理包,如果需要更多资源请关注博主

2025-03-25

tc275-autosar- mcal-版本4.03

此包中包含基础的模块,如果需要其他模块,请关注博主

2025-03-25

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除