CADS 是 Customer Application Demo Software 的简称,经由 S32DS 编译,通过 OpenSDA 或者是 SWD 即可烧录进 S32K144。如此一来,便可以在运行时通过 PC 终端程序(如 Tera Term)输入已经定义好的命令,实现 NJJ29C2 相关配置。
所以 CADS 可以在 NJJ29C2 硬件设计完成之后对硬件检验,如 SPI 通讯是否正常,天线设计是否失谐以及天线设计有无短路等等。
同时 CADS 的 “SPILOG_CONFIG(1);”命令还可以将 SPI 通讯可视化,用户可以清晰直观地看见整个流程中的命令帧和响应帧(如果配置正确的话)。
以 Impedance Learning 为例,CADS 的 SPI 命令配置流程(不包含 CADS 自身定义的函数命令)如 图 1.1 所示。
图 1.1 CADS Impedance Learning 配置流程图
在发送了 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 特性测量报告
二、 程式说明在 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); |
通过 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)
四、 附录
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 设置)。
最初调试 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Ω 电阻
评论