S32K144 CADS 调试

一、 流程及运作结果

CADS 是 Customer Application Demo Software 的简称,经由 S32DS 编译,通过 OpenSDA 或者是 SWD 即可烧录进 S32K144。如此一来,便可以在运行时通过 PC 终端程序(如 Tera Term)输入已经定义好的命令,实现 NJJ29C2 相关配置。

所以 CADS 可以在 NJJ29C2 硬件设计完成之后对硬件检验,如 SPI 通讯是否正常,天线设计是否失谐以及天线设计有无短路等等。

同时 CADS 的 “SPILOG_CONFIG(1);”命令还可以将 SPI 通讯可视化,用户可以清晰直观地看见整个流程中的命令帧和响应帧(如果配置正确的话)。

  1. 流程介绍

以 Impedance Learning 为例,CADS 的 SPI 命令配置流程(不包含 CADS 自身定义的函数命令)如 1.1 所示。

 

图 1.1 CADS Impedance Learning 配置流程图

  1. 运作结果

在发送了 CMD_CONFIG_DEVICE 等一系列命令,进行参数设定之后,通过 PKE 发送由 continuous wave(CW)LF segments 组成的 LF frame sets(注意不能包含曼切斯特编码的 LF data 或者是半位宽编码)。这样在 LF frame sets 发送结束时,就会对天线阻抗、相位以及电流等天线参数进行更新。对于 LF frame set 以及 LF segment 的介绍可以参考 附录 1

紧接着,只需要通过 CMD_GET_DEVICE_INFO 检索 device 响应,就可以选择性获取上一个 PKE 或 IMMO 详细的操作信息和诊断信息。这些信息中就包含了 RESP_DIAG 提供的被激活天线的 LF driver 电流、相位以及阻抗的测量结果。 1.2 是测试 CADS 的硬件环境搭建(不包含高频接收 NCK2910)。

 

图 1.2 CADS 硬件环境搭建

1.3 为 VDR 及 LF driver 信息诊断报告,其中由于只有 TX1 连接了天线,所以它的阻抗、相位及电流等信息得到了更新。另外如果驱动回报的天线电流为 0mA,那么也可以说明该位置天线处于开路。

(DBG)   DIAG response

(DBG)     VDRMEASMIN: 14.6 V

(DBG)     VDRMEASMAX: 14.6 V

(DBG)     DR1_ZEFF: 11.50 Ohm

(DBG)     DR1_PHASE: 35.85 degree

(DBG)     DR1_CURRENT: 512.50 mA

(DBG)     DR2_ZEFF: 21.00 Ohm

(DBG)     DR2_PHASE: 0.00 degree

(DBG)     DR2_CURRENT: 0.00 mA

(DBG)     DR3_ZEFF: 21.00 Ohm

(DBG)     DR3_PHASE: 0.00 degree

(DBG)     DR3_CURRENT: 0.00 mA

(DBG)     DR4_ZEFF: 21.00 Ohm

(DBG)     DR4_PHASE: 0.00 degree

(DBG)     DR4_CURRENT: 0.00 mA

(DBG)     DR5_ZEFF: 21.00 Ohm

(DBG)     DR5_PHASE: 0.00 degree

(DBG)     DR5_CURRENT: 0.00 mA

(DBG)     DR6_ZEFF: 21.00 Ohm

(DBG)     DR6_PHASE: 0.00 degree

(DBG)     DR6_CURRENT: 0.00 mA

(DBG)     DR7_ZEFF: 21.00 Ohm

(DBG)     DR7_PHASE: 0.00 degree

(DBG)     DR7_CURRENT: 0.00 mA

(DBG)     DR8_ZEFF: 21.00 Ohm

(DBG)     DR8_PHASE: 0.00 degree

(DBG)     DR8_CURRENT: 0.00 mA

(DBG)     DR9_ZEFF: 21.00 Ohm

(DBG)     DR9_PHASE: 0.00 degree

(DBG)     DR9_CURRENT: 0.00 mA

图 1.3 VDR & LF driver 特性测量报告

二、 程式说明
  1. NJJ29C2 初始化配置

 在 NJJ29C2 复位完成之后,终端程序会显示如下内容,由于 WPI 并没有 Lizard(NCK2910)的硬件设备,所以它会显示“Fail in Initialization Lizard”的字样:

(INF)   ============== CENDRIC CADS (v3.4) ==============

 

(INF)   Supported commands for each IMMO protocol:

(INF)   HT-Pro2: GET_IDE, GET_IDE64, AUTHENT, INIT_AC, MUTE

(INF)   HT-AES: START_AUTH

(INF)   X-Tag-Pro2 : INIT_CT, GET_IDE, GET_IDE64, PING, BROADCAST, USER

(INF)   HT-3: None

 

(INF)   Check initial CENDRIC response

(ERR)       Operation mode: ERROR

