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.

[参考译文] TMS320F28P650DK:我是否需要在后处理块中手动更改为 TRIPHI 和 TRIPLO 的符号位?

Guru**** 2553450 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1310304/tms320f28p650dk-do-i-need-to-change-to-the-sign-bit-of-triphi-and-triplo-manually-in-post-processing-blocks

器件型号:TMS320F28P650DK
主题中讨论的其他器件:SysConfig

大家好、

我对 AdcxRegs.ADCPPBxTRIPHI 和 AdcxRegs.ADCPPBxTRIPLO  寄存器的符号位(LSIGN 和 HSIGN)有疑问。 如果我需要 为高限值和低限值设置负值、我可以在不向 LSIGN 和 HSIGN 位分配1的情况下提供这些值吗  ?它们将被自动更新、或者我是否需要更改符号位以手动提供 AdcxRegs.ADCPPBxTRIPHI.bit.LIMITHI 和 ADcxRegs.ADCPLITRIPHI.bit.BILTLO 中的绝对值?

谢谢。

萨扬

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

    尊敬的 Sayan:

    是的,你可以用 ADC_setPPBTripLimits ()函数给 triphi 和 triplo 指定负值。  这个函数将自动置位 LSIGN 和 HSIGN、并在 ADCPPBxTRIPHI 和 ADCPPBxTRIPLO 寄存器的 LIMITHI 和 LIMITLO 字段中执行二进制补码分配。

    此致、

    约瑟夫

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

    你好、Joseph。

    感谢您的答复。 但如果我假设使用 AdcaRegs.ADCPPB1TRIPHI.bit.LIMITHI =-1000;这是否也会设置 HSIGN 位?

    谢谢。

    萨扬  

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

    尊敬的 Sayan:

    这里有一个重要的澄清。  如果使用 driverlib 函数  ADC_setPPBTripLimits ()为 triphi 和 triplo 设置有符号值,则如果值为负,则无需设置 HSIGN(即 HSIGN)和 LSIGN(即 LSIGN)。  driverlib 函数会自动为你执行此操作。 但是、如果您使用 AdcaRegs.ADCPPB1TRIPHI.bit.LIMITHI 或 AdcaRegs.ADCPPB1TRIPLO.bit.LIMITLO 形式的位字段方法输入负值、那么您必须手动设置 HSIGN 或 LSIGN。

    此致、

    约瑟夫

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

    您好、Joseph:

    感谢您的回答。 这将清除查询。 但我在设置基准值 OFFREF 时遇到了另一个困难。 在 TRM  TMS320F28P65x 实时微控制器技术参考手册(修订版 A)的"18.8.2 PPB 误差计算 TRM"一节中 、规定"误差计算是通过先将 ADCPPBxCONFIG.CONFIG 指向所需的 SOC、然后向 ADCPPBxOFFCAL.OFFREF 寄存器写入一个值来完成的。"。 但在 PPB 方框图中它提到使用了 ADCPPBxOFFREF。 我是否应使用  

    AdcaRegs.ADCPPB1OFFREF.all =值或 AdcaRegs.ADCPPB1OFFCAL.OFFREF.ALL =用于指定参考设定点的值吗?
    抱歉遇到另一个问题、但我需要确切地在使用 PPBRESULT 进行上限或下限交叉检测之前了解这一点。
    谢谢。
    萨扬
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Sayan:

    这些 PPB 寄存器的使用取决于您想要完成的任务。  下面简要总结了:

       - ADCPPBxOFFCAL.OFFCAL 在已知的系统偏移必须被校准的情况下使用。  例如、您可能已经证明、由于接地/电源噪声和 VREF 不准确、所有转换都要高100个计数。  然后、您会希望所有结果都由该故障补偿、因此您只  需指定 AdcaRegs.ADCPPB1OFFCAL.OFFCAL.OFFCAL.ALL = 100、即可使用 PPB 块校准掉这个系统错误。

       - ADCPPBxOFFREF.OFFREF 在结果需要偏移一定量时使用,这不是因为可以通过 OFFCAL 纠正的轻微校准问题。  在16位模式下、数字结果为0至65535、即单极。  假设您有一个应用需要双极性结果、其中数字结果低于中位数(VREFHI/2)、值将为负、高于中位数、值将为正。  然后、你将写入 AdcaRegs。  ADCPPBxOFFREF.OFFREF.ALL = 32768。  这现在会将数字结果从0到65535移动到-32768至32767、这本质上会将结果转换为双极。

    此致、

    约瑟夫

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

    您好、Joseph:

    再次感谢您的答复。 我尝试了使用  ADC_setPPBTripLimits ()函数。 但我对它的论点有些困惑。 该函数定义为  

    ADC_setPPBTripLimits (uint32_t base、ADC_PPBNumber ppbNumber、int32_t tripHiLimit、int32_t tripLoLimit)

    现在我需要使用 ADC 模块"A", PPB"1",上限3000和下限1000 ,我已经发现从 ADCaRegs 的基地址是0x0000_7400。 那么、我可以用基址 ADC_setPPBTripLimits (0x0000_7400、130030001000)调用这样的函数吗? 我在这里找到了地址  

    谢谢。

    萨扬

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

    尊敬的 Sayan:

    是的、您可以明确地为 ADCA 输入基地址值。  我只是想知道您为什么使用 bitfield 方法写入寄存器。  Driverlib 方法支持更多功能、例如设置 PPB 跳闸限值等。  SysConfig、一种基于 GUI 的代码生成方法通过为您自动生成代码来简化此类任务。  SysConfig 与 driverlib 函数一起使用、因此使用 driverlib/SysConfig 方法有好处。  您可能正在从基于 bitfield 的旧工程进行导入、这很好。  我只是想指出这一点,以防你不知道。

    此致、

    约瑟夫