TI中文支持网
TI专业的中文技术问题搜集分享网站

F28027串口FIFO收发中断问题

发现发中断函数不停的在调用,估计是SCI配置问题,但对手册研究了半天,没发现问题。TI的手册很费神。
(1)不发数据的时候,Sci_sendTimer1的值不停的在变,加断点也发现不停的在调用发中断函数。这个实在太奇怪了。。
(2)屏蔽掉SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;  // Clear SCI Interrupt flag ,发中断函数完全不触发,我在while中发一次数据,也不会触发中断。
        有这行代码,就不停的在触发发中断函数,实际没有发任何数据出来。
(3)FIFO中断收,没有问题。

请TI工程师,帮我看一下。debug在RAM里运行的。

发中断函数
interrupt void SCITXINTA_ISR(void)     // SCI-A
{
  // Insert ISR Code here
  Sci_sendTimer1++;

  SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;  // Clear SCI Interrupt flag

  // To receive more interrupts from this PIE group, acknowledge this interrupt
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
}

串口初始化函数:
void InitSci(void)
{
  // Initialize SCI-A:
  SciaRegs.SCICCR.all = 0x0007;   // 1 stop bit,  No loopback
                                  // No parity,8 char bits,
                                  // async mode, idle-line protocol
  SciaRegs.SCICTL1.all = 0x0003;  // enable TX, RX, internal SCICLK,
                                  // Disable RX ERR, SLEEP, TXWAKE
  // Baud config 38400bps
  SciaRegs.SCIHBAUD = 0x0000;
  SciaRegs.SCILBAUD = SCI_PRD;

  // FIFO configure enable FIFO
  SciaRegs.SCIFFTX.all = 0xC020;
  SciaRegs.SCIFFRX.all = 0x0021;
  SciaRegs.SCIFFCT.all = 0x00;

  SciaRegs.SCICTL1.all = 0x0023;     // Relinquish SCI from Reset
  SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
  SciaRegs.SCIFFRX.bit.RXFIFORESET  = 1;
}

user3832255:

测试发现,v210版本中的例程:scia_loopback_interrupts

关掉loopback模式后,发送中断函数还是不停在调用,这就很奇怪了??不发数据,为啥FIFO发中断会不停触发,TI工程师给解释一下。

修改代码:

void scia_init()

屏蔽掉//SCI_enableLoopBack(mySci);

发现发中断函数不停的在调用,估计是SCI配置问题,但对手册研究了半天,没发现问题。TI的手册很费神。
(1)不发数据的时候,Sci_sendTimer1的值不停的在变,加断点也发现不停的在调用发中断函数。这个实在太奇怪了。。
(2)屏蔽掉SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;  // Clear SCI Interrupt flag ,发中断函数完全不触发,我在while中发一次数据,也不会触发中断。
        有这行代码,就不停的在触发发中断函数,实际没有发任何数据出来。
(3)FIFO中断收,没有问题。

请TI工程师,帮我看一下。debug在RAM里运行的。

发中断函数
interrupt void SCITXINTA_ISR(void)     // SCI-A
{
  // Insert ISR Code here
  Sci_sendTimer1++;

  SciaRegs.SCIFFTX.bit.TXFFINTCLR = 1;  // Clear SCI Interrupt flag

  // To receive more interrupts from this PIE group, acknowledge this interrupt
   PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
}

串口初始化函数:
void InitSci(void)
{
  // Initialize SCI-A:
  SciaRegs.SCICCR.all = 0x0007;   // 1 stop bit,  No loopback
                                  // No parity,8 char bits,
                                  // async mode, idle-line protocol
  SciaRegs.SCICTL1.all = 0x0003;  // enable TX, RX, internal SCICLK,
                                  // Disable RX ERR, SLEEP, TXWAKE
  // Baud config 38400bps
  SciaRegs.SCIHBAUD = 0x0000;
  SciaRegs.SCILBAUD = SCI_PRD;

  // FIFO configure enable FIFO
  SciaRegs.SCIFFTX.all = 0xC020;
  SciaRegs.SCIFFRX.all = 0x0021;
  SciaRegs.SCIFFCT.all = 0x00;

  SciaRegs.SCICTL1.all = 0x0023;     // Relinquish SCI from Reset
  SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
  SciaRegs.SCIFFRX.bit.RXFIFORESET  = 1;
}

user3832255:

回复 user3832255:

现在测试发现:关掉FIFO模式,只开通SCICTL2中RX/BK INT ENATX INT ENA中断,就不会触发,中断收发也是正常的看来还是FIFO的配置问题,TI的配置太蛋疼了,超级复杂请谁用过FIFO中断收发的兄弟指点一下。

请TI工程师指点一下

赞(0)
未经允许不得转载:TI中文支持网 » F28027串口FIFO收发中断问题
分享到: 更多 (0)