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.

[参考译文] F28M35H52C:C28x 与 M3内核上的外部中断延迟

Guru**** 2538930 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/736688/f28m35h52c-external-interrupt-latency-on-c28x-vs-m3-cores

器件型号:F28M35H52C

您好!

我正在进行一项设计、其中 F28M35H52C1侦听外部中断引脚上的 GPS PPS 信号。 我将通过切换中断 ISR 内的引脚来比较外部中断的延迟。

当在 M3内核上设置此中断时、我看到延迟为930-950ns。 当通过 C28x 内核上的 XINT1设置同一信号时、我看到延迟为400-700ns。 我对实际延迟值的担心程度与对延迟变化的担心程度相同。 我将使用由源 GPS PPS 信号触发的以800MHz 运行的数字发现2来测量这些值。  

两个内核都以100MHz 运行。 为什么 C28x 端与切换 ISR 中的引脚所需的时间如此不一致。  

C28x 中断设置:

EALLOW;
//设置 PPS 引脚用于外部中断、以便在每个
//上升沿调用 pps_interrupt。
PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
PieCtrlRegs.PIEIER1.bit.INTx4 = 1;
XIntertRegs.XINT1CR.bit.ENABLE = 1;
XIntertRegs.XIntC1CR.bit.PPS = 1;GpioRegs.XINT4CR.GPIO_TRIPSEL = 1
;GPIO_TRIPTRIPTRIPTRINTRINTR_BIT.GPIO_TRINTRIGN = 1
PieVectTable.XINT1 =&pps_ISR;
EDIS;

__interrupt void pps_ISR (void)
{
GpioDataRegs.GPATOGGLE.bit.GPIO15=1;

//确认此中断以从组1获取更多内容
PieCtrlRegs.PIEACX.ALL = PIEACK_Group1;
} 

M3中断设置:

GPIOPinTypeGPIOInput (GPIO_Porta_base、GPIO_PIN_7);

//启用处理器中断。
IntMasterEnable();

//启用中断*/
GPIOIntTypeSet (GPIO_Porta_base、GPIO_PIN_7、GPIO_RISING _EDGE);
GPIOPinIntEnable (GPIO_Porta_base、GPIO_PIN_7);
GPIOPortIntRegister (GPIO_Porta_base、ISR_PPS);

中断空 ISR_PPS ()
{
GPIO_TOGGLE (BURST_CHECK);

//清除中断标志,以便不会反复调用中断。
GPIOPinIntClear (GPIO_Porta_base、GPIO_PIN_7);
} 

是否有办法使 C28x 内核以更确定的方式为 ISR 提供服务? 我不介意它需要的时间是长500ns、还是每次都非常接近相同的数字。

谢谢、

Aditya

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

    我们正在研究这个问题。 请在下周三之前收到我们的回复。

    此致、
    曼诺伊