搜索
bottom↓
回复: 10

请教一下版主LGT8F08A串口通讯异常原因

[复制链接]

出0入0汤圆

发表于 2013-12-31 22:21:28 | 显示全部楼层 |阅读模式
用LGT8F08A进行串口通讯时,相关代码段如下:
//初始化部分
        #define USART_BAUD_SELECT 23                //19200
        void interface_init(void)
        {
                UCSR0B =  (1<<RXEN0) | (1<<TXEN0);
                UCSR0C = (3<<UCSZ00);
                    UBRR0L = (unsigned char) USART_BAUD_SELECT;
                UBRR0H = 0;
        }

//数据收发部分:
//通讯层--串口命令解板
uchar  ReadCOMByte(void)
{
//        while(RI == 0);
//        RI =0;
//        return(SBUF);
        while(1)
        {
                if (UCSR0A & (1<<RXC0))
                {
                        return UDR0;
                }
        }
}

void WriteCOM_Byte(uchar ucWriteData)
{
//        while(TI ==0);
//        TI =0;
//        SBUF = ucWriteData;
        while (!(UCSR0A & (1<<UDRE0)));       
        UDR0 = ucWriteData;

}

//应用层相关部分如下:
//从串口取一字符且回显示,小写变大写
uchar  Com_Echo(void)
{
        uchar ucTemp;

        ucTemp = ReadCOMByte();
        WriteCOM_Byte(ucTemp);
        return(toupper(ucTemp));
}


//通讯模块出错部分相关代码如下:
                while(1)
                {
                        ucTemp = Com_Echo();
                        if(ucTemp == 'U')
                        {
//                                WriteCOM_Byte('U');
                        }
       
                        if(ucTemp == ':')
                        {
                                break;
                        }
                }


//代码完成的功能就是查找数据包的同步头,如果是U时,返回数据U,如果字符是‘:’时,跳出同步包头的状态,进入数据接收。
现在的问题是,用串口调试助手SSCOM32发送数据测试时正常,但用PC软件一通讯,单片机就出错,用串口监视软件查看,没有看到单片机返回数据,此时,再关闭PC软件,启动SSCOM32后,发送数据给单片机,也没有返回,芯片的串口模块硬件好象是挂掉了,此时停止仿真器,程序指针指向的是查询接收标志位这一行:                if (UCSR0A & (1<<RXC0)) ,但就是收不到电脑发送过来的数据,已仔细检查过硬件,未见异常,将代码移植到Atmega16芯片上测试,没有出现这种奇怪的现象,且PC软件发送的同步包头能正常接收和响应,完成同步包头的操作。
想不出好办法,也找不到原因,请大家提提建议,先谢谢大家!

出0入0汤圆

发表于 2014-1-1 11:25:34 | 显示全部楼层
好像是数据帧发生问题导致串口控制器状态出错,你先用看门狗试试能不能恢复。
具体问题和解决方法,明天咨询后给你回复哈。

出0入0汤圆

 楼主| 发表于 2014-1-1 15:26:34 | 显示全部楼层
谢谢版主关注,测试相关截图如下所示:
一、用串口调试助手能完成同步,如下图


二、用PC机应用软件无法同步,如下图:


三、关闭应用软件,重新启动SSCOM32,发送数据无响应。


四,换成Atmega16单片机,启动电脑软件能正常通讯,完成同步操作:


说明一下,由于电脑软件系第三方软件,无法源码级联调,从监视软件来看,每次启动时会发出3个FF的内容,但底层单片机的返回信号没有FF,这种情况在mega16通讯数据流图上也看到了。有可能不是1个完整的UART帧。因为如果单片机收到任何数据,都会原封不动的返回给PC机。
发完3个FF后,PC软件会出出字符U(ASCII码为55),此时单片机接收到55数据,返回给上位机,然后上位机发送以字符":"开头的命令包,与单片机进行正常的通讯了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-1-3 11:28:02 | 显示全部楼层
gdrc 发表于 2014-1-1 15:26
谢谢版主关注,测试相关截图如下所示:
一、用串口调试助手能完成同步,如下图

1. 第三方串口通信工具开启后的波特率设置过程是怎么样的?
2. 请做如下测试看看是否有效果: 在电路板上这一端,在TXD/RXD上都加一个上拉电阻。

出0入0汤圆

 楼主| 发表于 2014-1-3 15:11:56 | 显示全部楼层
回复版主,通信软件波特率设置过程不详,没法捕获到这种信息,第2点我们接两个上拉电阻试一试,最为奇怪的是关闭第3方软件后,再用sscom32打开串口,此时能正常打开,说明电脑上的串口没有异常,发送数据单片机此时就不响应了。

出0入0汤圆

 楼主| 发表于 2014-1-4 15:49:51 | 显示全部楼层
加了2个1K的电阻,将芯片的串行通讯引脚上拉到VCC,测试故障现象依旧,没有改观。

出0入0汤圆

发表于 2014-1-4 19:53:47 | 显示全部楼层
gdrc 发表于 2014-1-4 15:49
加了2个1K的电阻,将芯片的串行通讯引脚上拉到VCC,测试故障现象依旧,没有改观。 ...

那个第三方的串口工具可否提供我们测试?

出0入0汤圆

 楼主| 发表于 2014-1-7 14:22:29 | 显示全部楼层
版主,您好,出错的这个上位机软件是Falsh Magic,已经添加到下面的附件中了,

程序就是上面这一段,可以用官方的LGT8F08A最小系统板进行测试,波特率是19200bps,软件装好后启动界面设备如下图:
注意选对串口号和编程接口。
然后点击ISP菜单的Read Devisignature子菜单,如下图:
软件就会发送相关的数据到串口。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2014-1-7 14:24:21 | 显示全部楼层
串口调试助手sscom32软件如下附件中:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2014-1-14 16:53:07 | 显示全部楼层
gdrc 发表于 2014-1-7 14:24
串口调试助手sscom32软件如下附件中:


这个FLASH Magic工具在发前三个FF的时候,用的并不是设置的19200的波特率,而是一个很快的频率;
08A在主从通讯波特率不一致,并且主机波特率高的时候,会出现错误,而无法继续接收新的数据;

如果遇到这样的情况,建议主从采用相同的波特率开始通讯,如果无法避免这种情况,建议采用看门狗复位。
另外楼主也可以使用LGT8F88A, 88A上没有这样的问题。

出0入0汤圆

 楼主| 发表于 2014-1-17 20:40:40 | 显示全部楼层
谢谢版主释疑,分析得也很对,但这种情况用看门狗复位也避免不了,同步过程就是瞬间完成,我试试8F88A芯片。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-5 21:47

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

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