1. 背景 PSoC6的SWD&JTAG 引脚在芯片start-up初始化阶段的驱动状态(高/低)不是默认的 Analog High-Z,而是有特别的设置。将这些引脚用作普通GPIO时(尤其用作控制信号时),需要特别注意这些pins的初始状态是否与设计相互冲突。 2. SWD&JTAG Pins配置 从芯片上电到 CPU运行到main()之前,芯片会执行一段boot程序进行芯片&系统初始化配置,也包含了对SWD&JTAG pins的配置。初始化后各pin的状态如下表所示: 也就是说在运行main()之前,这些SWD&JTAG pins的初始状态已如上表所示。举例来说,如果使用TDI用作控制功能,且在main()中将其初始状态配置为0,就会存在下图所示的glitch的情况: Glitch的存在会对控制产生一定的影响,这个时候需要消除这种影响。 3. CY8C6xx6/CY8C6xx7系列的配置 首先需要了解PSoC6系列芯片的生命周期,这里重点介绍相关的两个生命周期: NORMAL: 芯片出厂后处于这个阶段,也就是客户拿到芯片时芯片所处的状态 SECURE: 相比NORAML, 安全性更高,需要客户进行一些相关配置芯片才可以转到这个阶段 CY8C6xx6/CY8C6xx7这一系列的产品,在芯片的NORMAL 阶段,boot程序会初始化SWD&JTAG pins;在芯片的SECURE阶段,boot程序不会配置SWJ pins。所以如果要在CY8C6xx6/CY8C6xx7系列产品中消除glitch,只有将芯片转到SECURE阶段这一个方法。 4. 其他系列的配置 PSoC6其他系列的产品在TOC2 Flag中添加了两位 ,可以配置是否让boot程序初始化SWD&JTAG pins。 注意: 配置boot程序不做初始化操作会带来一个后果:配置结束后,仿真器无法再连接芯片,所以在配置之前,需要在firmware中添加软件升级功能,以确保后续 的软件更新。下面介绍如何使用TOC2 flag配置boot程序不做初始化操作。 5. Example:如何配置其他系列芯片SWD&JTAG Pins 1) 1)先用逻辑分析仪查看修改前boot程序初始化SWD&JTAG pins的情况 2) 2)在工程中添加”cy_ps_config.h”,这个文件中包含了TOC2结构体定义及其他相关信息 3) 3)在程序中添加TOC2flag的定义,以及TOC2 structure 4) 4)将build之后的hex文件烧录到板子中,查看SWD&JTAG pins的情况,可以看到修改后TDI并未被拉高 5) 5)烧录后连接仿真器,可以发现连接失败(SWJ Pins只作为普通GPIO使用,仿真器无法再连上)。所以在做以上操作之前需要在firmware中添加软件升级功能 Note: - 一般不建议使用SWD&JTAGpins做控制功能,glitch的存在会影响控制的设备
- 如果必须要使用,对于CY8C6xx6/CY8C6xx7来说,一定要转到SECURE;对于其他型号的产品,可以通过配置TOC2Flag实现。但是这两种操作之前,必须确保firmware中已经包含了测试成功可用的软件升级功能,否则后续固件无法升级。
- 本例程基于ModusToolBox3.1 和CY8CKIT-062-4343W 开发板设计
|