打印

求助28335 sci buffer

[复制链接]
542|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
351635594|  楼主 | 2019-12-3 09:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
小弟不才 使用scib 连接232芯片 使用FIFO接收数据 中断读出 目前的问题是 FIFO似乎没用起到作用 发送一个数据 和发送6个数据 都是最后一个数据读出 但是中断赋值程序能够顺利的运行 我想问一下如何判断FIFO 中是否收到数据 主要是是我dsp中SCIFFRX数据永远都是0026(FIFO设置为6),换成485也是同样的结果,程序就是普通的赋值程序
   
        ScibRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback
                                   // No parity,8 char bits,
                                   // async mode, idle-line protocol
        ScibRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,
                                   // Disable RX ERR, SLEEP, TXWAKE
        ScibRegs.SCICTL2.all =0x0000;
        ScibRegs.SCICTL2.bit.RXBKINTENA =1; //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 禁止发送中断  开启接收中断
    ScibRegs.SCIHBAUD    =0x0003;//9600  // 波特率设置为9600
    ScibRegs.SCILBAUD    =0x000c;
        ScibRegs.SCICCR.bit.LOOPBKENA =0; // disable loop back  
        ScibRegs.SCICTL1.bit.SWRESET =1;     // Relinquish SCI from Reset  SCI %%%%%%%%%%%%%%%%% 重启SCI
        //ScibRegs.SCIFFRX.all=0x204f;
        //ScibRegs.SCIFFCT.all=0x0;   //这个部分注释掉
        //ScibRegs.SCIFFRX.bit.RXFFIENA = 1;
    ScibRegs.SCIFFTX.bit.SCIRST=0;//复位SCI发送通道
    ScibRegs.SCIFFTX.bit.SCIFFENA=0;//禁用FIFO
    ScibRegs.SCIFFTX.bit.TXFIFOXRESET=0;//持续复位发送FIFO
    ScibRegs.SCIFFTX.bit.TXFFINTCLR=1;//清楚发送FIFO中断标志位
    ScibRegs.SCIFFTX.bit.TXFFIENA=0;//禁用发动FIFO中断
    ScibRegs.SCIFFTX.bit.TXFFIL=0;//发送FIFO深度设为0;

    ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1;//清楚接收FIFO溢出标志位
    ScibRegs.SCIFFRX.bit.RXFIFORESET=0;//禁用FIFO
    ScibRegs.SCIFFRX.bit.RXFFINTCLR=1;//清除接收中断标志位
    ScibRegs.SCIFFRX.bit.RXFFIENA=0;//禁用接收FIFO中断
    ScibRegs.SCIFFRX.bit.RXFFIL=0;//接收FIFO深度设为0

    ScibRegs.SCIFFCT.bit.ABD=0;//禁用波特率自动检测
    ScibRegs.SCIFFCT.bit.ABDCLR=1;//清除ABD标志位
    ScibRegs.SCIFFCT.bit.CDC=0;//禁用ABD对齐
    ScibRegs.SCIFFCT.bit.FFTXDLY=0;//FIFO延时0

    ScibRegs.SCIFFTX.bit.SCIRST=1;//使能SCI的接收和发送通道
    ScibRegs.SCICTL1.bit.SWRESET =1;//重新使能SCI
interrupt void SCIBRX_ISR(void)
{
   Uint16 i;
   //FIFO 满逐个接收数据
   for(i=0;i<ScibRegs.SCIFFRX.bit.RXFFIL;i++)
   {
        bianmaqi[i]=ScibRegs.SCIRXBUF.bit.RXDT;
   }
        ScibRegs.SCIFFRX.bit.RXFFOVRCLR=1;//清除溢出标志
        ScibRegs.SCIFFRX.bit.RXFFINTCLR=1;//清除中断标志
        PieCtrlRegs.PIEACK.bit.ACK9= 1;
}

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

1

帖子

0

粉丝