器件型号: F29H859TU-Q1
您好:
我在 SDK 中看到、一些 32 位寄存器使用 HWREG(32 位访问,预期)进行访问、但也使用 HWREGH(16 位访问)或 HWREGB(8 位访问)。
1 我可以在文档中找到允许在 32 位寄存器上进行 16 位或 8 位访问的位置?
2 在 32 位寄存器上进行 16 位或 8 位写入会有什么损失(需要执行读取/修改/写入操作而不是简单的写入?) 在文档中哪里可以找到这些信息?
谢谢你
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
您好:
我在 SDK 中看到、一些 32 位寄存器使用 HWREG(32 位访问,预期)进行访问、但也使用 HWREGH(16 位访问)或 HWREGB(8 位访问)。
1 我可以在文档中找到允许在 32 位寄存器上进行 16 位或 8 位访问的位置?
2 在 32 位寄存器上进行 16 位或 8 位写入会有什么损失(需要执行读取/修改/写入操作而不是简单的写入?) 在文档中哪里可以找到这些信息?
谢谢你
您好、Vivek、
谢谢你。 我认为 TRM 没有明确提到某些外设寄存器可能是按字节或半字访问的。 观察 driverlib 代码、我看到许多 HWREGB 访问被访问到一些寄存器的最低有效字节、因为这些寄存器的 3 个最高有效字节是保留的。
那么、应该假设什么呢? 允许对所有外设寄存器进行字节和半字访问? 这就是我要假设的。 如果不是这样、因为 TRM 似乎没有明确显示此信息、规则是什么?
对于上面的问题 2、我假设在通过 HWREG8 或 HWREG16 宏进行写入时不执行读取 — 修改-写入操作。 请确认。 但是、我想知道使用 HWREG8 读取包含 3 个 MSB 中 R/W1C 或 R/W0C 位字段的 32 位寄存器的 LSB 时会发生什么情况。 是否会像预期的那样仅对 LSB 执行读取设置为 0 或 1 的操作?
此致、
François μ s。
您好、
那么、应该假设什么? 允许对所有外设寄存器进行该字节和半字访问?
情况可能并非如此。 有些外设的最小访问权限为 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