打印

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

[复制链接]
1851|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wang112411|  楼主 | 2013-8-27 22:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
/*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);

}

               

相关帖子

沙发
smilingangel| | 2013-8-29 00:30 | 只看该作者
坐沙发的了。很不错的代码分享了

使用特权

评论回复
板凳
zhangmangui| | 2013-8-31 18:09 | 只看该作者
2812的SCI回测代码吗   使用查询方式还是FIFO方式的   
有没有 2812自动波特率侦测的代码分享一下

使用特权

评论回复
地板
gaochy1126| | 2013-9-1 23:27 | 只看该作者
楼主应该设计串口在里面的。

使用特权

评论回复
5
gaochy1126| | 2013-9-1 23:27 | 只看该作者
方便测试和调试看看的。

使用特权

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

本版积分规则

13

主题

77

帖子

0

粉丝