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:SCIB RX 中断问题。

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/569215/tms320f28335-scib-rx-interrupt-problem

器件型号:TMS320F28335

我无法在 Rx 引脚上获得中断。 器件 TMS320F28335

首先、我配置引脚

EALLOW;

GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0;//为 GPIO9启用上拉

GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0;//启用 GPIO11 (SCIRXDB)

GpioCtrlRegs.GPAQSEL1.bit.GPIO11 = 3;//异步输入 GPIO11 (SCIRXDB) GpioCtrlRegs.GPQSEL1.bit.GPIO11 = 3;//为
GPIO11.x 配置 GPIO11./GPIO9

=操作;GPO2/ GPIO9.GPIO11.= GPIO9.GPIO11./ GPIO9.GPIO11.0XDB = GPIO9.GPIO9.GPIO9.GPIO11.GPIO9.GPIO9.GPIO9.GPIO11./ GPIO9.GPIO11.GPIO11.GPIO11.GPIO11.GPIO9.GPIO11.


其次、我配置寄存器

ScibRegs.SCICCR.all =0x0007;// 1个停止位、偶校验、无环回
//无奇偶校验,8个字符位,
//异步模式,空闲线协议

ScibRegs.SCICTL1.all =0x0003;//启用 TX、RX、内部 SCICLK、
//禁用 RX ERR、SLEEP、TXWAKE

ScibRegs.SCICT2.bit.RXBINTENA=1;

ScibRegs.SCIHBAUD = 0x0000;
ScibRegs.SCILBAUD = SCI_PRD;

SciaRegs.SCICCR.bit.LOOPBKENA=0;

ScibRegs.SCIFFTX.All=0xC021;

ScibRegs.SCIFFRX.All=0x0001;//缓冲区大小更改为1以避免 FIFO 中的缓冲并立即处理数据

ScibRegs.SCIFFCT.All=0x00;

SCICTL1.all =0x0023;SCICTL1 //从 Reset
ScibRegs.SCIFFTX.bit.TXFIFOXRESET=1撤回 SCI;
ScibRegs.SCIFFRX.bit.RXFIFORESET=1;

我启用中断

PieVectTable.SCIRXINTB =&sciRxFifoIsr;//添加用于修复 CPU UART
PieCtrlRegs.PIEIER9.bit.INTx3=1;//SCIRXINTB
IER = 0x100;//启用 CPU INT
EnableInterrupts ();//启用全局中断

这是一个中断例程。

中断空 scibRxFifoIsr (void)
{
//if (ScibRegs.SCIRXST.bit.RXRDY = 1)
uint8 chr = ScibRegs.SCIRXBUF.all;//读取数据

ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1;//清除溢出标志
ScibRegs.SCIFFRX.bit.RXFFINTCLR=1;//清除中断标志
PieCtrlRegs.PIEACK.All|=0x100; //发出 PIE ACK
}

我在示波器上看到的是来自 RX 引脚的数据包,但是中断不会发生。

 


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

    我认为 ScibRegs.SCIFFRX.All=0x0021;//您应该启用 Rx FIFO 中断


    此外、请确保启用 PIE。
    PieCtrlRegs.PIECTRL.bit.ENPIE = 1;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢。 就是这样。 我也应该启用 FIFO 中断。