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.

[参考译文] TMS570LS1227:转换启动功能、可使 ADC 与 PWM 同步

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/951128/tms570ls1227-start-of-conversion-features-to-synchronize-adc-with-pwm

器件型号:TMS570LS1227
主题中讨论的其他器件:HALCOGENTMS570LS1224

您好!

我们致力于电机控制、我们需要精确地测量三个电流值、并与 PWM 精确同步两次、PWM 频率为10kHz (100us)。 使用相同的配置(PWM-> ADC 转换启动(SOC)->转换结束(EOC)->控制任务)、我们的软件在 TMS570LS1227ZWT 上运行良好。 但在 TMS570LS1227PGE 上、我们只能在10us 的窗口内测量 PWM "载波"的 CTR=ZERO。

我们使用 HALCoGEN:

请、您能给我们一些建议、告诉我们哪些事情出错了吗?

感谢你能抽出时间。

Alberto Sanz

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

    由于配置图片不可见、我在下面进行解释:

    使用 HALCoGEEN:我们启用 PWM6的 SOCA 和 SOCB 并选择 SOC 中断事件、对于 SOCA 为 CTR_DOWN_CMPA、对于 SOCB 为 CTR_UP_CMPB; 我们在软件中设置对称载波: etpwmREG6->TBCTL |=(uint16)(((uint16) 1U <<<);1U。 在 ADC 配置部分、我们选择 ADC1组事件由 EPWMA2进行分类、ADC1组1由 EPWMB 进行分类。  ADC1组1的 EOC (转换结束)触发控制任务。  

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

    您好、Alberto、

    两个器件上的设置有何差异? 这两个器件上的 PWM 和 ADC 是相同的。  

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

    QJ  Wang、您好!
    HALCoGen 中 PWM_EVENT_>SOC_>EOC 的设置是相同的、我也会向您发送一个包含时钟设置的 pdf 文件(这是默认的 HALCoGen 设置)、也许是有问题的。 因为在 TMS570LS1227PGE 上、SOC 在10us (PWM 周期为100us)的窗口内、在 PWM "载波"的 CTR=ZERO 附近"工作"。
    谢谢、  
    Albertoe2e.ti.com/.../4010.Clocks-settings.pdfe2e.ti.com/.../4174.PWM_2D00_SOC_5F00_EOC-Configuration.pdf

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

    我在您的配置中没有看到问题。 对于 ZWT 封装、ADC 触发器(SOCA 和 SOCB)在整个窗口中工作、但是对于 PGE 封装、它只在 DOWN_CMPA 和 UP_CMPB 接近 CTR_ZERO 时工作。 我的理解是否正确?

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

    更多或更少。 对于 TBPRD = 4000、如果我们设置 CMPA 且 CMPB = 3000、则测量值对应 于 CMPA 且 CMPB = 300。 但 PWM 输出正确、 对应 于 CMPA 且 CMPB = 3000。  

    如果 CMPA 和 CMPB 设置为高于4000、则不存在 SOC、正确答案是什么。  

    感谢你能抽出时间。

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

    您如何知道 SOC 是在 CMPA=300而不是3000时生成的?  

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

    因为我使用示波器监测 PWM 的输出和电流、我可以看到测量的时间。

    您(TI)是否在 TMS570LS1227PGE 上测试过这种配置、并知道什么可能是错误的、或者我可能是错误的?  

    我不`ll 任何提示、谢谢。

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

    在您的设置中、SOCA 是在 CA 关闭时生成的、SOCB 是在 CB 打开时生成的。 CA=CB=3000。 实际上、SOCA‘s 的生成被延迟到 counter=300 (向下)、SOCB 在计数器=300 (向上)时提前生成。 您的 ADC 引脚上是否有一个永恒的电路? 外部电路可能会增加输入信号的延迟?   

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

    我`s 你的帮助,但这不是问题。 我们有 一个低通滤波器、但其截止频率远高于电流频率或 di/dt。 此外、我们已将比较值从0设置为4000、并且在大约 CTR=0的10us (PWM 周期为100us)窗口内进行测量。 如果这是延迟问题、我们将沿所有电流波进行测量、尽管延迟。

    我知道这毫无意义、但就好像 SOC 和 PWM 的时基是差动的一样。 就像 SOC 除以10一样。

    您能否给我发布或发送一个测试过的代码、以及类似的配置、以便我检查我的错误。 我没有找到任何具有这种配置 的代码示例或教程、我认为这是 TMS570LS1227PGE 的一项重要功能。   

    我正在使用 HALCoGen、在为 TMS570LS1227PGE 生成代码时、它可能会出现问题。

     

     

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

    我的测试显示 SOCA 按预期工作。

    以下是我使用 TMS570LS1224 Launchpad 进行的测试

    ADC 组1、ADIN[0]和 AD[18]。 ADIN[0]被连接至 ePWM1A、而 ADIN[18]被连接至 ePWM1B

    2. ePWM1A 和 ePWM1B:10kHz、上数-下数模式、PRD=4000、CMPA=2000、CMPB=1800和2200 (第二次测试)。  

      ePWM1A:在 CAU 被强制为高电平、在 CAD 被强制为低电平

      ePWM1A:在 CBU 被强制为高电平、在 CBD 被强制为低电平

    3.在 UP_CMPA 上生成 SOCA

    预期的 ADCIN[0]和 ADCIN[1]值应为:4096和4096 (CMPB=1800)和 4096和4096 (CMPB=2200)

    我的测试结果与预期值相同。

    随附的测试用例(main.c):

    e2e.ti.com/.../8422.sys_5F00_main.c

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

    非常感谢您的帮助。

    我看不到我的代码(SOC 部分)与您的代码相比有什么问题、我没有看到"adcREG1->OPMODECR |=(0x1 << 24);"这行、但我认为这不是问题、我无论如何都会检查它。 我假设"adcInit"和"etpwmInit()"由 HALCoGen 生成、而无需更改任何内容。

    由于您确信  TMS570LS1224 和 TMS570LS1227ZWT (TMS570LS12 HerculesTm 开发套件)上的工作必须在 TMS570LS1227PGE 上工作,所以问题必须在我的硬件中,我将更准确地检查它。

    最后一个问题:

    我在 TMS570LS1227ZWT (TMS570LS12 HerculesTm 开发套件)上工作的代码比 在 TMS570LS1227PGE 上运行的代码更简单。 第一种是 SOC 中断和 EOC ADC1Group1中断、而最新的是也可能中断和 RTI 比较中断(电源的看门狗 TPS65381)。 尽管我认为这种情况很少见、但 RTI 是否可以比较中断或中断会干扰 SOC 中断?  

    感谢你能抽出时间。

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

    感谢您的帮助、

    Alberto Sanz

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

    您好!

    来自 RTI 的中断、不会影响 SOCA 触发器。

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

    如果 SOCA 是在 UP_CMPA 上生成的、当 CMPA=2000且 CMPB=2200时、ADCIN[18]的预期值为0而不是4096。 可能是输入错误。  

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

    QJ Wang、您好、 我已经测试了您的"配置"、SOCA 无法按预期工作。 大约5us (400个周期)存在巨大的延迟。 因此、如果 CMPA=2000、CMPB=2200、则 ADCIN[18]的预期值为0、您有4096。

     我有一个问题、同一 ADC 的两组转换之间的最短时间是多少?

    这是电容器放电时间(在本例中为1.5us)。 我是对的吗?

     

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

    我的测试结果:

    如果 CMPA=2000、CMPB=2200、则 ADIN[18]=0

    2.如果 CMPA=2000、CMPB=1800、则 ADIN[18]=4096

    请检查以下设置:

    /**-当计数器达到0时强制 EPWMxA 输出低电平、当计数器达到比较 A 值时强制输出高电平*/
    etpwmREG1->AQCTLA =(uint16)((uint16) ActionQual_set << 4U)
    |(uint16)((uint16) ActionQUAL_CLEAR << 6U);

    /**-当计数器达到0时强制 EPWMxB 输出低电平、当计数器达到比较 B 值时强制输出高电平*/
    etpwmREG1->AQCTLB =((uint16)((uint16) ActionQual_set << 8U)
    |(uint16)((uint16) ActionQUAL_CLEAR << 10U);

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

    您好!

    我的主代码与您的代码几乎相同、但我使用的是 PWM5:

    etpwmREG5->TBCTL |=(uint16)((uint16) 1U <<1U);// Simé trica (三角形)

    etpwmREG5->TBPRD = 4000U;

    etpwmREG5->CMPA = 2000U;

    etpwmREG5->CMPB = 1665U;

    etpwmREG5->AQCTLA =((uint16)((uint16) ActionQual_set << 4U)
    |(uint16)((uint16) ActionQUAL_CLEAR << 6U);

    etpwmREG5->AQCTLB =((uint16)((uint16) ActionQual_set << 8U)
    |(uint16)((uint16) ActionQUAL_CLEAR << 10U);

    我使用 SOCB 、它在 UP_CMPB 中生成。 "adcInit"和"etpwmInit"由 HalCoGen 生成、我在它们中没有做任何更改。

    ADIN[0]被连接至 ePWM1B、而 ADIN[17]被连接至 ePWM1A

    我的测试结果为:

    1.如果 CMPA=2000、CMPB=1630、ADIN[0]=4096 、 ADIN[17]=0

    2. 如果 CMPA=2000、CMPB=1635、ADIN[0]=4096 和 ADIN[17]=59

    如果 CMPA=2000、CMPB=1640、ADIN[0]=4096 、 ADIN[17]=416

    4. 如果 CMPA=2000、CMPB=1660、ADIN[0]=4096 、 ADIN[17]=3598

    5. 如果 CMPA=2000、CMPB=1665、ADIN[0]=4096 和 ADIN[17]=4095

    6. 如果 CMPA=2000、CMPB=2200、ADIN[0]=4096 和 ADIN[17]=4096

    延迟为370 个时钟周期(4.6us)、ADC 输入的上升时间约为30 个时钟周期。

    请找到随附的一个文件、其中包含 PWM 的输出和 ADC 的输入(它们之间有一个缓冲器和一个低通滤波器)。 您可以注意到、几乎没有延迟(20ns)、ADC 输入信号的上升时间为400ns、32个时钟周期。  

    在此配置中、您只使用一组转换、但在我们的应用中、我们将使用两组转换。  您是否知道、同一 ADC 的两组转换之间的时间最短?  

    感谢你能抽出时间。

    e2e.ti.com/.../2313.Delay.pdf

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

    您不理解我的测试目的。 我的测试是为了表明触发没有延迟。

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

    我完全理解它。 实际上、当您在第一个帖子中说 CMPB=2200时、预期值为4096时、我向您说这是错误的、被扩展的值为0。

    您的测试表明、触发 没有延迟 (或低于200个时钟周期)。 但多路复用测试显示、触发器具有 370 个时钟周期的延迟。 请仔细阅读我之前的帖子、我认为您误解了它。 您是否有任何疑问?  您已经测试了 TMS570LS1224、我已经使用 Halcogen 测试了 TMS570LS1227PGE。  这为您提供了一些关于可能出现的问题的线索?

    请回答这个问题:在我的电机应用中、我使用两组相同的 ADC 来测量相同的三个通道。 两个触发器之间是否有最短时间?

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

    [报价用户="Alberto Sanz"]两个触发器之间是否有最短的时间?

    在触发多个组时、组优先级决定转换顺序。 三个组之间按降序转换的优先级为:

    1.事件组

    2.组1.

    3.组2.

    如果组1和组2由您的测试中的一个触发信号(SOCB)触发、则组2在组的转换完成之前不会开始采样。

    在我的测试中、我还尝试了 CMPB=1900、1950、2050、2100、这没有问题、没有延迟。

    在您的测试中、ADIN[0]始终为高电平(4096)、无延迟。 ADIN[17]上的外部滤波器电路可能会导致延迟。  

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

    您好!

      所有通道中都有370个时钟周期的延迟。 因此 、ADIN[0]始终为高电平(4096)并不n`t 意味着没有延迟(ePWM1B 在 CBU 被强制为高电平、而 SOCB 在 CBU 上生成)。 我可以n`t 外部滤波器电路不会导致延迟(请参阅 delay.pdf)。  

    n`t 为 ADC (VCCAD)提供5V 电压、我不知道这是否是一个问题或其他连接。

    无论如何、我的电机控制代码工作正常、我知道 Exat 延迟、我可以将触发器设置为在需要时准确采样。

    在 SOC 测试中、我只使用一个组。 在电机控制代码中、我 在 PWM 周期内使用 ADC1的组事件和组1分别使用 SOCA 和 SOCB 对三个相同的通道进行采样。

    我认为、ADC 组 在 完成转换后才会开始采样。 我认为每个通道在每个组中都有三个采样电容器、因为我在比转换时间更短的时间内进行测量非常接近。  

    感谢你能抽出时间、

    Alberto Sanz

       

        

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

    我在回复中遗漏了组编号:

    如果组1和组2由您的测试中的一个触发信号(SOCB)触发、则组2在组的转换完成之前不会开始采样。

    应为:

    如果组1和组2由测试中的一个触发信号(SOCB)触发、则组2在组1的转换完成之前不会开始采样。