关于S32K汽车通用MCU,NXP工程师总结的10个超实用Tips_s32k1 开漏-程序员宅基地

技术标签: 硬件  NXP  

“ 

S32K144是NXP推出的基于ARM Cortex-M4F内核的汽车级通用MCU系列S32K1xx的第一颗高性能单片机。本文首先简要介绍S32K系列MCU的内核和片上资源信息,然后列出S32K软件开发和硬件设计FAQ,供大家参考。

 

S32K系列MCU概览

 

S32K1xx是S32K系列MCU的第一代产品,其中S32K11x系列的内核是ARM Cortext M0+,其是之前2014年8月份量产的KEA系列MCU的升级产品,相对于KEA,其CAN的IP从之前的MSCAN升级到FlexCAN,并且支持BOSCH最新的CAN-FD,大大提高了CAN总线的通信带宽,另一个特点是增加了4个通道的eDMA,可以完成外设与内存之间的数据搬移,减轻CPU负担,提高了MCU的系统处理能力,此外存储器管理增加了MPU——存储器保护单元,并且RAM和Flash可以支持到最大24KB和256KB。

 

S32K14x系列的内核是ARM Cortex-M4F,带DSP指令集和单精度浮点数处理单元(FPU), 且最高频率可运行到112MHz,其计算性能大大提高,能够提供相对于150MHz的PowerPC e200z4内核的计算能力,其CAN最多支持3个FlexCAN,且全部支持CAN-FD(S32K148),RAM和Flash也最大支持到256KB (RAM) 和2MB (Flash),管脚封装支持LQFP-64至最多LQFP-176,外设ADC具有两个独立的12-bit精度SAR型ADC模块(每个模块16个通道,总共32个通道),支持FlexIO以及硬件加密模块CSEc,以及更加丰富的定时器timer模块、S32K148还扩展了以太网(ENET)、QSPI(支持外扩NOR Flash,支持线性地址映射,本地代码执行),ETM Trace(高级调试跟踪功能),以及串行音频接口(SAI)的支持,极大的丰富了外设接口和功能扩展性。

      

S32K1xx系列MCU支持功能安全ISO-26262 ASIL-B等级,NXP提供安全手册(Safety Manual)和FMEDA以及安全支持帮助客户实现未来汽车电子产品对功能安全的要求。

      

此外,S32K1xx系列MCU提供了免费的软件开发集成环境——S32DS for ARM,以及集成Processor Expert的图像化配置外设底层驱动(LLD)的软件开发套件(SDK),让用户可以快速熟悉使用本系列MCU,并快速完成产品原型验证,大大缩短了产品的开发周期,满足汽车电子产品快速发展的市场需求。

      

1

S32K1xx系列MCU内核及外设资源

 

2

S32K11x与S32K14x系列MCU对比

 

 

3

S32K1xx与KEA MCU引脚兼容性

 

S32K1xx系列MCU与KEA系列之间的引脚兼容性如下表,相同的引脚封装可以做到pin-to-pin的兼容,当后期需要增加功能,扩大存储器时,可以实现无缝升级。此外S32K1xx系列与下一代S32K2xx系列也会做大引脚pin-to-pin兼容。

 

4

S32K1xx的part number命名规则

 

 

Tips

从part number的X位有对芯片工作最大频率的限制,如果该字母为M或者H的S32K14x part,意味着其不能运行112MHz的HSRUM模式。

 

 

a)关于运行模式和内核速度

 

S32K14x系列MCU有RUN、HSRU和VLPR等三种运行模式和STOP1/2与VLPS等三种低功耗模式,其相互转化状态机如下图:

 

 

 

各种模式下可用的时钟源、系统/内核时钟、总线时钟和Flash时钟频率限制如下:

 

 

