This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSP430G2553:G2553的 MCU ID 代码(与 FR2475相比)--正在寻找有关读取器件 ID 的地址和预期的常量的阐述

Guru**** 657930 points
Other Parts Discussed in Thread: MSP430FR2475, MSP430G2553, MSP430G2402
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1295084/msp430g2553-mcu-id-codes-for-g2553-vs-fr2475-----looking-for-clarification-on-the-address-to-read-device-id-and-what-constants-to-expect

器件型号:MSP430G2553
主题中讨论的其他器件:MSP430FR2475、、 MSP430G2402

尊敬的 TI 朋友和家人:

我们的客户发现 FR2475和目标 G2553上的 ID 代码之间存在异常。  欢迎您的评论!

[客户]

我已经为 FRAM 器件准备好了我们的生产线。  最近、我们意识到我们希望在制造数据库中跟踪每个小部件制造出的 MCU 是什么。  在我们的计划中,一组零件可以到达计划/测试站,并且该计划需要无缝地处理所有零件。   

我们了解到、FRAM MSP430FR2475在地址0x1a04处为我们提供了 MCU ID。  在我的程序中、我现在可以通过 JTAG 读取该地址并算出我要处理的是 MSP430FR2475或其他器件–因此我的程序可以顺利地处理 FRAM 和闪存。    

但对于我们使用的其他值系列2,475,24024022553、我们不知道哪些地址可能具有这些代码以及这些代码是什么。  

 因此、现在我能做的最好的事情就是将一个布尔值保存到数据库中–FRAM 是/否。  但是、我很想确定我有哪个特定的 MCU、以便创建更有意义的记录。  

 我的问题是、是否有 TI 文档列出了包含此 MCU 代码的所有 MSP430的"信息"地址?这些代码是什么?

[TI]

在"使用 JTAG 接口对 MSP430进行编程" www.ti.com/lit/pdf/slau320 [ TI.com ] 第2.6节"整个器件系列的 JTAG 特性"中有一个表格、其中列出了不同器件的器件 ID 地址和值。 本节中有几个表格、对于闪存与 FRAM 系列、可以在不同的位置找到它。 JTAG 工具实际上在编程之前会读取器件 ID、因此它可以为该部分使用正确的存储器映射、JTAG 功能等–通常在 CCS 或编程器使用的其他程序中、 它知道您已设置的器件以尝试访问哪个器件、然后它会检查在读取此地址时、它获取该器件 ID 的预期值、如果不匹配、则会触发警告。

 信息 A 中的 TLV 有点不同–在 Gxx 器件上、存储在用户可访问的闪存中并可以被擦除–它包含校准信息、 但不包括器件 ID、因为器件 ID 需要位于无法意外擦除的位置(因为它由 JTAG 等器件使用、并且您需要始终能够访问/恢复器件)。

[客户]

今天我终于尝试了 Elprotronic 指令 F_Elprotronic Get_Device_Info ()。  事实证明它没有达到我想的效果。  在根据我们已知的器件 ID 配置器件之前、无论连接了什么 MCU、该命令都只会生成相同的垃圾文本。  文档说明"应首先在配置中设置所需的索引处理器…)。

 我尝试了一些使用 MSP430G2553的操作、Katie 提到的桌子也使用了。  我一定要错过一些东西。

 根据 https://www.ti.com/lit/ug/slau320aj/slau320aj.pdf [ TI.com ]、我应该能够在0x0ff0和0x0ff1处读取两个字节、并获取代码0x2553:

 但是、根据数据表、

 存储器映射显示0x0ff0和0x0ff1不是可寻址存储器。 我已经尝试读取这些字节,Elprotronic F_Elprotronic Memory_Read_Data () 函数返回一个失败状态代码。

 我想我可能会在信息存储器中找到器件 ID、但数据表除了 A 段之外不提供该 ID 的映射。 但这两个文档之间明显的冲突令人困惑。

[TI/ Elprotronic]

可以读取任何 MCU 位置 、但首先必须使用 Open Target Device funcion 将其连接到 MCU。 如果响应正确、那么从指定地址读取的存储器应该应答。 我们可以在下一周通过 M.Team 进行联系、并在您身边不恰当地检查完成的事情、或者向我发送电子邮件、然后我们可以立即进行检查。

[客户]

我希望能够澄清读取器件 ID 的地址以及预期使用的常量。  我们在所有产品中使用的 MCU 是 MSP430G2553、MSP430G2402、MSP430G2475。  地址0x0ff0:1不起作用。

 我们希望改进这一点:为两者提供正确可靠的器件 ID。  将来我们还有其他处理器要处理、并且数据会进入数据库。

欢迎再次发表评论!