(ERR)     Reset info:

(ERR)       RST_RSTN reset is active

(CMD)   v3.0>

(INF)   Initialization Lizard starts

(ERR)   Fail in Initialization Lizard

(CMD)   v3.0>

(INF)   RAM image does not exist

(INF)   Init script does not exist

(CMD)   v3.0>

当出现上述提示(NCK2910 初始化失败的信息可以忽略,因为就算没有 NCK2910,CADS 也可以继续执行大部分命令),也就可以通过键入、复制粘贴或者是文件拖放的方式将 X21_Learn_TX1.txt 中 SPI 命令输入到 PC 终端程序,然后再通过 UART 被 S32K144(内含 CADS)接收解析,进而对 NJJ29C2 进行配置。

对于 NJJ29C2 的初始化配置,可以说就是一套基本算得上固定的流程,其中涉及到 3 个主要的 SPI 命令:CMD_CONFIG_DEVICE、CMD_CONFIG_ADVANCED 以及 CMD_CONFIG_DRIVER,与这些命令相关的参数构成、参数配置的详细信息请参考 NXP 的 NJJ29C2 Objective User Manual。本篇文章仅是针对 WPI PEPS System Development Kit 硬件情况进行参数配置。关于上述 3 个命令的参数设定及简单说明如下:

 

 

    /* CMD_CONFIG_DEVICE 中设定 T_TXCHG = 128us,LF driver Baud rate = 4kbps,

选择了 DR1 和 DR2 的高功率模式(HPDR),VDRMAX = 35V,VDRMIN = 15V,

I_COILMAX_INIT = 16A,I_COILMAX_OP = 16A*/

(CMD)   v3.0> CMD_CONFIG_DEVICE(1,0x08,0x02,0x04,0x40,0x21,0x01,0xD5,0xFF,0x10,0

x00,0x00,0x00,0x01,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00);

 

(INF)   Command name: CMD_CONFIG_DEVICE

(INF)   Command parameters: 0x01, 0x08, 0x02, 0x04, 0x40, 0x21, 0x01, 0xD5, 0xFF

, 0x10, 0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

0x00, 0x00, 0x00

 

    /* CMD_CONFIG_ADVANCED 这个参数配置可以说是固定的,它能将 LF Driver 的

占空比设定成接近 40% 的目标值 */

(CMD)   v3.0> CMD_CONFIG_ADVANCED(1,0x03,0xBB,0xB3,0xE5,0x15,0xF2);

 

(INF)   Command name: CMD_CONFIG_ADVANCED

(INF)   Command parameters: 0x01, 0x03, 0xBB, 0xB3, 0xE5, 0x15, 0xF2

 

 

    /* CMD_CONFIG_DRIVER 选择了 DR1,设定初始阻抗为 10Ω(这里要设置为期望的

最小阻抗。如果实际的阻抗比该值还小,很有可能导致实际电流比目标值高,存在

风险),设定初始天线感量 345uH,设定最大相位容差 ±67.5°,

最大容许电流容差 ±18.75%,

最小天线阻抗容差 10Ω,最大 60Ω */

(CMD)   v3.0> CMD_CONFIG_DRIVER(1,0x01,0x02,0x28,0x44,0xED,0x28,0xF0);

 

(INF)   Command name: CMD_CONFIG_DRIVER

(INF)   Command parameters: 0x01, 0x01, 0x02, 0x28, 0x44, 0xED, 0x28, 0xF0

(CMD)   v3.0> CMD_START_LF_TRANSMIT_DATA(1,0x04,0x01,0x28,0x04,0x05);

 

  1. Impedance Learning

通过 CMD_START_LF_TRANSMIT_DATA 发送 continuous wave(未调节),在阻抗等信息更新之后,使用 CMD_GET_DEVICE_INFO 检索 RESP_DIAG 的结果,完成 Impedance Learning,具体的配置及说明如下:

    /* CMD_START_LF_TRANSMIT_DATA 设定 1 个 frame set 的长度为 4 个字节,

选择工作的通道为 DR1,天线目标电流为 1.25A(HPDR),

数据段编码方式则是未经过调整的 CW,持续时间 384us */

(CMD)   v3.0> CMD_START_LF_TRANSMIT_DATA(1,0x04,0x01,0x28,0x04,0x05);

WAIT_IRQ(50);

 

(INF)   Command name: CMD_START_LF_TRANSMITRESP_PARSING_CONFIG(2);

_DATA

(INF)   Command parameters: 0x01, 0x04, 0x01, 0x28, 0x04, 0x05

(CMD)   v3.0>

(INF)   Command name: WAIT_IRQ

(INF)   Command parameters: 0x32

(CMD)   v3.0>

(DBG)     INFO:

(DBG)       LF activity is finished  

 

/* CMD_GET_DEVICE_INFO 检索 RESP_DIAG */

