搜索
bottom↓
回复: 4

DSP 28027 SCI接收不到数据

[复制链接]

出0入0汤圆

发表于 2013-8-29 14:14:22 | 显示全部楼层 |阅读模式
各位:
    我的程序在用XDS100仿真时,可以和上位机sci通信正常(通信不正常上位机会报错)。
    但是当脱离仿真器运行时,怎么也发不出数据(示波器观察不到波形)。
做了如下尝试:
1、脱离仿真器运行,在10ms定时中断,不断翻转GPIO00输出电平,用示波器可以观察到正确的波形;
interrupt void  _TINT0_ISR(void)      // CPU-Timer 0
{
  CpuTimer0Regs.TCR.bit.TIF     = 1;
  GpioDataRegs.GPADAT.bit.GPIO0 = ~GpioDataRegs.GPADAT.bit.GPIO0;  

  PieCtrlRegs.PIEACK.all |= PIEACK_GROUP1;

}


2、在sci接收中断程序中,加入GPIO00翻转程序,当上位机通信时,示波器看不到GPIO00的任何波形,也即sci收不到任何数据;
interrupt void _SCIRXINTA_ISR(void)     // SCI-A
{
                
    Uint16 RxData = SciaRegs.SCIRXBUF.bit.RXDT;

        //if (SciRxDatas.PointToData < (SciRxDatas.Data+DATAS))
    //        {*(SciRxDatas.PointToData++) = RxData;}
    //JudgeSciRxHeader(RxData,INIT_HEAD1,INIT_HEAD2);
    //JudgeSciRxHeader(RxData,NORMAL_HEAD1,NORMAL_HEAD2);
    //SciTxDatas.LastRxByte = RxData;
       
    GpioDataRegs.GPADAT.bit.GPIO0 = ~GpioDataRegs.GPADAT.bit.GPIO0;   
        PieCtrlRegs.PIEACK.all |= PIEACK_GROUP9;
}


3、然后关闭sci接收及发送中断,尝试在main中接收sci数据,并加入GPIO00翻转程序,实际运行时,也观察不到波形,也即没有收到数据。
while (1)
   {
                   //Sci_communication();
                Uint16 i;
                   if (SciaRegs.SCIRXST.bit.RXRDY)
                   {
                           i= SciaRegs.SCIRXBUF.bit.RXDT;
                           GpioDataRegs.GPADAT.bit.GPIO0 = ~GpioDataRegs.GPADAT.bit.GPIO0;
                   }
                   //GpioDataRegs.GPADAT.bit.GPIO0 = ~GpioDataRegs.GPADAT.bit.GPIO0;
                   //DelayMs(1);
          
   }

我的sci初始化程序是:我没有使用FIFO功能。
SciaRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback
                                  // No parity,8 char bits,
                                  // async mode, idle-line protocol
   SciaRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,
                                  // Disable RX ERR, SLEEP, TXWAKE
   SciaRegs.SCICTL2.bit.TXINTENA =0;
   SciaRegs.SCICTL2.bit.RXBKINTENA =0;
   SciaRegs.SCIHBAUD = 0x0000;
   SciaRegs.SCILBAUD = 163;//0x00a2;//0x00C2;//19200//0x00C2;(9600)//SCI_PRD;
   //SciaRegs.SCICCR.bit.LOOPBKENA =1; // Enable loop back
   //SciaRegs.SCIFFTX.all=0xC021;
   //SciaRegs.SCIFFRX.all=0x0021;
   //SciaRegs.SCIFFCT.all=0x00;

   SciaRegs.SCICTL1.all =0x0023;     // Relinquish SCI from Reset
   //SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1;
   //SciaRegs.SCIFFRX.bit.RXFIFORESET=1;
   
   SciaRegs.SCICTL1.bit.TXENA=0;


另外可以确认boot mode是基于flash的。实在搞不懂为什么sci收不到数据了,还请哪位兄弟指正下。不胜感激。

