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.

[参考译文] TMS320F28388D:同时通过两个内核访问外设结果

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1486770/tms320f28388d-accessing-peripheral-result-by-both-the-cores-simultaneously

器件型号:TMS320F28388D

工具与软件:

大家好、团队成员:

我已经在两个内核中激活了 ADC ISR 和 ecap3 ISR。 我正在读取两个内核中 eCAP 模块的结果、并将其用于控制目的。 我有以下问题、

1.两个内核能否 同时访问 eCAP 结果(ECap3Regs.CAP1)? 如果它们同时访问、两个内核读取的结果会发生什么情况、因为它可以同时触发两个内核的 ECAP 事件?

2.如果我在 ecap3_ISR、ADC_ISR、PWM_ISR 等事件中配置了相同的中断、那么我是否需要在两个内核中进行如下确认?

    EALLOW;
    Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP4);
    ECAP_clearInterrupt(ECAP3_BASE,ECAP_ISR_SOURCE_CAPTURE_EVENT_1);
    ECAP_clearInterrupt(ECAP3_BASE,ECAP_ISR_SOURCE_CAPTURE_EVENT_2);
    ECAP_clearInterrupt(ECAP3_BASE,ECAP_ISR_SOURCE_CAPTURE_EVENT_3);
    ECAP_clearInterrupt(ECAP3_BASE,ECAP_ISR_SOURCE_CAPTURE_EVENT_4);
    ECAP_clearGlobalInterrupt(ECAP3_BASE);
    ECap3Regs.ECCLR.bit.INT = 0x1;
    EDIS;

3.如果 ADC 结果被 CPU 读取,在结果准备就绪之前或转换期间,是之前的值还是随机值?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价用户 id="554226" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1486770/tms320f28388d-accessing-peripheral-result-by-both-the-cores-simultaneously "]

    1.两个内核能否 同时访问 eCAP 结果(ECap3Regs.CAP1)? 如果它们同时访问、两个内核读取的结果会发生什么情况、因为它可以同时触发两个内核的 ECAP 事件?

    [报价]

    两个内核无法同时访问 eCAP 结果。 哪个内核可以访问外设寄存器将由 CPUSEL 寄存器决定。 请参阅此 e2e 主题: https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/881378/tms320f28379d-access-to-the-peripherals

    例如、如果 CPU1拥有 eCAP1、那么只有 CPU1能够从 eCAP 寄存器读取。 CPU2将回读0。 即使两个内核可由同一中断源触发也是如此。

    [报价用户 id="554226" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1486770/tms320f28388d-accessing-peripheral-result-by-both-the-cores-simultaneously "]

    2.如果我在 ecap3_ISR、ADC_ISR、PWM_ISR 等事件中配置了相同的中断、那么我是否需要在两个内核中进行如下确认?

    [报价]

    是的、每个 CPU 都有自己的管道。 因此、确保在每个内核上获得下一个中断意味着您需要同时对这两个内核进行确认。

    如果 ADC 结果是由 CPU 读取的、在结果就绪之前或转换期间、它是之前的值还是随机值?

    每个 CPU、CLA 和 DMA 的 ADC 结果都是重复的、因此在读取结果寄存器时不需要进行仲裁。 如果在读取 ADC 结果之前由 CPU 读取该结果、则该结果将包含之前的值。

    此致!

    Ryan Ma

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

    1.是否可以按顺序访问? 我想我能够在两个内核中看到 ECAP 结果"ECap3Regs.CAP1"。 我将进行检查和确认。

    2.作为所有权只分配给一个 CPU ,只有该 CPU 可以清除 ECAP ECCLR 权限? 所以   两个内核中只有组级别确认?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="554226" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1486770/tms320f28388d-accessing-peripheral-result-by-both-the-cores-simultaneously/5721566 #5721566"]

    1.是否可以按顺序访问? 我想我能够在两个内核中看到 ECAP 结果"ECap3Regs.CAP1"。 我将进行检查和确认。

    [报价]

    请检查并确认。 我也对此进行了测试、如果 eCAP1属于 CPU1、CPU2在从 eCAP 寄存器读取时会读回0。

    作为所有权只分配给一个 CPU、只有该 CPU 可以清除 ECAP ECCLR 对吗? 所以   两个内核中只有组级别确认?  [报价]

    是的。 仅在 PIE 的两个内核中包含组级别确认。

    此致!

    Ryan Ma

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

    感谢快速响应。 我在外站、一旦回来、我将进行检查和确认。 如果两个 CPU 都需要访问 ECAP 结果寄存器、是否只能通过 IPC 发送 ECAP 结果或通过任何其他方法来访问其他 CPU 拥有的 ECAP 结果?

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

    正确答案是使用 IPC 或共享 RAM 等任何其他方法。

    此致!

    Ryan Ma