主题中讨论的其他器件:INA240
C++语言如何能够将 保留 的寄存器位 31:16读取 到 Int32_t 变量数组中、但 在 REG17、18、19、20中只有较低的位11:0被标记为 R0? 为什么 Tivaware 会尝试读取 FIFO 寄存器中的保留寄存器位? 更好的是 Thumb 指令集在某种程度上不允许在保留空间中读取寄存器? 如果是 、UINT32_t 变量传输如何影响未 邀请到该方的 REG17、18、19、20的高31:16位上试图崩溃的已合规应用程序? FIFO 读取是一个1:1触发电平事件到任何 C++数组变量单元中、在任何高于0的序列发生器中、情况似乎并不总是如此。
HWREG 32宏通过 适当 的 uint16_t 变量数组读取这些寄存 器、但不会返回所有序列发生器1或2配置步骤的 FIFO 第0步结果数据。 通常 、只有当被读取到 uint16_t 数组中时、步骤1或2才不是通过 FIFO 的典型中断处理的预期数据。 似乎能够正确读取循环 FIFO 的任何单步执行、因为数据表 中的裕度 已经排除了有关头指针或尾指针在 采样后何时准确变化的许多细节。 每个人都只是假设最后 一个采样步骤的 IE 结束时尾指针返回到第0步。 然而、数据表 为 进行假设留下了所有此类必要的详细信息、其中大多数错误或不 会在所有序列发生器中产生一致的结果。 Tivaware 原油 ADCSequenceDataGet ()试图突破极限 ,以产生无用的函数调用。 请编写 FIFO 读取数据函数、以便正确地用于业务、它可以传递任何单步变量、以便在不重新调整所有 FIFO 步进数据的情况下将序列发生器中的任何单步数据检索到 C++ uint_16数组中。 如果它无法对所有序列发生器执行该简单的步进、则 M3没有 M4 ADC 存在问题。
使用 while (1) 等待循环 中断处理的 Tivaware 示例项目不是处理 NVIC 中断 以在 任何 强大的应用中检索 FIFO 数据的安全或实用方法。 请在未来的示例软件中使用适当的 NVIC 处理中断 、这 是 任何 MCU 业务应用中使用的典型方法。 在大型应用中、不会使用任何主体、while (1)循环 等待来自 GPTM、PWM0、PWM1、 GPIO 或任何其他可能的触发源的触发 ADC 采样产生中断。 这一特性使得 while (1)循环更多地采用较低的编程形式 、从而浪费宝贵的 CPU 时间并教授错误的编程方法! 同样 、while (1)循环不是 TI 工程师确认 ADC 模块没有潜在问题的好方法。 也许 TI 知道 存在奇怪的行为 M4 ADC 序列发生 器,并且正在尝试更改典型和正确 ADC 外设使用的叙述 ,试图 通过 ADCSequnceDataGet ()来覆盖它们?
ADC 触发器应按顺序激活采样转换、这是对序列发生器0步进执行的 、但似乎经常跳过 SS1或 SS2 (ADC0/1)中的第0步或第1步、不确定 SS3。 Tivaware 省略了任何检索特定序列发生器步骤的能力 、这似乎有点欺骗性。 ADC0 序列发生器中也存在底层行为、 ADC1 控制 19:16通道、导致 ADC0 和 ADC1之间共享控制出现问题 、在非 1个但2个 ADC 模块中的模拟多路复用器 Tivaware 控制中、似乎遗漏了该控制。 由于 M3可以 通过单个 ADC 轻松完成、因此似乎忽略了有关 ADC0和 ADC1如何检索任何通道的特定 FIFO 数据的信息。 ADC 模块配置中存在一些问题、勘误文档中未予披露。

