0. 目录
目录
1. 原因
总而言之,我接触S32K144已经有一个月了,突然一个项目需求需要用到这个芯片,当时确实挺迷茫的。
在此之前我一直用的是ST芯片,感觉这个芯片的优点是系列比较全,不同需求可以找到不同型号,而且坑几乎大家都踩过,基本都能找到类似的问题,这次遇到的问题是ST没有车规型号吉祥物,得换了。
其实我个人觉得真的很难说哪个芯片好哪个不好,我觉得我做项目的时候一直没能找出芯片性能的差别,导致一个芯片可以接受,一个不可以。(当然我不会说主频、外设这些硬性指标,我指的是同速度、同外设之间的差别)
S32K144这个芯片不能说不好,使用起来也没有出现什么大的问题。
唯一的问题是资料太少了软件开发demo是什么意思,基本上只能在官网上找到有用的信息,太迷茫了。
2. 开发环境 2.1 软件开发环境选择
S32K144有三个主要开发环境:
S32DS
S32DS是NXP官方的开发工具Keil
Keil需要下载pack支持包,另外需要从S32DS导出一些源代码。
这个我没深入研究过,也没怎么用过。2.2 S32DS
这里我选择了S32DS,这是我第一次使用NXP芯片,所以决定用原生工具,这样支持可能更好,坑也少。
需要注意的是S32DS有好几种,就如同Keil有Keil C51和Keil MDK一样,编译出来的内核各有不同,所以需要在官网上选择一种。
对于 S342K144,选择 S32DS IDE for Arm。
2.2.1 下载与安装
找到的最新安装包是S32DS_ARM_Win32_v2018.R1_b180326.exe(目前是2019年10月的),下载比较慢,安装时填入激活码(官网下载界面就有,免费的),一路next就OK了,没什么坑。
主要坑的是安装完这个之后需要升级一个升级包(S32DS_ARM_v2018.R1_UP10.zip)才能得到最新的库函数接口。(升级操作:在help-Install new software窗口中点击Add,在Add Repo中选择S32DS_ARM_v2018.R1_UP10.zip)
如果你没升级过,默认的库是EAR_SDK_0.8.6,升级后是RTM_SDK_3.0.0(别问我EAR和RTM有什么区别,我用的时候感觉是一样的)。后来我咨询了原FAE,他们认为我们的库太老了,有bug,很难跟踪调试(别人问你一年前写的代码,你会一头雾水的)
2.2.2 演示项目
这部分非常重要,因为这可能是我们实施项目的最直接、最有效的方式(这是信息最全的)。
在File-New-S32DS project from example中,可以调出可以导入的演示项目。
我感觉demo主要分为两类
1.注册开发版本
感觉跟Stm32以前的寄存器版本差不多,类似51的开发,直接分配寄存器,这个效率比较高,但是可读性和可移植性比较差。
2.库函数版本
感觉跟stm32的hal库比较类似,NXP称之为Pal库,是一个中间的抽象层,这个版本的代码支持使用pe进行图形化配置(这部分感觉没有st的STM32cube好用)
2.3 硬件开发板选择
交换板必须是官方的(这种小众产品没有第三方的开发板)。
我找到了两个官方版本,一个黄色,一个蓝色。
我其实更喜欢蓝色的。它感觉更小,并且具备所有基本功能。但它可能是早期版本,而且已经缺货。
黄色条是S32K144EVB。
官方的demo都是基于此编写的。
2.3.1 硬件架构
开发板自带调试接口OpenSDA,后面会介绍。
板载接口包括 CAN、Lin/Uart、ADC、PWM、IO(Key)……
提供简单功能。
够了。
2.3.2 调试接口
刚开始做硬件的时候,他问我要留什么调试接口,我还没拿到调试板软件开发demo是什么意思,就跟他说要OpenSDA。
然后我们互相看了一会儿,硬件就乱七八糟了(最后只剩下SW口,VCC GND DIO CLK NRT,用jlink调试)。
其实一开始我误解OpenSDA是类似jtag、sw的调试接口,后来发现不是这样的,OpenSDA相当于在SW上面又封装了一层交互接口,可以类似U盘的方式操作,实现了一种非常方便的代码下载方式,我觉得还是比较贴心的,这部分就不多说了,下面列出参考链接,文章写得不错。
通过OpenSDA,您可以通过U盘更新固件,或者直接在S32DS中下载并仿真。
3创建一个新的S32DS项目
我们简单记录一下步骤,这里我们选择基于SDK库接口进行开发。
在弹出的对话框中填写“工程名称”,左下角选择芯片型号,如果不想使用默认地址可以勾选“使用默认位置”,并选择一个文件夹。
S32DS会在此文件夹下新建一个与项目名同名的文件夹表情包设计,所有的代码文件都会放在其中。
点击next,在SDKs中选择对应的SDK版本。(对于库函数之类的,建议使用最新版本的SDK,如果旧版本有问题才更新到新版本)
新安装的v2018.R1是0.8.0版本的SDK
目前(2019.10.12)最新版本是3.0.0(安装S32DS_ARM_v2018.R1_UP10.zip)。完成后,创建一个新项目并开始添加我们的东西。
第一步,修改**.pe文件。
新创建的项目的组成部分如下:
将封装修改为我们实际使用的封装,不同的封装是有区别的,比如S32K144有64脚封装和100脚封装,如果选择64脚封装的话,部分功能(比如UART3)会不可用(废话,这个引脚根本用不到)
更换封装后,pin_mux会因为引脚不兼容而被划掉,移除一个pin元件重新拉出,同时添加其他需要的元件,然后修改对应元件参数。
7.自动生成库函数接口代码工程-生成pe代码
8. 在 main.c 中写自己的代码,创建自己的 .c 文件。这个库有意思的地方就是有很多 extern,很多变量可以直接使用。怎么说呢,我个人觉得用起来很别扭。我更喜欢独立、低耦合、有标准输入输出接口的模块。不过入乡随俗,还是可以的。
参考链接
Freescale Kinetis 开发板 OpenSDA 调试器(第一部分) – 背景和架构 – 痞子衡
详解S32K SDK使用方法及S32 SDK软件编程思路
S32K项目迁移到Keil
系列文章
- 本文固定链接: https://wen.nuanque.com/maya/24796.html
- 转载请注明: nuanquewen 于 吉祥物设计/卡通ip设计/卡通人物设计/卡通形象设计/表情包设计 发表
- 文章或作品为作者独立观点不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。本文之内容为用户主动投稿和用户分享产生,如发现内容涉嫌抄袭侵权,请联系在线客服举报,一经查实,本站将立刻删除。本站转载之内容为资源共享、学习交流之目的,请勿使用于商业用途。