药导

药导

1个粉丝

23

问答

0

专栏

11

资料

药导  发布于  2016-07-06 16:08:21
采纳率 0%
23个问答
9526

【已解决】串口莫名出现的0xff,有人遇到过吗

 
本帖最后由 药导 于 2016-7-7 11:31 编辑

如题,楼主最近接到一个做拓传的任务,在搞3518的ttyAMA1,代码是写好了,但是发现在串口通信的时候经常会出现一个0xff,而且不固定,感觉像是随机出现的,有人遇到过类似的情况吗?


最新结果,我用好几个人的串口初始化代码都测试很多遍,发现都存在这个问题(谢谢提供初始化代码的几个论坛网友)。

然后我尝试加了滤波电容和上拉电阻,感觉效果都不明显,最后测试不同的波特率,发现结果如下:

波特率为115200时:每次open的时候都会产生一个错误码,但是错误码的值不确定,有时候0xfc,有时候0xf8;



波特率为57600时:每次open的时候都会产生一个错误码,错误码固定为0xfe;



波特率为19200时:有时候open的时候会产生一个错误码,错误码固定为0xff;



波特率为9600时:open不产生错误码;



波特率为4800时:open不产生错误码;



综上所述,感觉直接用海思自带的驱动,open(“/dev/ttyAMA1”)时会产生一个低电平,低电平的持续时间约为57600波特率的两个bit的持续时间。如果要稳定使用的话,建议使用9600波特率。
我来回答
回答12个
时间排序
认可量排序

药导

1个粉丝

23

问答

0

专栏

11

资料

药导 2016-07-06 16:09:46
认可0
如图,我发的是“1234567890”,在两次发送中间有时候会出0xff,这是为什么呢?

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-07-06 16:22:42
认可0
本帖最后由 ngswfx 于 2016-7-6 16:26 编辑

对,好像都是结束了,才出现的。


/////////////如果有条件的话,还是建议自己对数据包做个简单封装吧,这样就可以容错了。

弄帧头,帧长度,帧数据,帧校验,帧结尾。

只要中间别出错,就没事,即便有错,也能判断出来。

药导

1个粉丝

23

问答

0

专栏

11

资料

药导 2016-07-06 16:57:21
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=33337&ptid=11862]ngswfx 发表于 2016-7-6 16:22[/url]
对,好像都是结束了,才出现的。


[/quote]

嗯,我是打算这样去做的,但是之前做串口的时候都不会遇到这个问题,这次在3518E上突然出现,我在想是不是硬件的问题

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-07-06 17:00:28
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=33346&ptid=11862]药导 发表于 2016-7-6 16:57[/url]
嗯,我是打算这样去做的,但是之前做串口的时候都不会遇到这个问题,这次在3518E上突然出现,我在想是不 ...[/quote]

按理说硬件串口不容易出现这种问题,模拟出来的倒是有可能。

////////但也不排除干扰,要是接地不好,也不排除。

不过你这个看着还挺有规律,要是有条件,建议弄个示波器看看。

henman

0个粉丝

7

问答

0

专栏

0

资料

henman 2016-07-06 17:33:05
认可0
cat /proc/tty/driver/ttyAMA
serinfo:1.0 driver revision:
0: uart:PL011 rev2 mmio:0x20080000 irq:5 tx:246323 rx:0 RTS|CTS|DTR|DSR|CD|RI
1: uart:PL011 rev2 mmio:0x20090000 irq:5 tx:0 rx:0 CTS|DSR|CD|RI
看看你的串口有没有除了tx和rx之外的计数,那些都是错误,比如oe,3518e收数据会比较慢,偶发oe错误。

虽然它的接收是必定丢数据的,但是在我的项目中,倒从来没试过发送异常的。

药导

1个粉丝

23

问答

0

专栏

11

资料

药导 2016-07-06 17:35:11
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=33349&ptid=11862]ngswfx 发表于 2016-7-6 17:00[/url]
按理说硬件串口不容易出现这种问题,模拟出来的倒是有可能。

////////但也不排除干扰,要是接地不好, ...[/quote]

我跟了一下,这个0xff 是在open串口设备时发出的,应该是在open串口驱动的时候,产生了一个低电平,让接收端误以为接收到了起始位信号,然后起始信号把后面的高电平当做是有效数据来对待了,那样就变成了0xff。

药导

1个粉丝

23

问答

0

专栏

11

资料

药导 2016-07-06 17:55:41
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=33355&ptid=11862]henman 发表于 2016-7-6 17:33[/url]
cat /proc/tty/driver/ttyAMA
serinfo:1.0 driver revision:
0: uartL011 rev2 mmio:0x20080000 irq:5  ...[/quote]

我跟了一下,这个0xff 是在open串口设备时发出的,应该是在open串口驱动的时候,产生了一个低电平,让接收端误以为接收到了起始位信号,然后起始信号把后面的高电平当做是有效数据来对待了,那样就变成了0xff。

henman

0个粉丝

7

问答

0

专栏

0

资料

henman 2016-07-07 09:49:26
认可0
额,你是open一次,send一次,close一次,然后重复的吧?
这个情况好像还真有。不过我是open了之后不关的。

药导

1个粉丝

23

问答

0

专栏

11

资料

药导 2016-07-07 10:56:30
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=33397&ptid=11862]henman 发表于 2016-7-7 09:49[/url]
额,你是open一次,send一次,close一次,然后重复的吧?
这个情况好像还真有。不过我是open了之后不关的 ...[/quote]

是的,我open了之后,write,然后close,write的时候不会有xff,只有在open的时候会产生

药导

1个粉丝

23

问答

0

专栏

11

资料

药导 2016-07-07 11:30:13
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=33349&ptid=11862]ngswfx 发表于 2016-7-6 17:00[/url]
按理说硬件串口不容易出现这种问题,模拟出来的倒是有可能。

////////但也不排除干扰,要是接地不好, ...[/quote]

前辈,我测试了很多情况之后,得到一个结论,您可以看一下我的帖子

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2016-07-07 14:52:39
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=33405&ptid=11862]药导 发表于 2016-7-7 11:30[/url]
前辈,我测试了很多情况之后,得到一个结论,您可以看一下我的帖子[/quote]

收到,波特率高了,采集时间短,相对是容易在open close这种频繁操作中出问题,一般应用可以减少频繁open close操作。

//////////其实还有一种设计方法,通过总线程管理回收这些资源,如果1分钟内,没有使用这个句柄,就回收了。
使用时,如果句柄为空,再重新建立,否则直接使用。这样既可以避免资源浪费,又避免频繁创建。

药导

1个粉丝

23

问答

0

专栏

11

资料

药导 2016-07-07 15:09:47
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=33419&ptid=11862]ngswfx 发表于 2016-7-7 14:52[/url]
收到,波特率高了,采集时间短,相对是容易在open close这种频繁操作中出问题,一般应用可以减少频繁open ...[/quote]

嗯嗯,我想再封装一下应该可以有效地避免这个问题
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区