一、S32K144 芯片介绍
S32K144 是一颗 32 位 Arm®Cortex®-M4F 内核的 MCU,支持 ASIL B级应用。这些功能包括超低功耗工作模式,具有恩智浦固件的加密安全引擎
以及具有低级驱动程序和 FreeRTOS™ 操作系统的汽车级软件开发套件。在 -40 至 125/150°C 温度范围内提供 QFN、LQFP 和 MAPBGA 封装。
主要特性:
- 112 MHz Cortex-M4F 内核
- 512 KB 闪存,带 ECC。高达 4KB EEPROM
- 12 位 1 Msps ADC,16 位 FlexTimer,具有死区插入和故障检测功能
- 可扩展的低功耗运行和停止模式。快速唤醒、时钟和电源门控
- 提供 QFN,LQFP 和 MAPBGA 封装。温度范围 -40 至 125/150° C,至少 15 年长期供货保证
- 功能安全、信息安全和连接:
- 符合 ISO 26262 标准,高达 ASIL B 级
- 硬件和软件看门狗、时钟 / 电源 / 温度监测仪
- 功能安全文件和 SafeAsure 网络社区支持
- CSEc 安全引擎 - AES-128,安全引导和密钥存储;
- 以太网 (10/100 Mbps), CAN FD, FlexIO (UART, I2C, SPI, I2S, LIN, PWM...), 串行音频接口, QSPI
- 量产级软件:
- S32 Design Studio IDE – Eclipse, GCC 和调试器,第三方支持
- 软件开发套件 (SDK) – 免费、兼容 SPICE 3 级/经过了 MISRA 测试,带有演示和示例,兼容恩智浦和第三方 IDE,也可单独使用。
- 恩智浦 AUTOSAR® MCAL
- 恩智浦提供的安全固件
- 内核自测库
- 基于 MATLAB® 模型的设计工具
二、Echoes 开发板介绍
Echoes 是一款基于 NXP S32K1xx 系列的最小系统通用评估板方案,本方案面向通用汽车应用,提供丰富的测试组件, 板载 CAN、 LIN 和 UART/SCI 接口,
并具有 microUSB 或外部 12V 电源两种供电选项,可帮助用户快速上手开发 S32K1xx 相关应用设计。 另外, NXP 推出的免费开发集成环境 S32DS 使用户
可以快速熟悉使用 S32K 系列 MCU,并快速完成产品原型验证,可大大缩短产品开发周期,满足汽车电子产品快速发展的市场需求。
Echoes 开发板功能描述:
- 可选贴 64-LQFP 或 100-LQFP 两种规格的 S32K1xx 主控芯片(本板示例为 S32K144)
- 具有 Micro-USB 或外部 12V 电源两种供电选项,可选的 5V 或3V 主控 MCU 供电。
- 选用高效率、 高耐压、环境温度范围 -40℃ 至 125℃ 的车规级电源芯片。
- 2 路 FlexCAN 输入/输出,其中一路支持 CAN-FD 。
- 丰富的外围模块,支持 LPUART、 LPI2C、 LPSPI 等低功耗通信。
- 支持 JTAG 标准调试接口和 JTAG 4 线 SWD 调试模式。
- 可轻松接入 MCU I/O 接头引脚,进行原型设计
- 有高级功能安全、信息安全和软件支持,适用于 ASIL-B 车身、区域控制和电气化应用。
- 环境温度范围:主控 MCU 电源模式在 HSRUN 为 -40℃ 至 105℃ , RUN 为 -40℃ 至 125℃ 。
三、搭建 S32DS I2C 例程
打开 S32DS for ARM 2.2 并新建 Project。
找到 S32SDK S32K1xx RTM v3.0.0 Example Projects ,找到 S32K144, 找到 communication 类别,找到 i2c 例程并在上方 “Project name” 修改名字,最原来 Project 名字后面加上 “_TEST”,方便识别。
新建工程打开后如下所示。
右键通过 PE 文件生成 Code
|
四、修改代码适配 Echoes
在本例程中,是以 FlexIO 当做 Master ,LPI2C 当做 Slave,并以 LED 的颜色来呈现整个通讯过程的,我们这里修改使用的 FlexIO 和 LPI2C 以及 LED 的控制端口来适配于 Echoes 的 Demo 板。
1、配置 FlexIO 端口为 I2C
(1)在 flexio_i2c_s32k144_TEST\Generated_Code\flexio_i2c.c 文件中修改 “sdaPin” = 4U,“sclPin” = 5U。
(2)由于 FXIO_D4, FXIO_D5 有多对可使用的 IO 口,这里使用 PTD2(SDA),PTD3(SCL)。
(3)又因为 PTD2 和 PTD3 有多组 FlexIO 功能,查找 S32K144 的 IO 口复用表格
S32K144_IO_Signal_Description_Input_Multiplexing 来确定复用功能项,这里是 ALT4。
(4)修改 Pinmux 设置,设置 PTD2&PTD3 复用 ALT4 功能。
2、配置 LPI2C 端口
(1)LPI2C 只有一组两对,PTA2 & PTA3 和 PTB6 & PTB7。
(2)但是其中 PTB6 & PTB7 用来连接晶振,所以 LPI2C 继续使用 PTA2 & PTA3。
3、FlexIO I2C & LPI2C 硬件连接
(1)找到 FlexIO I2C 使用的 PTD2(SDA) 和 PTD3(SCL) 对应的 J18 排母的 3、4 号孔。
(2)找到 LPI2C 使用的 PTA2(SDA) 和 PTA3(SCL) 对应的 J18 排母的 5、6 号孔。
(3)如下是 Echoes 板上 FlexIO I2C 与 LPI2C 的硬件连接,上侧是 LPI2C,下侧是 FlexIO I2C。
4、代码的编译下载
(1)首先连接 J-LINK 调试器,调试器右侧接电脑,左侧接 Echoes 开发板。
(2)完成 FlexIO I2C和 LPI2C 配置修改之后保存,点击小锤子选择 “Debug_FLASH” 进行编译。
(3)选择小虫子,选择 “Debug Confiigurations” 进行下载及 Debug 配置。
(4)双击 “GDB SEGGER J-LINK Debugging” 会为当前 Project 的生成一份配置。
|
(5)在 main 页签中,选择需要进行下载和 Debug 的 .elf 格式可执行文件。
(6)在 Debugger 页签,确认“Device name” 为 S32K144, 再点击右下角 Debug 进行下载,同时会进入 Debug 模式。
(7)如下是打开的 Debug 页面,左下代码前鼠标双击即可打断点,上面黄绿色箭头是全速运行程序,右侧几个按键是单步调试。
5、I2C 通讯波形测试
(1)在右侧面包板给 I2C 接了 2k 的上拉,波形会更加清晰,然后接上示波器查看波形。
(2)连接好示波器的探头之后,用示波器可以抓取到两次通讯。
(3)分析第一段波形,7bit 地址为 0x25,发送的数据为 0x01~0x07。
在 flexio_i2c_s32k144_TEST\Generated_Code\flexio_i2c.c 文件中,给 Master 填充的地址为 37U ,注意这里是 10 进制数,转换为 16 进制数就是 0x25,符合如上波形。
根据 main.c 的代码来看,Master Buffer 在发送前,填充的确实是 0 到 7 这八个数据。
|
(4)再分析第二段波形,7bit 地址为 0x25,接收的数据是 0x08~0x01。
从 main.c 的代码中看到,接收 Slave 的数据之前,给 Slave Buffer填充的确实是 8~1,符合如上波形。
参考资料
[1] 04.SCH - P20-033 Echoes(FS32K144 Demo Board)_Jadyn Li_20210107
[1] NXP S32K144 - Echoes 开发板操作手册_Jadyn Li_2021.02.22.pdf
[2] PS32K144HFT0VLLT-datasheet-pdf
[3] S32K144RM_Rev1_DraftH.pdf
上一篇:基于 Echoes 的 S32K144 UART 调试
下一篇:基于 Echoes 的 Clock 模块调试
评论