Ty、
CY

 

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、CY:

    客户是否检查 MCU 中的所有 ID 代码:0xFF0 & 0xFF1

    我将查看一些 MSP430器件(我可能没有使用与客户相同的器件)并检查器件 ID 是否与表中所示一致。

    B.R.

    萨尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    不同的 MSP430系列(2xx/5xx/FRAM)具有不同的 JTAG ID。 选择正确的系列(基于 JTAG ID)后、器件 ID 可识别。 所有这些操作是如何完成的、可以在开源 MSP 调试堆栈(https://www.ti.com/tool/MSPDS)中找到、因为 TI 工具(通过 MSP430.dll)支持自动检测/识别器件。 但是、不知道 Elprotronic 函数的相关信息。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    各位-我们非常感谢您的意见、因为我们渴望进一步了解这一点。  问题如下:

    "对于 G2553、当读取地址0xFF0时、读取函数返回一个错误代码。  G2553数据表显示 oxff0位于不可寻址空间中。"

    注意事项?

    Ty、
    CY

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用另一个 SBW 主器件或器件本身(mov.w &00FF0h、R15)从0x0ff0读取 G2553字时无问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我还是很好奇,说实话。  

     

    • 无论正在使用的 SBW"主器件"是否可能不会像 Elprotronic 那样引发错误、它可能会提供垃圾数据。  
    • 汇编指令 mov 不会失败、它会很高兴地将某些内容移动到 R15。  
    • 如果您能分享您在这两种方法中所读的价值以及他们是否同意、将会有所帮助。  如果是0xff 或0x00、我们可能会表示怀疑。  
    • 没有人在此 E2E 主题顶部的两个表中解释了地址0xFF0明显存在的差异。  ?
    • 即使您实际上是从0xFF0读取好的数据,它可能没有帮助,因为 Elprotronic 指令 F_Elprotronic Memory_Read_Data ()正在返回一个错误代码

     

    也许器件 ID 位于信息内存中、但是数据表并未提供除 A 段之外的映射 。获取这些信息可能会有所帮助。  ?

     我们非常感谢每个人在这方面提供的帮助。

    Ty、
    CY

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我制作了一个独特的简单二进制 MSF430G/F2xx UART hello world、它还会显示器件 ID (mov.w &00FF0h、R15)、并且它适用于任何2xx 器件、例如2,553,29529552272…… 这与在器件本身上运行程序有关、但未连接任何器件。 我没有在调试模式下测试它、但在自由运行的情况下、它肯定会移动正确的值、而不是移动到 R15。

    如果我们讨论的是 SBW 主器件、则任何 SBW MSP (LP EZ) FET 都将读取此0x0FF0h 值、因为它用于检测器件或检查所选的器件是否正确。 它是(开源) MSP 调试堆栈 FET 固件的一部分。 它也可以在开源复制器(slau320)中找到。

    我从未使用过 Elprotronic 器件,所以现在不要使用 F_Elprotronic Memory_Read_Data ()规范,但不管他们做什么(Elprotronic),对于器件检测(PC/GUI 端)必须使用相同的程序(从主器件读取0x0ff0 ),因为没有其他方法。

    在任何情况下、任何 MSP430上的器件 ID 位置都与信息存储器无关。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    ZMO 伟大的工作!
    来自客户---

    "

    谜题迎刃而解!

     

    添加 Gregory

     

    Elprotronic 用户指南描述了我一直将 F_Flash ()用作"只从 Memory_Read_Data 读取数据块"的函数。

     

    Elprotronic 支持替代功能:

    • F_RAM()被描述为"从 Read_Word、寄存器、IO、闪存等中读取一个字(两个字节)"
    • F_RAM ()被描述为"从 Read_Byte、寄存器、IO、闪存等中读取一个字节"

     

    所以我尝试了替代方案、它们工作正常。  实验室中的实验表明:

     

    //对于 G2553,设备 ID (两个字节)

    ReadBytesStatus = MSP430FPA.F_DeviceID (0x0ff0、2、输出);//在这条指令之后、Memory_Read_Data ID = 0x0000、ReadBytesStatus = 0

    ReadByte = MSP430FPA.F_ReadByte (0x0ff0);//在这条指令之后、Read_Byte = 0x25

    ReadByte = MSP430FPA.F_ReadByte (0x0ff1);//在这条指令之后、Read_Byte = 0x53

    ReadWord = MSP430FPAF.F_ReadWord (0x0ff0);//在这条指令之后、Read_Word = 0x5325

     

    我认为这里的课程是地址0x0ff0不是闪存。  这是另外的东西,或者至少 Elprotronic 如此认为。  我在 Memory_Read_Data 地址尝试了 F_RAM()并获得了相同的故障代码。  所以我认为 F_F_ Memory_Read_Data ()是针对闪存优化的,这就是他们提供它的原因,也许它更快或有些东西。  

     

    当然、端字节序的东西从 TI 定义翻转过来、我可以接受它。  

     

     

    再次感谢所有的帮助! 尤其是论坛上的 zrno soli。

    "

    Ty、
    克里斯