阿莫论坛20周年了!感谢大家的支持与爱护!!

该献的血还是要献的。你不献他不献。难道让我去献? --- 出自坛友:lovejp1981

出0入0汤圆

 楼主| 发表于 2013-8-29 18:08:58 | 显示全部楼层
我自己顶下

出0入0汤圆

发表于 2013-8-29 23:04:16 | 显示全部楼层
帮顶,lz问题解决了没

出5入8汤圆

发表于 2013-8-30 09:28:02 | 显示全部楼层
{
   SciaRegs.SCICCR.all =0x0007;   // 1 stop bit,  No loopback
                                  // No parity,8 char bits,
                                  // async mode, idle-line protocol
   SciaRegs.SCICTL1.all =0x0003;  // enable TX, RX, internal SCICLK,
                                  // Disable RX ERR, SLEEP, TXWAKE
   SciaRegs.SCICTL2.bit.TXINTENA =1;
   SciaRegs.SCICTL2.bit.RXBKINTENA =1;
   SciaRegs.SCIHBAUD = 0x0000;
   //(60M/(BAUD*8))-1
   SciaRegs.SCILBAUD = 0x00C2;
// SciaRegs.SCICCR.bit.LOOPBKENA =1; // Enable loop back
   SciaRegs.SCIFFTX.all=0xC020;
   SciaRegs.SCIFFRX.all=0x0021;
   SciaRegs.SCIFFCT.all=0x00;

   SciaRegs.SCICTL1.all =0x0023;     // Relinquish SCI from Reset
   SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1;
   SciaRegs.SCIFFRX.bit.RXFIFORESET=1;

}

void InitSciaGpio()
{
   EALLOW;

/* Enable internal pull-up for the selected pins */
/* Disable internal pull-up for the selected output pins
   to reduce power consumption. */
// Pull-ups can be enabled or disabled disabled by the user.

        GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;    // Enable pull-up for GPIO28 (SCIRXDA)
//        GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0;    // Enable pull-up for GPIO19 (SCIRXDA)
//        GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0;     // Enable pull-up for GPIO7  (SCIRXDA)

        GpioCtrlRegs.GPAPUD.bit.GPIO29 = 1;           // Disable pull-up for GPIO29 (SCITXDA)
//        GpioCtrlRegs.GPAPUD.bit.GPIO18 = 1;           // Disable pull-up for GPIO18 (SCITXDA)
//        GpioCtrlRegs.GPAPUD.bit.GPIO12 = 1;           // Disable pull-up for GPIO12 (SCITXDA)

/* Set qualification for selected pins to asynch only */
// Inputs are synchronized to SYSCLKOUT by default.
// This will select asynch (no qualification) for the selected pins.

        GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3;  // Asynch input GPIO28 (SCIRXDA)
//        GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3;  // Asynch input GPIO19 (SCIRXDA)
//        GpioCtrlRegs.GPAQSEL1.bit.GPIO7 = 3;   // Asynch input GPIO7 (SCIRXDA)

/* Configure SCI-A pins using GPIO regs*/
// This specifies which of the possible GPIO pins will be SCI functional pins.

        GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1;   // Configure GPIO28 for SCIRXDA operation
//        GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 2;   // Configure GPIO19 for SCIRXDA operation
//        GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 2;    // Configure GPIO7  for SCIRXDA operation

        GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1;   // Configure GPIO29 for SCITXDA operation
//        GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2;   // Configure GPIO18 for SCITXDA operation
//        GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 2;   // Configure GPIO12 for SCITXDA operation

    EDIS;
}



这个是我的程序 ,
无非有几个问题
1,中断是不是使能了
2,中断函数是不是正确设置了
3,IER开关是不是打开了
4,引脚不是选择正确

出0入0汤圆

 楼主| 发表于 2013-8-30 17:46:25 | 显示全部楼层
谢谢哦。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-9-1 16:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表