(CMD)   v3.0> CMD_GET_DEVICE_INFO(0,2);

RESP_PARSING_CONFIG(1);

 

(INF)   Command name: RESP_PARSING_CONFIG

(INF)   GPIO name:

(INF)   Command parameters: 2

(INF)   Configuration succeeded!

(CMD)   v3.0>

(INF)   Command name: CMD_GET_DEVICE_INFO

(INF)   Command parameters: 0x00, 0x02

(CMD)   v3.0>

(DBG)   DIAG response

(DBG)     VDRMEASMIN: 14.6 V

(DBG)     VDRMEASMAX: 14.6 V

(DBG)     DR1_ZEFF: 11.50 Ohm

(DBG)     DR1_PHASE: 35.85 degree

(DBG)     DR1_CURRENT: 512.50 mA

(DBG)     DR2_ZEFF: 21.00 Ohm

(DBG)     DR2_PHASE: 0.00 degree

(DBG)     DR2_CURRENT: 0.00 mA

(DBG)     DR3_ZEFF: 21.00 Ohm

(DBG)     DR3_PHASE: 0.00 degree

(DBG)     DR3_CURRENT: 0.00 mA

(DBG)     DR4_ZEFF: 21.00 Ohm

(DBG)     DR4_PHASE: 0.00 degree

(DBG)     DR4_CURRENT: 0.00 mA

(DBG)     DR5_ZEFF: 21.00 Ohm

(DBG)     DR5_PHASE: 0.00 degree

(DBG)     DR5_CURRENT: 0.00 mA

(DBG)     DR6_ZEFF: 21.00 Ohm

(DBG)     DR6_PHASE: 0.00 degree

(DBG)     DR6_CURRENT: 0.00 mA

(DBG)     DR7_ZEFF: 21.00 Ohm

(DBG)     DR7_PHASE: 0.00 degree

(DBG)     DR7_CURRENT: 0.00 mA

(DBG)     DR8_ZEFF: 21.00 Ohm

(DBG)     DR8_PHASE: 0.00 degree

(DBG)     DR8_CURRENT: 0.00 mA

(DBG)     DR9_ZEFF: 21.00 Ohm

(DBG)     DR9_PHASE: 0.00 degree

(DBG)     DR9_CURRENT: 0.00 mA

(CMD)   v3.0>

(INF)   Command name: RESP_PARSING_CONFIG

(INF)   GPIO name:

(INF)   Command parameters: 1

(INF)   Configuration succeeded!

(CMD)   v3.0>

 

三、 参考资料

  • Um525831 – NJJ29C2 Objective User Manual (Rev. 3.1, 19 June 2020)
  • UM – SCA1903 – NJJ29C2 Customer Demo Operation (Rev. 3.0, 8 May 2020)
  • NJJ29C2 Explanations about initializations of application examples (Rev. 1.0, 15 July 2020)

 

四、 附录
  1. LF frame set & LF segment 介绍(CMD_START_LF_TRANSMIT_DATA)

 

LF segment 是 LF telegram 的最小实体,包含了数据编码方式以及对应的数据。LF frame set 则是由一个或多个 LF segments 再加上 LF drivers 配置所组成的。要区分 LF frame set 其实非常简单,因为它是以 Length,也就是 LFFRAMELEN,作为起始的。在 LF frame set 与 LF frame set 之间,会存在传输变换时间(可以通过 CMD_CONFIG_DEVICE 设置)。

 

  1. PEPS System Development Kit trouble shooting

最初调试 WPI 板子的时候,终端程序会提示“(INF)   No IRQ 5 seconds after resetting CENDRIC!”,告知 S32K144 对于 NJJ29C2 的初始化失败。通过对 CADS 程序进行分析,可以整理出初始化流程如 4.1 所示:

 

图 4.1 初始化配置流程

出现上述问题我首先检查了 NJJ29C2 供电 VBAT 以及 VIO 均处于正常范围,然后也检查了 SPI 通讯接口,SCSN、SCLK、SDI、SDO 均没有问题。然后结合 4.1 的流程来分析,发现 S32K144 是会控制 GPIO 对 NJJ29C2 的 RSTN 引脚进行复位操作的,如果 RSTN 并没有拉低,RESP_GENERIC 中的 POR 内的 RST_RSTN 就不会为 1。具体表现就是 NJJ29C2 对于 S32K144 的操作没有响应,IRQ 电平也不会拉高。5s 之后就会提示“No IRQ 5 seconds after resetting CENDRIC!”。

检查之前的 PCB,发现 Base Board 与 LF Board 之间 RSTN 连线是断开的,而 R98 也并没有贴上 0Ω 电阻,当贴上电阻之后,问题得到解决。问题根源如 4.3 所示:

 

图 4.3 R98 需要贴装 0Ω 电阻

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论