打印

2812串口发送数据出现问题

[复制链接]
1078|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
meishizhaoshi|  楼主 | 2014-8-31 11:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include \"DSP28_Device.h\"

//子程序原型
void scia_init(void);
unsigned int Send_Flag;
unsigned int Sci_VarRx[100];
unsigned i,j;
void main()
{  
    //Step1:初始化系统控制寄存器,PLL,看门狗,时钟位默认状态
    //参照DSP28_SysCtrl.c
    InitSysCtrl();
   
    //Step2:设置GPIO功能
    EALLOW;
    GpioMuxRegs.GPFMUX.all=0x0030;        //设置相应的引脚为SCI引脚
                                          //设置口FMUX-x000 0000 0011 0000
    EDIS;
   
    //Step3:初始化中断向量表(PIE向量表)
    //参照DSP28_PieVect.c文件
    InitPieVectTable();
   
    //Step4:禁止和清除所有CPU中断
        DINT;
        IER=0x0000;
        IFR=0x0000;
        
        //Step6:重新分配中断向量,使能中断
        
        scia_init();        //初始化SCI-A
        
        //Step7:使用DSP向计算机发送数据,用串口调试助手观察现象
        for(j=0;j<100;j++)
        {
           SciaRegs.SCITXBUF = 55;
           while(SciaRegs.SCICTL2.bit.TXRDY == 0)
           {}
        }
        SciaRegs.SCICTL1.bit.TXENA = 0;
}
        
//SCIA串口初始化程序,DLB,8位字,通讯速率设置为0x000F(默认值),
//1个停止位,无校验位
void scia_init()
{
        //系统时钟及其他初始化函数在InitSysCtrl()中实现
            
        SciaRegs.SCICCR.all = 0x0007;        //一个停止位,禁止字测试模式
                                                                    //无校验,8位字符
                                                                    //异步模式,采用空闲线协议
                                                                                    
        SciaRegs.SCICTL1.all = 0x0003;        //使能TX,RX引脚和SCICLK
                                                                    //禁止RX ERR,SLEEP,TXWAKE
                                                                                    
        SciaRegs.SCICTL2.all = 0x00000;        //禁止TXRDY、RXRDY/BRKDT中断
            
        SciaRegs.SCIHBAUD = 0x0000;                //19200 sysclk=150MHz
        SciaRegs.SCILBAUD = 0x00F3;                //LSPCLK时钟频率37.5MHz
            
        SciaRegs.SCICCR.bit.LOOPBKENA = 0;        //禁止字测试模式
        SciaRegs.SCICTL1.all = 0x0023;                //使SCI退出复位状态
        
        PieCtrl.PIEIER9.bit.INTx1 = 1;        //使能SCIA接收中断
        PieCtrl.PIEIER9.bit.INTx2 = 1;        //使能SCIA发送中断
}

相关帖子

沙发
meishizhaoshi|  楼主 | 2014-8-31 11:34 | 只看该作者
现在的问题是用在PC上用串口提示助手能够接收到数据,但是误码,不知道为什么,那位高手给指点一下,感激!一个人摸索实在太熬人了!

使用特权

评论回复
板凳
duzhichao010| | 2014-9-6 15:56 | 只看该作者
乱码一般是波特率不对,或者是串口助手勾选16进制显示

使用特权

评论回复
地板
拿起书本| | 2014-10-20 19:59 | 只看该作者
直接用示波器看看波形对不对就行了。假如波形正确,接受不正确,那肯定是设置的问题。

使用特权

评论回复
5
rainlive| | 2014-10-23 16:58 | 只看该作者
串口助手勾选16进制显示

使用特权

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

本版积分规则

103

主题

1390

帖子

1

粉丝