尊敬的 TI E2E 社区:
我们更新了之前的"诊断 TM4C 器件的常见开发问题和提示与信息"帖子、其中包含一些新信息和改进的格式。 由于此常见问题解答主题的性质、我们会将其锁定在注释中、以简化信息、因此我们可以根据需要向第一页添加更多内容。
此帖子将包含常见问题解答部分和一般信息部分。
常见问题解答
1) 1) 某些 GPIO 端口不工作
TM4C123x 器件的受影响 GPIO 端口:
- 端口 C0、C1、C2、C3
- 端口 D7
- 端口 F0
TM4C129x 器件的受影响 GPIO 端口:
- 端口 C0、C1、C2、C3
- 端口 D7
- 端口 E7
解决方案:端口引脚 C0-3、D7和 F0/E7分别是用于 JTAG、NMI 和 NMI 特定功能的锁定引脚。 要在 GPIO 或任何其他功能中使用它们、需要解锁它们并设置提交寄存器。 以下示例函数显示了如何在调用任何 GPIO 引脚配置函数之前解锁和提交引脚。
注意: 随着 TivaWare 版本2.2.0.295的发布、已向 DriverLib 添加了一个 API 来满足此需求: GPIOUnlockPin
正确使用 API 的示例包括:
GPIOUnlockPin (GPIO_PORTF_BASE、GPIO_PIN_0);
以前用于旧版 TivaWare 的方法:
步骤1)包含头文件:
#include "inc/hw_types.h" #include "inc/hw_gpio.h" #include "inc/hw_memmap.h"
步骤2)根据所需的端口和目标器件使用以下代码
TM4C123x 器件
- 端口 C
HWREG (GPIO_PORTC_BASE_GPIO_LO_LOCK)= GPIO_LOCK_KEY; HWREG (GPIO_PORTC_BASE_GPIO_O_CR)|=(GPIO_PIN_0|GPIO_PIN_1_1|GPIO_PIN_2|GPIO_PIN_3);
- 端口 D
HWREG (GPIO_PORTD_BASE_GPIO_O_LO_LOCK)= GPIO_LOCK_KEY; HWREG (GPIO_PORTD_BASE_GPIO_O_O_CR)|= GPIO_PIN_7;
- 端口 F
HWREG (GPIO_PORTF_BASE_GPIO_O_LOCK)= GPIO_LOCK_KEY; HWREG (GPIO_PORTF_BASE_GPIO_O_CR)|= GPIO_PIN_0;
TM4C129x 器件
- 端口 C
HWREG (GPIO_PORTC_AHB_BAS+GPIO_LO_LOCK)= GPIO_LOCK_KEY; HWREG (GPIO_PORTC_AHB_BASE_GPIO_CR)|=(GPIO_PIN_0|GPIO_PIN_1_1|GPIO_PIN_2|GPIO_PIN_3);
- 端口 D
HWREG (GPIO_PORTD_AHB_BAS+GPIO_O_LOCK)= GPIO_LOCK_KEY; HWREG (GPIO_PORTD_AHB_BASE_GPIO_O_CR)|= GPIO_PIN_7;
- 端口 E
HWREG (GPIO_Porte AHB_BAS+GPIO_O_LOCK)= GPIO_LOCK_KEY; HWREG (GPIO_Porte AHB_BAS+GPIO_O_CR)|= GPIO_PIN_7;
2) 2)仅 EK-TM4C123GXL:GPIO 的 PD0/PD1或 PB6/PB7存在问题
观察到的问题: PD0、PD1、PB6和/或 PB7中的一个或多个出现意外行为。
解决方案:EK-TM4C123GXL 组装了一对连接在一起的零欧姆电阻器:PD0与 PB6、PD1与 PB7。 这些电阻器仅用于支持与 BOOSTXL-SENSHUB BoosterPack 配合使用的 Airmouse 示例。 只要当前未使用该示例、就可以移除它们以允许 GPIO 独立运行。
3) 3)代码进入 FaultISR
情况1:启用外设后、程序进入 FaultISR
解决方案:使能函数写入 xxx 外设的 SYSCTL.RCGCxxx 寄存器。 它需要5个系统时钟周期、之后外设将可寻址。 建议延迟、或者更好地从外设获取就绪状态。 以下代码执行后者:
SysCtlPeripheralEnable (SYSCTL_Periph_I2C2); while (!(SysCtlPeripheralReady (SYSCTL_Periph_I2C2)));
情况2:在正常程序执行期间进入 FaultISR
典型的根本原因:故障 ISR 意味着 CPU 在内部或外部(w.r.t 外设)遇到无法解决的情况。
解决方案:
1:需要检查以开始分析的寄存器是绝对地址0xE000ED28和0xE000ED38上的 NVIC_FAULTSTAT 和 NVIC_FAULTADDR 寄存器。
NVIC_FAULTSTAT 中的精确总线故障意味着在 NVIC_FAULTADDR 中捕获故障位置的地址
同样、所述的每种故障类型都有相关原因、有些故障易于诊断、有些故障难以诊断。 要诊断故障、请参阅以下涵盖不同故障类型的文档: http://www.ti.com/lit/spma043
4.如果在咨询 SPMA043后找不到解决方案、请在 E2E 上发帖、详细介绍故障类型以及尝试解决该问题所采取的步骤。
4) 4) ROM 引导加载程序在定制 TM4C129x 板上不起作用
问题:即使在 EK-TM4C1294XL LaunchPad 上使用相同的软件进行评估、尝试调用 ROM 引导加载程序也无法正常工作
可能的根本原因:勘误项 ETH#03: http://www.ti.com/lit/spmz850
解决 方案:根据数据表、如果未使用片上 PHY、支持以太网 PHY 的器件可接受的做法是与 RBIAS 引脚无连接(NC)。 但是、当以太网 PHY 器件的闪存被擦除时、ROM 引导加载程序会启用以太网 PHY、这会导致 ROM 引导加载程序失败。 此外、如果在没有 RBIAS 电阻器的情况下使用25MHz 晶体、则 JTAG 可能无法工作。
即使应用不需要以太网 PHY、也需要 RBIAS 电阻器。 在这种情况下、可使用4.7KOhm 10%容差电阻器代替 RBIAS 引脚和 GND 之间的4.87KOhm 1%容差电阻器。
5) 5) TM4C 器件未在 Windows 7/8/10中正确枚举、或者 Windows 设备驱动程序未正确签名
根本原因:Windows 的 USB 驱动程序不是最新的
解决方案: 通过以下下载内容安装最新的 USB 驱动程序: http://www.ti.com/tool/download/SW-TM4C
注:对于具有 TivaWare 2.1.4或更低版本的 Windows 10、USB 复合设备示例项目 USB_DEV_cserial 无法正常工作。 此问题已通过 TivaWare 2.2.0.295得到解决。 此外、还提供了单端口 USB CDC 器件示例 USB_dev_cdcserial。
6) 6) JTAG 未连接到我的定制 TM4C 板上
查看资源:TM4C JTAG 指南 http://www.ti.com/lit/spma075
一般信息
1) 1)如何申请使用 TI 的 USB VID 和 PID
TI 允许在特定条件下重复使用 TI 的 USB 供应商标识号(VID)并使用 TI 分配的 USB 产品标识号(PID)。 您可以在以下链接中找到许可条款。
VID:PID 应用现在处于联机状态、可在以下链接中找到。
http://software-dl-1.ti.com/dsps/forms/vidtrackerMature.html
请填写申请并详细阅读许可条款。
2) Windows ICDI 驱动程序下载
最新的 Windows ICDI 驱动程序可从 http://www.ti.com/tool/stellaris_icdi_drivers 下载
3) 3)可以使用 XDS100v2和 XDS200调试以及 CCS Uniflash 执行器件解锁。
有关如何执行此操作的详细信息、请参阅《TM4C JTAG 指南》 的第5.3.2节:http://www.ti.com/lit/spma075