请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:TMS320F28377D 主题中讨论的其他器件:TMS320F28379D、TMS320F28378D 、 TMS320F28375D、TMS320F28374D
大家好!
在器件文档中有一章"标识"、其中包含以下表格:
名称 | 地址 | 大小(x16) | 说明 |
PARTIDH | 0x0005 D00A (CPU1) 0x0007 0202 (CPU2) |
2 | 器件型号识别号(1)´ TMS320F28379D 0x**F9 0300 TMS320F28378D 0x**FA 0300 TMS320F28377D 0x**FF 0300 TMS320F28375D 0x**FD 0300 TMS320F28374D 0x**FC 0300 |
修订版本 | 0x0005 D00C | 2 | 芯片修订号 修订版本0 0x0000 0000 修订版本 A 0x0000 0000 修订版本 B 0x0000 0002 修订版本 C 0x0000 0003 |
UID_唯一 | 0x0007 03CC | 2 | 唯一标识号。 此编号在具有相同 PARTIDH 的每个单独器件上是不同的。 这可以用作应用中的序列号。 此编号仅存在于 TMS 修订版 C 器件上。 |
CPU ID | 0x0007 026D | 1 | CPU 识别号 CPU1 0xXX01 CPU2 0xXX02 |
UID_UNIQUE 和 CPU_ID 未在 driverlib 中定义、因此我必须更新 cmd 文件以便能够读取它们:
MEMORY { ... PAGE 1: ... UID_UNIQUE : origin = 0x0703CC, length = 0x000002 CPU_ID : origin = 0x07026D, length = 0x000001 } SECTIONS { ... .UID_UNIQUE : > UID_UNIQUE, PAGE = 1, TYPE = NOINIT .CPU_ID : > CPU_ID, PAGE = 1, TYPE = NOINIT }
我还在如下所示的头文件中定义它们:
ifdef __cplusplus #pragma DATA_SECTION(".UID_UNIQUE") #else #pragma DATA_SECTION(UID_UNIQUE,".UID_UNIQUE"); #endif volatile uint32_t UID_UNIQUE; #ifdef __cplusplus #pragma DATA_SECTION(".CPU_ID") #else #pragma DATA_SECTION(CPU_ID,".CPU_ID"); #endif volatile uint16_t CPU_ID;
所有 CPU1均能正常工作、我可以读取 CPU_ID 和 UID_UINIQUE。
但在 CPU2上、只有 CPU_ID 有效、UID_UNIQUE 始终为0xFFFFFFFF。
这是否正常?
此致
法布里斯