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.

[参考译文] F29H859TU-Q1:大小低于寄存器大小的外设寄存器访问的影响

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1647660/f29h859tu-q1-impact-of-a-peripheral-register-access-with-a-lower-size-than-the-size-of-the-register

器件型号: F29H859TU-Q1

您好:

我在 SDK 中看到、一些 32 位寄存器使用 HWREG(32 位访问,预期)进行访问、但也使用 HWREGH(16 位访问)或 HWREGB(8 位访问)。

1 我可以在文档中找到允许在 32 位寄存器上进行 16 位或 8 位访问的位置?

2 在 32 位寄存器上进行 16 位或 8 位写入会有什么损失(需要执行读取/修改/写入操作而不是简单的写入?) 在文档中哪里可以找到这些信息?

谢谢你

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

    在该器件上、CPU 支持字节访问、因此可以执行 8/16/32 位操作。 某些外设可能不支持 8 位访问、该信息应在器件 TRM 的外设章节中提供。  

    Vivek Singh

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

    您好、Vivek、

    谢谢你。 我认为 TRM 没有明确提到某些外设寄存器可能是按字节或半字访问的。 观察 driverlib 代码、我看到许多 HWREGB 访问被访问到一些寄存器的最低有效字节、因为这些寄存器的 3 个最高有效字节是保留的。

    那么、应该假设什么呢?  允许对所有外设寄存器进行字节和半字访问? 这就是我要假设的。 如果不是这样、因为 TRM 似乎没有明确显示此信息、规则是什么?

    对于上面的问题 2、我假设在通过 HWREG8 或 HWREG16 宏进行写入时不执行读取 — 修改-写入操作。 请确认。 但是、我想知道使用 HWREG8 读取包含 3 个 MSB 中 R/W1C 或 R/W0C 位字段的 32 位寄存器的 LSB 时会发生什么情况。 是否会像预期的那样仅对 LSB 执行读取设置为 0 或 1 的操作?


    此致、
    François μ s。

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

    您好、团队、Vivek、温馨提示!

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

    您好、

    那么、应该假设什么?  允许对所有外设寄存器进行该字节和半字访问?

    情况可能并非如此。 有些外设的最小访问权限为 16 位 (e、g、I2C)。 如果您看一下这个列表、让我检查一下、然后返回给您。

    [引用 userid=“680189“ url=“~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1647660/f29h859tu-q1-impact-of-a-peripheral-register-access-with-a-lower-size-than-the-size-of-the-register ]2/对 32 位寄存器进行 16 位或 8 位写入会造成什么后果(需要执行读取/修改/写入操作,而不是简单写入?) 在文档中哪里可以找到此信息?

    如果 IP 支持字节访问、则不会有任何损失。 如果不受支持、它甚至可能无法正常工作。  

    通常、我们的 SW driverlib 应考虑这些访问限制。 客户是否在尝试创建自己的驱动程序?

    此致、

    Vivek Singh

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

    您好、Vivek、

    谢谢你。 请接着提供一个列表、其中提供了每个外设寄存器允许的访问宽度。

    是的、客户正在根据其 FuSa 要求重新创建自己的 driverlib、因为他们不会总是使用 MCAL(无论如何都只在 CPU1 上运行)。


    此致、
    François μ s。

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

    尊敬的 Francois:

    我们似乎已经在 TRM 中提到过此信息。 请参阅下表。

    此致、

    Vivek Singh

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

    您好、Vivek、

    谢谢你。 实际上、上面确实说 VBUS32 不支持字节访问、但 VBUSP 不会显式声明。 您是否确认 VBUSP 支持字节访问? VBUSP 是否支持 16 位访问?


    此致、
    François μ s。

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

    是、VBUSP 总线上的外设应支持字节访问。

    此致、

    Vivek Singh

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

    谢谢、Vivek。 我认为这就结束了这种情况。 最好是 TRM 解释说 VBUSP 支持字节访问。


    此致、
    François μ s。

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

    谢谢 Francois。 将会记录这一点。

    Vivek Singh

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

    您好、Vivek、

    很抱歉重新打开此问题... 您能否确认通过 VBUSP 对外设寄存器进行字节访问时不会造成访问时间损失?


    此致、
    François μ s。

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

    正确。 字节访问与 16/32 位访问不应有访问损失。

    此致、

    Vivek Singh