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.

[参考译文] pga970:在SPI-transfer的同时,DEMOD-result-Registers的数据一致性

Guru**** 2601915 points
Other Parts Discussed in Thread: PGA970

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/660287/pga970-data-consistency-of-demod-result-registers-while-spi-transfer

部件号:PGA970

尊敬的TI团队:

我们正在使用pga970,通过SPI将解调器值传输到我们的目标处理单元(读取寄存器DEMod1_DATA和DEMod2_DATA)。 传输每1毫秒触发一次,并以4 16位块的形式传输两个32位值。 我们经常观察到两个问题:

  1. 一个结果寄存器的32位结果中的216位字不匹配(例如,较低的16位已越过溢出,但较高的字未匹配,反之亦然)。
  2. 第二个问题属于同一类型:2个解调器的传输值不匹配,显然为第二个解调器传输了一个新样本。

注册器revision_ID1和revision_ID2提供的修订信息是0x02和0x02。

传输4个SPI数据包时,如何确保64位结果寄存器内的数据完整性?

感谢您的支持!

此致,

Jörn

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

    您能否从主设备共享您的SPI通信源代码? 另外,您是在RESET中通过设备读取这些寄存器,还是通过COM_BUF寄存器读取它们?

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

    您好,Scott:

    我正在通过“正常”寄存器映射读取DEMOD寄存器(DEMOD1_DATA和DEMOD2_DATA,DI页面地址0x0,DI偏移地址0x10和0x14)。 另一种我不知道的方式-除了您网页上的PDF文件之外,TI是否还有其他描述?

    重置时不能进行读数(我们需要定期测量,无法将其重置)。 我对你的问题有点困惑,背景是什么? 操作此设备的推荐方法是什么? 我的假设是:1.初始化设备,2.定期阅读结果“自由运行”。

    代码如下所示:

       /*现在构建SPI-TX命令以读取解调器数据*/
       用于DEMod1的低字的/*命令(响应包含此地址的数据字节和以下字节的数据)*/
       pga970spi_TXFrameLoc.raw           = 0x0万;
       pga970spi_TXFrameLoc.bit.rw        = PGA970_SPI_REG_READ;
    // pga970spi_TXFrameLoc.bit.data      =不在乎:保持不变...
       pga970spi_TXFrameLoc.bit.depage    = pga970_RegAddr[PGA970_REG_DEMod1_DATA_B1].DIPageAddr; /*实际上是0x0 */
       pga970spi_TXFrameLoc.bit.address   = pga970_RegAddr[PGA970_REG_DEMod1_DATA_B1].DIOffsetAddr; /*实际上是0x10 */
       pga970spi_TXFrame_DM1_LoWrd.raw    = pga970spi_TXFrameLoc.raw;

       用于DEMOD1 */的高位字的/*命令
       pga970spi_TXFrameLoc.bit.depage    = pga970_RegAddr[PGA970_REG_DEMod1_DATA_B3].DIPageAddr; /*实际上是0x0 */
       pga970spi_TXFrameLoc.bit.address   = pga970_RegAddr[PGA970_REG_DEMod1_DATA_B3].DIOffsetAddr; /*实际上是0x12 */
       pga970spi_TXFrame_DM1_HiWrd.raw    = pga970spi_TXFrameLoc.raw;

       用于DEMOD2 *的低位的/*命令
       pga970spi_TXFrameLoc.bit.depage    = pga970_RegAddr[PGA970_REG_DEMod2_DATA_B1].DIPageAddr; /*实际上是0x0 */
       pga970spi_TXFrameLoc.bit.address   = pga970_RegAddr[PGA970_REG_DEMod2_DATA_B1].DIOffsetAddr; /*实际上是0x14 */
       pga970spi_TXFrame_DM2_LoWrd.raw    = pga970spi_TXFrameLoc.raw;

       DEMOD2的高位字的/*命令*/
       pga970spi_TXFrameLoc.bit.depage    = pga970_RegAddr[PGA970_REG_DEMod2_DATA_B3].DIPageAddr; /*实际上是0x0 */
       pga970spi_TXFrameLoc.bit.address   = pga970_RegAddr[PGA970_REG_DEMod2_DATA_B3].DIOffsetAddr; /*实际上是0x16 */
       pga970spi_TXFrame_DM2_HiWrd.raw    = pga970spi_TXFrameLoc.raw;

       /*现在使用命令加载SPI-transfer-"queue"。 确保顺序与pga970_1ms()*/中的文档匹配

    TXFrame是以下类型的联合:

    typedef联合

       UINT32     RAW;
       结构
       {
           UINT32 dummy           :8;/*/      
           UINT32 DONT_CARE       :4;/*    最后4位*/
           UINT32 数据            :8;/*/      
           UINT32 RW              :1;/*/      
           UINT32 地址         :8;/*/      
           UINT32 DIPAGE          :3;/*    传输位的第一部分*/
       }位;
    } pga970spi_TXFrame_t;

    SPI帧的顺序为(十六进制):

    02 00 00 00
    02 40 00
    02 80 00
    02 C0 00

    最后是一个"dummy (虚拟)"帧,用于读取前面的读取命令:02 C0 00的数据

    您是否需要更多详细信息?

    感谢你们的支持!

    Jörn

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好Scott:
    有没有关于这一主题的消息? 是否有任何建议,例如,在读取解调器的4 16位字之前,我需要停止某些内容,然后重新启动?
    此致,
    Jörn
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,Jorn:

    COMBUF很重要,因为当微控制器运行时,数字接口只能访问这些寄存器。 要访问DEMOD数据,您必须通过固件中的COMBUF将其传递。

    请参阅数据表的本部分,其中说明了通过COMBUF访问寄存器以与数字接口配合使用的步骤:

    此致,

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

    您好Scott:

    感谢您的回复,但我想微处理器正在重置中。
    现在我了解了您关于"设备正在重置"的问题,我实际上并不理解您指的是n ü µC。 我按照7.5 章中的"编程提示"将micro_interface_control设置为0x03,如下所述:

    ...
    7.5 1重置微处理器并启用数字接口

    要重置M0微处理器和启用数字接口,必须配置以下位:

    1. 将micro_interface_control寄存器中的if_SEL位设置为1。
    2. 将micro_interface_control寄存器中的micro_reset位设置为1。

    7.5 Tm2打开精确参考缓冲器(REFCAP电压)
    ...

    SPI传输器是否没有阴影寄存器处理? 是否可以更改读取顺序,以便先停止对DEMOD寄存器的更新,然后再传输数据并重新启动更新? 寄存器中的相应设置是什么?

    此致,
    Jörn

    顺便说一句:我今天发现,如果你首先访问DEMOD-Registers的高句话,pga970就会传输可重现的错误值。 我已将此信息传达给支持人员,也许您可以直接从他们那里获得有关此问题的更新。

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

    由于此问题已发送至电子邮件,我将关闭该线程。 作为参考,DEMOD输出值的速度太快,不能可靠地读取高低单词,而不使用内部微控制器缓冲数据。 必须启用并运行微控制器才能执行此操作,这将限制数字接口对COMBUF寄存器的访问。 需要对固件进行编程,以便将DEMOD数据馈送至COMBUF寄存器,以便通过数字接口进行读取。

    此致,