注意:

  • HSRUN模式只有需要内核频率大于80MHz时才使用,低于等于80MHz是推荐使用RUN运行模式。

  • S32K14x系列MCU的内核Cortex-M4F要跑到112MHz的内核频率,必须将其配置为高速运行模式(HSRUN),且环境温度不能大于105°,该模式下不允许对Flash进行擦除和编程操作。

  • VLPR——Very Low Power RUN模式,限制系统/内核频率以及总线频率为4MHz,而Flash时钟为1MHz,其目的是系统长期工作在低功耗模式下,降低(周期性)唤醒时的功耗,从而进一步降低系统功能;该模式下不允许对Flash进行擦除和编程操作。

     

 

b)S32K1xx系列MCU的ADC模块使用

 

S32K1xx系列MCU的ADC模块与之前我们使用的S12系列MCU的ADC模块有所差异,如果单独使用ADC模块,则只能实现单通道软件触发采样,且都是通过ADC的状态和控制寄存器SC1A,配置ADCH选择具体的单次采用通道实现的,其采用结果也从ADC数据结果寄存器RA读取:

 

 

要想实现单次触发多个通道采用则需要配合相应的PDB模块通过硬件触发的方式才能实现:

 

 

c)关于片内集成的RTC模块

 

S32K1xx片内集成了带补偿功能的高精度(误差在0.12 ppm ~3906 ppm)的RTC——实时时钟模块,区别于以往S08/S12(X)以及KEA的RTI模块,其可以支持外部32.768KHz的有源晶振输入或者内部IRC (eg.128KHz LPO) 分频得到的1KHz LPO1K_CLK参考时钟作为参考时钟;其中外部32.768KHz的有源晶振输入能够提供足够的精度保证。

 

 

 

Tips

 

  • S32K1xx的RTC模块仅支持外部有源32.768KHz晶振输入,不能支持无源32.768KHz晶振输入作为参考时钟。

  • 其在最低功耗模式VLPS下是不能正常工作的(处于OFF状态),这也就意味着,在功耗低于1mA时Tips,S32K1xx的RTC时不能继续提供实时时钟的。

 

 

软件开发工具支持及SDK使用

 

1

