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.

[参考译文] CCS/TMS320F28379D:用于接收中断和 Echoback 的 SCIA 设置

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/666087/ccs-tms320f28379d-scia-settings-for-receive-interrupt-and-echoback

器件型号:TMS320F28379D

工具/软件:Code Composer Studio

我想使用一个接收中断来执行 example_2837xDSCi_Echoback.c。

我尝试了以下设置

InitPieCtrl();

//
禁用 CPU __interrupts 并清除所有 CPU __interrupt 标志:
//
IER = 0x0000;
IFR = 0x0000;

//
使用指向 shell 中断
//服务例程(ISR)的指针初始化 PIE 矢量表。
//这将填充整个表,即使在
本示例中未使用__interrupt //也是如此。 这对于调试很有用。
//可以在 F2837xD_DefaultIsr.c 中找到 shell ISR 例程

InitPieVectTable();
EALLOW;
PieVectTable.SCIA_RX_INT =&sciaRxFifoIsr;

EDIS;

scia_fifo_init(); //初始化 SCI FIFO
scia_echoback_init ();//初始化用于 echoback

PieCtrlRegs.PIECTRL.bit.ENPIE 的 SCI = 1;//启用 PIE 块
PieCtrlRegs.PIEIER9.bit.INTx1 = 1;// PIE 组9、INT1
PieIER9
= 0x100;// PIE 组9 = 0x2 INIER9;PIE 组= 1 //启用 CPU INT
;

void scia_echoback_init ()
{
SciaRegs.SCICCR.all = 0x0007;

SciaRegs.SCICTL1.all = 0x0003;
SciaRegs.SCICTL2.all = 0x0003;
SciaRegs.SCICTL2.bit.TXINTENA=1;
SciaRegs.SCICTL2.bit.RXBKINTENA=1;


SciaRegs.SCIHBAUD.ALL = 0x0000;
SciaRegs.SCILBAUD.ALL = 0x00C2;

SciaRegs.SCICTL1.all = 0x0023;
}

中断 void sciaRxFifoIsr (void)
{
uint16 i;

i=SciaRegs.SCIRXBUF.all;//读取数据

scia_xmit (i);

SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1;
SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;

SciaRegs.SCIRXST.bit.RXRDY=1;

PieCtrlRegs.PIEACX.ALL = PIEACK_group9;
}

void scia_fifo_init()
{
SciaRegs.SCIFFTX.ALL = 0xE040;
SciaRegs.SCIFFRX.ALL = 0x2044;
SciaRegs.SCIFFCT.all = 0x0;
} 

它应该是一个接受 uint16并回波的简单代码。

根据上述设置、当通过 COM 端口发送字符时、不会触发中断子例程本身。

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

    您是否看到数据在 SCI 引脚上传输? 您是否在接收缓冲区/FIFO 中看到接收到的数据、但未触发 ISR、或者根本未接收到数据?

    能否成功运行 sci_loopback 中断示例并获取 RX 中断? 如果是、与此代码有何不同?