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.

[参考译文] TMS320F28335:ADC 问题

Guru**** 2390755 points
Other Parts Discussed in Thread: TMS320F28335, TMS320F28334

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1059380/tms320f28335-adc-issues

器件型号:TMS320F28335
主题中讨论的其他器件: TMS320F28334

您好!

 几年来、我们一直在将 TMS320F28335完美地应用到我们的高级步进驱动器中。

现在、对于供应链上的问题、我尝试使用具有 相同封装的 TMS320F28334。

但我发现 ADC 工作不正常。 在我们的应用中、转换与 PWM 同步。

我已对工程进行了修改、以使用此新模型、仅更改 GEL 和链接器文件。 工作代码完全相同。

要使用此 DSP、我应该更改什么? 理论上只能更改内存大小!

此致。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="224984" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forume/1059380/TMS320F28335-adc-issues"]要使用此 DSP、我应该更改什么? 理论上只更改内存大小!

    您的应用是否使用 eCAP5或 eCAP6 ( 32位捕捉输入或辅助 PWM 输出)?

    数据表显示 TMS320F28335具有 eCAP1/2/3/4/5/6、但  TMS320F28334只有 eCAP1/2/3/4:

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

    您好、Chester、

    我的应用使用 EPWM1A、EPWM2A、EPWM3A、EPWM4A、电流测量电压到达 ADCINA2和 ADCINA3

    谢谢

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

    Fermin、

    您能描述一下导致 ADC 问题的 F28334发生了什么情况吗?  从您的帖子中、结果的时序似乎在 F28335与 F28334之间不一致?  这将有助于澄清这一点。  这两个器件之间的 ADC 或 PWM 没有差异。

    虽然 F28334与 F28335上的闪存在物理上只有一半、但扇区大小也是1/2、因此仍然有8个扇区、以实现更好的擦除灵活性。  除了前面提到的 eCAP、这是两个器件之间唯一的其他差异。

    现在就提出一些想法、但您的代码中是否有一些嵌入式擦除在移植时可能没有考虑到这一点?

    最棒的

    Matthew

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

    您好!

    我将生成2个 PWM 信号来控制两个线圈中的电流。

    与这些 PWM 同步、我测量与生成的电流相对应的两个电压、并按如下方式提取 ISR 中的转换值:

    中断空 ADC_ISR (空)


      Adc1Res = AdcRegs.ADCRESULT1 >> 4;//将结果存储在全局范围内
      Adc2Res = AdcRegs.ADCRESULT0 >> 4;

    //为下一个 ADC 序列重新初始化
       AdcRegs.ADCTRL2.bit.RST_SEQ1 = 1;      //复位 SEQ1
       AdcRegs.ADCST.bit.INT_SEQ1_CLR = 1;      //清除 INT SEQ1位
       PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;//确认 PIE 中断

    现在、当我获取该 Adc1Res 或 Adc2Res 时、值不会改变、始终= 2339

    修改我的修改后的28334_RAM_lnk.cmd 更改如下:

    //原件

      //RAML1     :origin = 0x009000,length = 0x001000
      //RAML2     :origin = 0x00A000、length = 0x001000
      //RAML3     :origin = 0x00B000、length = 0x001000

    //Adapted
      RAML1     :origin = 0x009000,length = 0x003000   //为.text 空间中存储的变量添加了空间
      RAML2     :origin = 0x00C000、length = 0x001000   //允许编译
      RAML3     :origin = 0x00D000、length = 0x001000

    我可能对每个区域的大小分配有误。 但是、我也尝试过原始 F28334.cmd、也不起作用。

    在回答您的最后一个问题时、我只更改了链接器文件、因为我几年前完成了此开发、现在再也不能更改了。

    谢谢。

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

    DMA 也可以访问 RAML2和 RAML3、在 F28335的早期代码中、是否有可能将它们分配给某些 DMA 用途、而这正是对数据的过度写入?

    当您看到2339时、它是否直接来自 ADCRESULT 的 Adc1Res 变量?  您能否在 ADC_ISR 中的此部分代码中设置断点以确认 ADCRESULT 是否也卡住?

    如果您还可以检查 ADCINREFP/REFM 引脚并记下电压、我们可以确保 ADC 正确加电。

    最棒的

    Matthew

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

    您好!

    在包括 ADCINREFP/REFM 上的电压之前、我已经确保了所有可能的硬件问题... 我以前犯过这个错误很多次了!! ;-)

    我可以停止使用断点、从该停止点可以看到2339的值、但我将重复该测试以肯定的方式响应您关于 ADCRESULT 的问题。

    我将 DMA 用于 SPI 通信、但在测试时、次级微控制器不发送或接收数据。

    谢谢。

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

    您好!

    现在是时候穿上这套蠕虫套装了!!!

    ADCRFM 上的电压不正确、因为 ADCREXT 输入电阻器和 ADCREFP 滤波电容器之间的交叉非常小。

    现在、28334的测量与28335完美!

    顺便说一下、在测试期间、什么是 RAM 中的良好内存分配?

    相反、这是:

    RAML1:origin = 0x009000,length = 0x003000 //为.text 空间中存储的变量添加了空间
    RAML2:origin = 0x00C000、length = 0x001000 //允许编译
    RAML3:origin = 0x00D000、length = 0x001000

    谢谢。

    Fermin

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

    Fermin、

    RAM 分配正常、此器件上的所有 RAM 均为0 WaitState、因此无需担心。  L4 - L7可由 DMA 访问、所以如果你想使用 DMA 读取 ADC 结果、你可以在那里分配一些缓冲区空间、以便 DMA 可以将它们写入 CPU 以便在需要时读取。

    最棒的

    Matthew

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

    非常感谢。