SCIA的回送测试模式部分代码

2019-08-06 16:34发布

/*SCI的回送测试模式下的通信*/
主函数部分
#include"DSP28_Device.h"
unsigned int Sci_VarRx[10];    //用于存放接到的数据
unsigned int i,a;

void main(void)
{
       InitSysCtrl();
       DINT;
       IER=0x0000;
       IFR=0x0000;
       InitPieCtrl();
       InitPieVectTable();
       InitGpio();
       InitSci();
      for(i=0;i<100;i++)       
     {
       Sci_VarRx[i] =0;
      }
      i=0;       
     for(;;)
    {
     //查询方式实现发送功能
    if(SciaTx_Ready()==1)//发送准备已经就绪而且有数据需要发送
    {
         SciaRegs.SCITXBUF=Sci_VarRx[i];    //发送数据
       i++;
          if(i==100)
          {
        i=0;
           }               
     }
       for(a=0;a<1000;a++)
       NOP;
     //查询方式实现接收功能
     if(SciaRx_Ready()==1)
     {
         Sci_VarRx[i]=SciaRegs.SCIRXBUF.all+1;  //接收数据
   }
               
    }
}

void InitGpio(void)
{

     EALLOW;
     
    GpioMuxRegs.GPFMUX.bit.SCIRXDA_GPIOF5=1;//设置SCIA的接受引脚
   GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4=1;//设置SCIB的发送引脚
             
   EDIS;

}

void InitSci(void)
{
        SciaRegs.SCICCR.bit.STOPBITS=0;       //1位停止位
        SciaRegs.SCICCR.bit.PARITYENA=0;      //禁止极性功能
        SciaRegs.SCICCR.bit.LOOPBKENA=1;      //使能回送测试模式功能
        SciaRegs.SCICCR.bit.ADDRIDLE_MODE=0;  //空闲线模式
        SciaRegs.SCICCR.bit.SCICHAR=7;        //8位数据位
        SciaRegs.SCICTL1.bit.TXENA=1;         //SCIA模块的发送使能
        SciaRegs.SCICTL1.bit.RXENA=1;         //SCIA模块的接受使能
        SciaRegs.SCIHBAUD=0;
        SciaRegs.SCILBAUD=0xF3;               //波特率为19200

        SciaRegs.SCICTL1.bit.SWRESET=1;       //重启SCI
}

/*===========================================================================
查询SCICTL2寄存器的TXRDY标志位,来确认发送准备是否就绪
入口参数:无
出口参数:i,即TXRDY的状态。1 发送准备已经就绪;0 发送准备尚未就绪
*==========================================================================*/
int SciaTx_Ready(void)
{
        unsigned int j;
        if(SciaRegs.SCICTL2.bit.TXRDY==1)
        {
                j=1;
        }
        else
        {
                j=0;
        }
        return(j);
}

/********************************************************************************
查询SCIRXST寄存器的RXRDY标志位,来确认接受准备是否就绪
入口参数:无
出口参数:i,即RXRDY的状态。 1 接受准备已经就绪; 0 接受准备尚未就绪

*********************************************************************************/

int SciaRx_Ready(void)
{
        unsigned int j;
        if(SciaRegs.SCIRXST.bit.RXRDY==1)
        {
                j=1;
        }
        else
        {
                j=0;
        }
    return(j);

}

               
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
smilingangel
1楼-- · 2019-08-06 18:29
坐沙发的了。很不错的代码分享了
zhangmangui
2楼-- · 2019-08-06 21:54
2812的SCI回测代码吗   使用查询方式还是FIFO方式的   
有没有 2812自动波特率侦测的代码分享一下
gaochy1126
3楼-- · 2019-08-07 01:20
楼主应该设计串口在里面的。
gaochy1126
4楼-- · 2019-08-07 03:06
方便测试和调试看看的。

一周热门 更多>