支持的软件开发集成环境

 

  • NXP:S32DS for ARM v1.3/v2.0(http://www.nxp.com/s32ds

  • ARM Keil:推荐V 5.20以上版本,通过Software Packs的方式实现对S32K系列MCU的支持: Keil Microcontroller Development Kit (MDK)(http://www2.keil.com/mdk5

  • IAR System:推荐v 7.8以上版本(IAR Embedded Workbench for ARM)

 

Tips

 

  1. S32DS NXP针对其最新32位汽车MCU的软件开发集成环境,是基于eclipse架构和GNU工具链(gcc编译器和链接器以及gdp调试软件)的免费工具,其他可以通过以上给出的官网链接下载,通过个人邮箱账号登录下载获取安装激活码;关于S32DS的使用,请关注我的微信公众号——“汽车电子expert成长之路”,阅读S32DS使用tips系列文章。

     

  2. 对于Keil的MDK,请下载5.20以上的版本,通过安装Software Packs实现对S32K系列MCU的正常,安装S32K的pack后,能够获取S32K系列MCU的启动文件、Flash算法文件、默认链接文件(分散加载文件)和SDK(RTM1.0版本)。

     

  3. IAR是S32K系列MCU的AutoSARS MCAL默认支持的编译工具,所以如果用户想使用S32K系列MCU的AutoSARS MCAL开发应用程序,建议安装使用IAR Embedded Workbench for ARM。

 

 

2

支持的软件下载和调试器

  

  • 调试器(debugger):

       PEmicro: U-Multilink/ U-Multilink[FX]

       Segger: J-Link V9.4及以上版本 + 软件J-Link V6.00d以上

 

  • 编程器(programmer):

       PEmicro: Cyclone MAX/Cyclone universal / Cyclone universal [FX]

 

Tips

 

  • 推荐客户使用低成本的J-Link调试器开发和调试S32K系列MCU,但一定切记,淘宝网购买J-Link时,买v9.4以上版本的J-Link,并安装使用最新的J-Link上位机软件(建议至少v6.00d以上版本)。如果使用J-Link v9及之前版本的J-Link(比如v7和v8),则无法识别S32K系列MCU,也不能在其上位机软件中找到S32K的算法文件;其J-Link硬件也不能通过更新固件的方式升级到V9.4以上版本。

     

  • 推荐客户使用专业的Flash编程量产工具Cyclone MAX/Cyclone universal / Cyclone universal [FX]作为产线批量编程,以避免编程过程对S32K造成EOS损伤。

 

3

SDK介绍及使用

 

S32K系列MCU提供的SDK——Software Development Kit是基于ARM的CMSIS (Cortex-M Microcontroller Software Interface Standard) 标准开发的,并可以通过Processor Expert图像化配置生成S32K系列MCU的内核外设底层驱动程序、启动文件和链接文件,其中还集成了LIN协议栈和FreeRTOS实时操作系统,方便用户快速上手,用户只需少量的精力和学习就可以完成外设底层驱动开发。

 

 

 

SDK除了支持S32DS之外,还支持S32K的其他第三方软件开发工具,比如Keil的MDK和IAR或者Greenhill的MULTI IDE。

      

(SDK的软件虽然经过了相应的测试,并提供相应的测试报告和结果,但其具有免责协议,用户使用到实际的产品中时,还是需要做产品整体软件质量测试,才能保证产品的可靠性和稳定性)

      

Tips

 

 

需要在初始化ADC模块之后,调用ADC摸采集外部信号之前调用SDK中提供的自动校准函数:

void ADC_DRV_AutoCalibration(const uint32_t instance)

 


  1. 不同的SDK版本之间可能存在差异,S32K144推荐使用SDK RTM 1.0版本,S32K142和S32K148等part只有SDK V0.8.4(S32DS for ARM v2.0 IDE安装包中自带的SDK)及以上版本才可以支持,具体每个SDK版本之间的差异和相对于上一版本的bug 修复,请参考其安装目录下的ReleaseNotes.pdf

     

     

  2. SDK集成了几乎所有外设底层驱动的demo工程用户可以通过S32DS新建工程的菜单栏File-->Create S32DS Project from Example导出到用户worksapce下参考学习。

     

     

  3. 为了获得datasheet规范的ADC总不可调整(校准)误差——TUE = ±4LSB(Typical):

     

     

     

  4. S32K1xx的低功耗和工作运行模式切换通过调用SDK的Power_manager模块的POWER_SYS_SetMode()完成。

     

 

 

 

 

硬件设计注意事项

 

1

电源和复位电路设计

 

S32K系列MCU的系统电源管脚,每一个电源pin都需要加一个0.1uF的解耦合(decouple)电容,并且在PCB Layout时尽量靠近MCU电源管脚放置,以保证其内部电源能够稳定工作。

 

 

 

S32K1xx系列MCU的外部复位管脚为低有效,其内部为开漏和若上拉,所以在设计其外部电路时,建议加一个4.7/10KΩ的上拉电阻为VDD且并联一个0.1uF的滤波电容以滤除偶发性的外部干扰,增强系统的抗干扰能力。

 

Tips

 

  • S32K1xx系列MCU的RESET管脚可以通过配置Flash选项寄存器(FTFE-FOPT,位于地址0x40D的Flash字节)控制其复位后默认的功能是复位管脚还是其他功能(PTA5H或者TCLK1)。

     

  • 若RESET_PIN_CFG = 0,则下次POR复位之后,RESET管脚的复位功能将被关闭,只能通过整片擦除(mass erase)并设置MDM-AP寄存器产生系统复位从而恢复。

 

 

 

 

 

2

晶振和时钟电路设计

 

S32K14x系列MCU支持4~40MHz的外部无源晶振或者50MHz以内的有源晶振作为系统PLL的参考时钟源:

 

 

其中,使用外部无源晶振时,典型的电路连接如下图:

 

Tips

 

  1. 需要根据选择的晶振,匹配相应的负载电容Cx和Cy(一般为若干pF)。

     

  2. 为了提高晶振电路的抗干扰能力,建议在时钟信号周围大面积铺地(也称作包地技术),在其附近不走高速数字信号以目标交叉干扰,并尽量靠近MCU时钟信号管脚放置晶振电路,越近越好。

 

 

 

3

调试接口电路设计

 

S32K14系列MCU支持SWD和JTAG两种调试协议,而S32K11x系列MCU只支持SWD协议,所以为了兼容两种调试接口,推荐使用10-pin如下接口:

 

 

 

相应的信号线外部上拉和下拉电阻(通常为10KΩ)连接如下:

 

 

 

Tips

 

  • 虽然MCU管脚内部有相应的内部上拉和下拉电阻,为了可靠还是强烈推荐用户在设计调试接口电路时加上外部的上拉和下拉电阻。

 

  • 调试接口的信号走线尽量避免过长或过孔(因为调试时时钟信号最高可达25MHz),并进入靠近MCU放置,并远离ECU外壳对外接口的裸露空间区域,以提高EMC特性。

 

4

其他硬件电路设计及EMC考虑

 

在设计S32K系列MCU的ADC外部电路时,需要串联一个限流电阻RL,并设计一个RC滤波电路,其电容和电阻值的选取需要保证信号最大幅度变化时内部的设置的采样时间内内部采样电容能够完全反映外部信号的变化:

 

其内部等效电路及参数如下:

 

Tips

 

更多S32K系列MCU的硬件设计指南请参考应用笔记:AN5426, Hardware Design Guidelines for S32K1xx Microcontrollers (REV 1)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/king110108/article/details/94215291

智能推荐

vue引入原生高德地图_前端引入原生地图-程序员宅基地

文章浏览阅读556次,点赞2次,收藏3次。由于工作上的需要,今天捣鼓了半天高德地图。如果定制化开发需求不太高的话,可以用vue-amap,这个我就不多说了,详细就看官网 https://elemefe.github.io/vue-amap/#/zh-cn/introduction/install然而我们公司需要英文版的高德,我看vue-amap中好像没有这方面的配置,而且还有一些其他的定制化开发需求,然后就只用原生的高德。其实原生的引入也不复杂,但是有几个坑要填一下。1. index.html注意,引入的高德js一定要放在头部而_前端引入原生地图

ViewGroup重写大法 (一)-程序员宅基地

文章浏览阅读104次。本文介绍ViewGroup重写,我们所熟知的LinearLayout,RelativeLayout,FrameLayout等等,所有的容器类都是ViewGroup的子类,ViewGroup又继承View。我们在熟练应用这些现成的系统布局的时候可能有时候就不能满足我们自己的需求了,这是我们就要自己重写一个容器来实现效果。ViewGroup重写可以达到各种效果,下面写一个简单的重写一个Vi..._viewgroup 重写

Stm32学习笔记,3万字超详细_stm32笔记-程序员宅基地

文章浏览阅读1.8w次,点赞279次,收藏1.5k次。本文章主要记录本人在学习stm32过程中的笔记,也插入了不少的例程代码,方便到时候CV。绝大多数内容为本人手写,小部分来自stm32官方的中文参考手册以及网上其他文章;代码部分大多来自江科大和正点原子的例程,注释是我自己添加;配图来自江科大/正点原子/中文参考手册。笔记内容都是平时自己一点点添加,不知不觉都已经这么长了。其实每一个标题其实都可以发一篇,但是这样搞太琐碎了,所以还是就这样吧。_stm32笔记

CTS(13)---CTS 测试之Media相关测试failed 小结(一)_mediacodec框架 cts-程序员宅基地

文章浏览阅读1.8k次。Android o CTS 测试之Media相关测试failed 小结(一)CTSCTS 即兼容性测试套件,CTS 在桌面设备上运行,并直接在连接的设备或模拟器上执行测试用例。CTS 是一套单元测试,旨在集成到工程师构建设备的日常工作流程(例如通过连续构建系统)中。其目的是尽早发现不兼容性,并确保软件在整个开发过程中保持兼容性。CTS 是一个自动化测试工具,其中包括两个主要软件组件:CTS tra..._mediacodec框架 cts

chosen.js插件使用,回显,动态添加选项-程序员宅基地

文章浏览阅读4.5k次。官网:https://harvesthq.github.io/chosen/实例化$(".chosen-select").chosen({disable_search_threshold: 10});赋值var optValue = $(".chosen-select").val();回显1.设置回显的值$(".chosen-select").val(“opt1”);2.触发cho..._chosen.js

C++ uint8_t数据串如何按位写入_unit8_t 集合 赋值 c++-程序员宅基地

文章浏览阅读1.9k次。撸码不易,网上找不到,索性自己写,且撸且珍惜!void bitsWrite(uint8_t* buff, int pos, int size, uint32_t value){ uint32_t index[] = { 0x80000000, 0x40000000, 0x20000000, 0x10000000, 0x8000000, 0x4000000, 0x2000000, 0x1000000, 0x800000, 0x400000, 0_unit8_t 集合 赋值 c++

随便推点

Javaweb框架 思维导图_javaweb框架图-程序员宅基地

文章浏览阅读748次。javaweb知识点_javaweb框架图

adb的升级与版本更新_adb iptabls怎么升级-程序员宅基地

文章浏览阅读1.1w次,点赞3次,收藏16次。adb是没有自动升级的命令的,如果想要更新adb的版本,我们可以在网上找到自己想要的版本进行更新给大家提供几个版本https://pan.baidu.com/s/1yd0dsmWn5CK08MlyuubR7g&shfl=shareset 提取码: 94z81、下载解压后我们可以找到下面几个文件,并复制2、找到adb安装的文件夹下的platform-tools文件夹,我这里是..._adb iptabls怎么升级

微信苹果版删除所有的聊天记录的图文教程_mac微信怎么删除聊天列表-程序员宅基地

文章浏览阅读3.8k次。很多用户可能都知道怎么在Windows系统上删除微信的聊天记录,那么苹果电脑上的微信软件怎么删除所有的聊天记录呢?下面小编就专门来给大家讲下微信mac版删除所有的聊天记录的图文教程。点击后会弹出提示窗口,点击这里的确认按钮就可以将其清理掉了。在这里选择要清理的数据,然后点击下方右边的清理按钮就行了。在mac上打开微信后,点击左下角的横线图标。然后再点击这里的管理微信聊天数据按钮。打开了设置窗口,点击上方的“通用”。在这里点击下方的前往清理按钮。点击弹出菜单里的“设置”。_mac微信怎么删除聊天列表

【报错笔记】数据类型转换时报错:Request processing failed;nested exception is java.lang.NumberFormatException:..._request processing failed; nested exception is jav-程序员宅基地

文章浏览阅读7.7k次。数据类型转换时报错:Request processing failed;nested exception is java.lang.NumberFormatException:For input String “20151512345”报错原因:数字格式异常,接着后面有 For input string: “201515612343” 提示,这就告诉我们你当前想把 “201515612343” 转换成数字类型时出错了。解决方案:使用2015151612343这个数字太大了,所以直接使用string_request processing failed; nested exception is java.lang.numberformatexcepti

qml 自定义消息框_Qt qml 自定义消息提示框-程序员宅基地

文章浏览阅读387次。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本文链接:https://blog.csdn.net/a844651990/article/details/78376767Qt qml 自定义消息提示框QtQuick有提供比较传统的信息提示框MessageDialog,但是实际开发过程并不太能满足我们的需求。下面是根据controls2模块中..._qml 自定义 messagedialog

Redis.conf 默认出厂内容_默认出厂的原始redis.conf文件全部内容-程序员宅基地

文章浏览阅读599次。# Redis configuration file example.## Note that in order to read the configuration file, Redis must be# started with the file path as first argument:## ./redis-server /path/to/redis.conf # Note on units: when memory size is needed, it is pos._默认出厂的原始redis.conf文件全部内容

推荐文章

热门文章

相关标签