6922|23

75

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

TM4C123长期串口通信,出现问题? [复制链接]

485串口通信,上微机发送,TM4C123应答,发送和接收,都放在中断,
长期工作,一般2-3天会出现一次:发送中途停止的故障,没有进入发送中断
发送接收深度都是1个字节。程序中,还有定时器(5MS)中断,但485通信的串口已经设置最高优先级
不知道什么原因

最新回复

用while语句去判断数据有误会不会占有太多时间啊?求大侠的程序参考,QQ:875846484。  详情 回复 发表于 2015-6-9 23:15
 
点赞 关注

回复
举报

1803

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 
是不是程序跑飞了呢?其它部分的功能还能正常工作吗?

点评

其他部分程序都正常!  详情 回复 发表于 2014-11-13 14:34
 
 

回复

1944

帖子

32

TA的资源

纯净的硅(高级)

板凳
 
你的意思是发送完成后没有进入中断?收发的频率是多少?几个下位机啊?2~3天出现一次不好复现,你可以试试跑极限,高速的循环收发,看看出现的概率是不是高一些,然后再查问题。

点评

是啊!正常是进入中断后,发送数据!9600,就一台  详情 回复 发表于 2014-11-13 14:37
 
 
 

回复

2886

帖子

0

TA的资源

五彩晶圆(初级)

4
 
估计没用通讯协议或者纠错机制
出问题很正常
 
个人签名昵称:灰小子
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

5
 
Study_Stellaris 发表于 2014-11-13 13:49
是不是程序跑飞了呢?其它部分的功能还能正常工作吗?

其他部分程序都正常!
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

6
 
azhiking 发表于 2014-11-13 13:59
你的意思是发送完成后没有进入中断?收发的频率是多少?几个下位机啊?2~3天出现一次不好复现,你可以试试 ...

是啊!正常是进入中断后,发送数据!9600,就一台

点评

很抱歉,问题的描述还是不够充分,难以确定问题在哪里。 一般情况下来讲, 我们不会相信一颗单片机的某种外设只能工作个 2-3 天,如果这是真的,这将是的满足多么奇怪的条件才能发生如此有规律的、周期性的罢工的重  详情 回复 发表于 2014-11-13 16:12
 
 
 

回复

1803

帖子

0

TA的资源

五彩晶圆(高级)

7
 
QIHAO74 发表于 2014-11-13 14:37
是啊!正常是进入中断后,发送数据!9600,就一台

很抱歉,问题的描述还是不够充分,难以确定问题在哪里。
一般情况下来讲, 我们不会相信一颗单片机的某种外设只能工作个 2-3 天,如果这是真的,这将是的满足多么奇怪的条件才能发生如此有规律的、周期性的罢工的重大 Bug.
我相信大多数情况下,问题应该和代码有关系,或者是芯片工作环境的某种改变而触发了这种故障。
这种故障本身就是一个中断。
而这个中断源在哪里呢
显然,楼主目前仅有的陈述,让人难以找到真正导致故障的问题。
就像上面说的。
如果怀疑是芯片的问题,缩减代码量到极限,直达故障反复重现后不再重现为止。
在重复多次之后,找到触发故障的原因。
 
 
 

回复

5

帖子

3

TA的资源

一粒金砂(中级)

8
 
是不是你设置的那个FIFO 接收一定量后满了    同样你得考虑一样它的缓冲区问题(满了),就你描述的看这块出问题的可能性大。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

9
 
经过几天的跟踪,发现问题是进入接收超时中断,但问题是我默然的FIFO深度是一个字节,我串口监控也没发现多发字节
01 03 00 B0 00 25 85 F6 (上微机发送)
01 03 4A 00 E0 00 D1 00 00(MCU收到后应当发送,遇到问题发送9个字节(9600)就是遇到接收超时中断,导致发送停止),我试着不去设接收超时中断//ROM_UARTIntEnable(UART2_BASE, UART_INT_RX);,一样会进入
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

10
 
//UART2  RS485
    ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_UART2);
          ROM_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
          
          ROM_GPIOPinConfigure(GPIO_PG4_U2RX);
    ROM_GPIOPinConfigure(GPIO_PG5_U2TX);
    ROM_GPIOPinTypeUART(GPIO_PORTG_BASE, GPIO_PIN_4 | GPIO_PIN_5);
   
    baud_rate_init(EEBaudrate);
    ROM_UARTEnable(UART2_BASE);
    ROM_UARTFIFODisable(UART2_BASE);
    ROM_IntEnable(INT_UART2); //ê1ÄüUART2ÖD¶Ï
    ROM_UARTIntEnable(UART2_BASE, UART_INT_RX | UART_INT_RT);
    //ROM_UARTIntEnable(UART2_BASE, UART_INT_RX);
    ROM_UARTIntEnable(UART2_BASE, UART_INT_TX);
/**********************************************************
                RS485
**********************************************************/
void UART2_Handler(void)
{
          uint32_t ui32Status;
       
    ui32Status = ROM_UARTIntStatus(UART2_BASE, true);
   
    ROM_UARTIntClear(UART2_BASE, ui32Status);
    if((ui32Status == UART_INT_RX) || (ui32Status == UART_INT_RT))   
  {
    while(ROM_UARTCharsAvail(UART2_BASE))
    {
      

    }
    }
   
    if(ui32Status == UART_INT_TX)
    {
            Q1_Light_flag=0;
            if(SndFrmCnt[6]              {
                      if(ROM_UARTSpaceAvail(UART2_BASE))
                       {
                                     ROM_UARTCharPutNonBlocking(UART2_BASE, tx_buf[SndFrmCnt[6]++]);
                 }
        }else  Snd_Complete_Flag[6]=1;                                   
    }
   
}
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

11
 
偶尔出现,什么原因导致接收超时中断
接收超时中断能屏蔽掉吗?
中断中是否执行
buffer[rx_num]=ROM_UARTCharGetNonBlocking(UART2_BASE);
就可以清接收超时中断
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

12
 
使用UART时先清空FIFO
清除接收FIFO的指令是那个函数
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

13
 
是否是串口的接受时钟出现异常,尝试定时重新初始化串口。之前我也遇到相同的问题,最长的15天才出现,后来多次测试发现是这个问题!感觉M3,M4的核都有这个问题!
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

14
 
补充下,我之前跟踪是进入中断,但接收的数据不对。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

15
 
我是进入接收超时中断,不知道什么触发了接收超时中断
01 03 00 B0 00 25 85 F6 (上微机发送)
01 03 4A 00 E0 00 D1 00 00(MCU收到后应当发送,当遇到问题时发送9个字节(9600)就是遇到接收超时中断,导致发送停止)
搞不懂为什么接收超时中断,会导致发送停止
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

16
 
你跟踪的过程中,有没有观察接收的BUFF内容。或者说当时现场的情况是如何,能否详细的描述下现场的情况。当时跟踪的!
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

17
 
接收超时中断,当时BUFF的内容!
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(中级)

18
 
当时BUFF的内容是正确的,只是发送 8-9个字节停止
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

19
 
能在描述下问题吗,是发送8-9个字节就停止了?
 
 
 

回复

15

帖子

0

TA的资源

一粒金砂(中级)

20
 
还是发送8-9个字节后就没有办法在进入发送中断了。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表