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.

[参考译文] RM46L852:与 CPU 内存相关的 RM46L852 MibSPI 缓冲器

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1110912/rm46l852-rm46l852-mibspi-buffers-relation-to-cpu-memory

器件型号:RM46L852
主题中讨论的其他器件: ADS1258

尊敬的支持:  

我们实施了包含 RM46L852和两个模拟器件 AD7124 ADC 的电子电路板。

这些 ADC 单独且专门连接到运行安全操作系统的 RM46的 MibSpi 端口(MibSpi3、MibSpi5)。

我们以单次转换模式运行 ADC、而每个 ADC 配置为自动运行9个不同的序列

转换。  

与 TI ADS1258类似、这些 ADC 仅缓冲序列的一个转换结果、强制 μ µC 读取每个转换

完成转换后。 AD7124没有用于指示转换完成的单独引脚 (与 TI 不同、不是_RDY)

ADS1258),但通过下拉数据输出线(DOUT)来实现它。 因此、我们将 ADC DOUT 线路连接到 GIO 引脚

功能。 每次转换开始后、这些 GIO 被感测为低触发 CPU 中断。 而这样 的中断会启动

在主控模式下、通过其相关的 MibSPI 端口读取专用 ADC 通道数据。  

因此、ADC 的所有参数化、控制和读取实际上都是由 CPU 控制的、尽管我们知道、这种情况是这样的

更好地通过 DMA 访问来完成。

到目前为止、选择这种方法是为了避免对额外运行的 CPU 内存的安全相关测试产生任何干扰。

 

现在、对于时间关键型传感器实施、我们会遇到这种 ADC 驱动器导致的不可接受的高 CPU 负载。

因此、我们需要找到一个解决方案、并希望检查是否可以使用 MibSPI 传输组。

我们的数据表和技术参考手册检查结果表明 、自主阅读上述内容没有功能障碍

传输组传输 ADC 的数据。

每个 MibSpi 上的读取 ADC 缓冲器为:

  • 9 x 8位命令寄存器
  • 9 x 8位状态寄存器
  • 9 x 24位数据寄存器
  • 9 x 24位错误寄存器

这可以是576 位或72 字节的总和。

我们想知道、如果 TI 同意我们通过传输组读取此 ADC 转换序列的想法吗?

此外,如果 可能,还应获得一些关于这种执行的建议、指导或甚至例子?

还有一个问题是、DOUT 线路与所选 ADC 的 NOT _RDY 线路相同。

这意味着、由于在同一 MibSpi 端口上之前或之后的传输始终包括 DOUT/不_RDY 低电平、触发的是

每个转换数据读取之间需要启用/禁用这些组。 正如我发现的、这可以通过像那样执行来实现

mibspi.c 的 midspiSetFunctional()方法正在运行,不是吗?

 

通过阅读《技术参考手册》和数据表、我们发现有关传输交互的错误匹配说明

具有存储器的组。

数据表显示、每个 MibSPI 端口有一个专用内存、为传输组提供128个缓冲器。 通过这一点 、我们假设、

MibSPI 外设具有独立的存储器、或者至少以某种方式将硬件与 CPU 存储器分离。

另一方面、技术手册讨论了 DMA 访问。 这可能会引起 两个事务组的调解或累积

存储器范围内的数据。 因此、我们 在 CPU 存储器上进行的安全相关测试可能会检测到许多错误、原因是

硬件对 CPU 存储器(CPU RAM DMA)的直接访问。

技术手册将  DMA 声明为一个选项、数据表和中描述了128个缓冲器的单独硬件

技术手册。 因此我的印象是 ,这些缓冲器是为了 克服这些安全问题而发明的,不是吗?  

因此、我们需要问 、TI 方面的人员是否可以给我们一个关于  128 MibSPI 硬件基础分离的定义语句

缓冲器?

否则,我们似乎不愿意承担风险。   

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="524986" URL"~μ C/support/microrims/arm-based microrims-group/arm -based microrims/f/arm based 微控制器-forum/1110912/rm46l852-rm46l852-mibspi-buffers-relational-to -cpu-memory "]

    128 MibSPI

    缓冲器?

    [/报价]

    MibSPI RAM 是一个与 CPU 内存不同的内存空间。 CPU SRAM 从0x08000000到0x0802FFFF、MibSPI RAM 从0xFF0A0000到0xFF0F0000 (MibSPI5、3、1)。  

    如果 ADC 器件在每次数据转换后生成触发信号、则可以使用 SPI 兼容模式、并使用 DMA 将接收到的数据从 SPIBUF 传输到 CPU 存储器。

    如果 ADC 器件在一组数据转换后生成触发信号、则最好使用传输组并使用 DMA 将数据从 TG 传输到 CPU 存储器。

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

    看起来 CPU 和 MibSPI 使用 RAM、但地址空间不同。 这是否意味着、在 MibSPI 在其专用 RAM 空间上运行期间、从 TI 安全库在 CPU 内存上运行内存测试不会干扰并导致错误内存错误?   

    据我所知、您的建议是在我们选择的 ADC 的情况下在 CPU 存储器范围内使用 DMA? 如果内存测试不会干扰 MibSPi 内存空间、这个内存空间上的 DMA 也是可能的吗?  因为多年前我们向 TI 提出过、如果 CPU 存储器上的 DMA 会干扰 安全库存储器测试的运行、结果是没有定义或足够的说明!

    我们避免 DMA   的建议是使用传输组来收集 ADC 数据、方法是在采集请求后激活某个传输组的触发器功能、并在收集结束时将其停用。 当然、这会在数据收集期间强制自动递增 RX 缓冲区。 这是否起作用? 或者、下一个触发器是否总是覆盖先前的数据、因为数据只收集到保存 TX 的触发传输组缓冲器的 RX 寄存器中?

    如果是这样、如果多个传输组被定义为具有相同触发事件和缓冲区大小、那么所有传输组都是由一个产生的触发器、还是顺序、第一个触发器组、第二个触发器组等同时执行的?   

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

    尊敬的 Mike:

    很抱歉我迟到了。 您是否已解决问题?