[求助] DSP28335问题总结

寒塘渡鹤   2015-10-18 20:18 楼主
最近刚接触F28335的SCI模块,在调试的过程中遇到一些问题,望各位前辈能指点指点
1.      部分寄存器位的配置不清楚
1.1    初始化FIFO,  在使用标志清除位 时,用不用先置1后清零,如下所示
         SciaRegs.SCIFFRX.bit.RXFFOVRCLR                = 1;                //清除接收FIFO溢出标志位
         SciaRegs.SCIFFRX.bit.RXFFOVRCLR                = 0;                //清除接收FIFO溢出标志位
         SciaRegs.SCIFFTX.bit.TXFFINTCLR                = 1;                //发送FIFO清除位  0:无效    1:清除FIFO中断标志位
         SciaRegs.SCIFFTX.bit.TXFFINTCLR           = 0;                //发送FIFO清除位  0:无效    1:清除FIFO中断标志位

1.2    初始化FIFO,在使用复位位是,用不用先清0后置1,这样做有何意义,如下所示
         SciaRegs.SCIFFTX.bit.SCIRST                     = 0;        //SCI复位
         SciaRegs.SCIFFTX.bit.SCIRST                     = 1;         //SCI使能
         SciaRegs.SCIFFRX.bit.RXFIFORESET           = 0;        //复位接收FIFO操作
         SciaRegs.SCIFFRX.bit.RXFIFORESET           = 1;        //使能接收FIFO操作



2.      将串口配置成FIFO模式

2.1    使用中断处理,中断产生的条件是什么?是RXFFST(FIFO中断等级标志)和RXFFIL(FIFO中断等级设定位)相等时才发生中断吗?还是前者小于等于后者就可以发生中断?
2.2   我的接收中断深度设定的是4,即SciaRegs.SCIFFRX.bit.RXFFIL        = 4;                //接收 FIFO 存储深度设置位
         我想只有FIFO存储满来自RXBUF送来的4个字节的数据时,程序才会进中断啊,为什么将rdataA[i]=SciaRegs.SCIRXBUF.all,写在中断处理函数中,程序依然可以进中断,并且可以正常接收数据。
        interrupt void sciaRxFifoIsr(void)               
       {
               Uint16 i;
                for(i=0;i<4;i++)
              {
                       rdataA[i]=SciaRegs.SCIRXBUF.all;         // Read data,rdataA[i]是定义的一个接收数组
               }
                 SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1;   // Clear Overflow flag
                SciaRegs.SCIFFRX.bit.RXFFINTCLR=1;   // Clear Interrupt flag
                PieCtrlRegs.PIEACK.all|=0x100;       // Issue PIE ack
           }

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复