3255|5

3

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

28027串口总是乱码,请各位大哥帮忙啊。 [复制链接]

刚做了一个28027的板子,跑TI SCI的例程发的都是乱码,帮看看是什么问题。

 

我用的是外部20M晶振。

 

DSP2802x_Examples.h文件中关于晶振与PLL的设置是如下:

#define DSP28_DIVSEL   0 // Enable /4 for SYSCLKOUT

#define DSP28_PLLCR   12

 

GPIO的设置如下:

   GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;   // Enable pullup on GPIO28
   GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3; // Asynch input
   GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1;  // GPIO28 = SCIRXDA
   GpioCtrlRegs.GPAPUD.bit.GPIO29 = 1;   // Enable pullup on GPIO29
   GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1;  // GPIO29 = SCITXDA

 

串口初始化:

void scia_echoback_init()
{
    // Note: Clocks were turned on to the SCIA peripheral
    // in the InitSysCtrl() function

    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.all =0x0003;
    SciaRegs.SCICTL2.bit.TXINTENA =0;
    SciaRegs.SCICTL2.bit.RXBKINTENA =0; 
    SciaRegs.SCIHBAUD    =0x0000;  // 19200 baud @LSPCLK = 20MHz (60 MHz SYSCLK).

    SciaRegs.SCILBAUD    =0x0081;

    SciaRegs.SCICTL1.all =0x0023;  // Relinquish SCI from Reset
}

 

 

void scia_msg(char * msg)
{
    int i;
    i = 0;
    while(msg != '\0')
    {
        scia_xmit(msg);
        i++;
    }
}

// Initalize the SCI FIFO
void scia_fifo_init()
{
    SciaRegs.SCIFFTX.all=0xE040;
    SciaRegs.SCIFFRX.all=0x2044;
    SciaRegs.SCIFFCT.all=0x0;


}

 

 

主函数:

void main(void)
{
 
   char *msg;


   InitSysCtrl();


   DINT;


   InitPieCtrl();


   IER = 0x0000;
   IFR = 0x0000;


   InitPieVectTable();

 

    scia_fifo_init();      // Initialize the SCI FIFO
    scia_echoback_init();  // Initalize SCI for echoback

 

    for(;;)
    {
       msg = "\r\nEnter a character: \0";
       scia_msg(msg);
      
    }

}

最新回复

3楼说的是个好方法,这是做硬件相关的程序员所必须学会使用的工具。     你发 AA或者55,或者……,这样容易辨别一些,看看时间、波形,答案就在那里面!! [ 本帖最后由 dontium 于 2012-3-26 11:40 编辑 ]  详情 回复 发表于 2012-3-26 11:39
 
点赞 关注

回复
举报

3

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
 
 

回复

569

帖子

0

TA的资源

五彩晶圆(中级)

板凳
 
其实这个问题很简单。

拿示波器看一下,看看SCI的时序,时序对那么是接收方的问题,时许不对那么是发送方的问题。

是bit rate没设对还是stop位有多,具体情况可以看时序。
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(中级)

4
 

回复 板凳 hlx3012 的帖子

老兄你说的太深了,我循环发一串字符串,串口芯片前后波形并没异常,能看到有数据发出来,但是我不知道怎么判断时序对错。不过还是谢谢你。

能不能帮忙看看简单的问题,晶振、波特率设置这些寄存器有没有问题。谢谢
 
 
 

回复

2606

帖子

0

TA的资源

五彩晶圆(初级)

5
 
用例程先跑一跑。如果例程你也跑不对,那就。。。。
估计是你程序设置的问题。
像阿胶说的方法不错,至少能知道你是发送还是接收有问题
 
个人签名工程 = 数学+物理+经济
 
 

回复

1万

帖子

25

TA的资源

裸片初长成(高级)

6
 

3楼说的是个好方法,这是做硬件相关的程序员所必须学会使用的工具。

 

 

你发 AA或者55,或者……,这样容易辨别一些,看看时间、波形,答案就在那里面!!

[ 本帖最后由 dontium 于 2012-3-26 11:40 编辑 ]
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表