URN Logo
UNIX Resources » Linux » China Linux Forum » Linux 嵌入技术 » 9 » 串口接收数据出错
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
串口接收数据出错
串口接收数据出错 - edisonlive4u [2008-01-29 12:38 | 640 byte(s)]
 
Re: 串口接收数据出错 - tpu [2008-01-29 12:44 | 123 byte(s)]
 
Re: 串口接收数据出错 - edisonlive4u [2008-02-01 11:37 | 89 byte(s)]
 
Re: 串口接收数据出错 - tpu [2008-02-01 12:45 | 51 byte(s)]
 
Re: 串口接收数据出错 - edisonlive4u [2008-02-01 13:28 | 63 byte(s)]
 
Re: 串口接收数据出错 - sunwen_ling [2008-02-01 19:55 | 161 byte(s)]
 
Re: 串口接收数据出错 - edisonlive4u [2008-02-02 11:56 | 922 byte(s)]
 
Re: 串口接收数据出错 - edisonlive4u [2008-03-03 12:43 | 33 byte(s)]
 
Subject: 串口接收数据出错
Author: edisonlive4u    Posted: 2008-01-29 12:38    Length: 640 byte(s)
[Original] [Print] [Top]
在arm9平台下扩展了一个SC16C550的芯片,驱动就用的现成的8250.c,只是添加了一些配置信息(定义了 STD_SERIAL_PORT_DEFNS这个宏,主要是配置基地址,中断等信息 ,并在8250.c的serial8250_init函数里初始化了这个扩展芯片,主要是配置它的基地址,中断等信息,这里的信息是和STD_SERIAL_PORT_DEFNS中的信息是匹配的),现在采用的是中断,fifo模式


现象:
接收数据的时候,如果对方发送一个字节,那这边是无法收到的(此时中断是产生了,产生的是超时中断,但是读取LSR的寄存器的时候,总是认为没有收到数据),如果对方发送4个字节,第一个字节也是收不到的,即收到了3个字节。

这种问题的原因是什么呢?如何解决呢?
[Original] [Print] [Top]
Subject: Re: 串口接收数据出错
Author: tpu    Posted: 2008-01-29 12:44    Length: 123 byte(s)
[Original] [Print] [Top]
真是用的SC16C550?啥也不说了,换SC16C550B,或者换ST16C550。
SC16C55x是philip第一代产品,有BUG。用也要用带B后缀的。
----
精益求精!
[Original] [Print] [Top]
Subject: Re: 串口接收数据出错
Author: edisonlive4u    Posted: 2008-02-01 11:37    Length: 89 byte(s)
[Original] [Print] [Top]
但是好像ST16C550是不支持自动RTS/CTS的,那SC16C550B,8250.c这个驱动中需要做什么样的修改吗?
[Original] [Print] [Top]
Subject: Re: 串口接收数据出错
Author: tpu    Posted: 2008-02-01 12:45    Length: 51 byte(s)
[Original] [Print] [Top]
没有谁会用自动rts/cts功能的。用ST系列,驱动不用改。
----
精益求精!
[Original] [Print] [Top]
Subject: Re: 串口接收数据出错
Author: edisonlive4u    Posted: 2008-02-01 13:28    Length: 63 byte(s)
[Original] [Print] [Top]
主要是我这个扩展串口要接一个Modem的,所以这些线应该是需要的吧。
[Original] [Print] [Top]
Subject: Re: 串口接收数据出错
Author: sunwen_ling    Posted: 2008-02-01 19:55    Length: 161 byte(s)
[Original] [Print] [Top]
这两个脚是用于流量控制的,一般来讲没用,就算你要接一个modem,大部分时间也是没用的。
从产品的角度,如果modem说需要,那你最好要,如果只是debug可以先不用。
----
知之为知之,不知为不知,是知也!
[Original] [Print] [Top]
Subject: Re: 串口接收数据出错
Author: edisonlive4u    Posted: 2008-02-02 11:56    Length: 922 byte(s)
[Original] [Print] [Top]
看到SC16C550的Application Notes里面有这么几句话:

1. READING THE ISR REGISTER
Whenever reading the ISR register, the LCR bit 7 must be set to ‘0’.
=》我是否需要在读取中断寄存器之前要把LCR的bit 7设置为0?

5.DISABLE RECEIVE DATA TIMEOUT INTERRUPT
When the receive holding interrupt is enabled (IER bit 0 = 1) and the receiver receives a number of characters, the software must read the receive FIFO before the receive timeout interrupt is generated (refer to the data sheet to calculate the timeout). If the receive timeout interrupt is generated, the software must read all the data in the receive FIFO before disabling the receive ready interrupt.
=》我如何做到在中断之前来读取接收FIFO呢?

此外附件中是SC16C550和SC16C550B的区别,这里面好像等待LSR的bit7为0之后才能读取中断寄存器。其它的还需要注意些什么呢?

--
Attached file: 672691-AN10257_1CN.pdf
[Original] [Print] [Top]
Subject: Re: 串口接收数据出错
Author: edisonlive4u    Posted: 2008-03-03 12:43    Length: 33 byte(s)
[Original] [Print] [Top]
我替换了ST16c550,还是同样的错误。
[Original] [Print] [Top]
« Previous thread
移植uboot1.2.0碰到问题
Linux 嵌入技术
9
Next thread »
问大家个USB问题:当U盘接入电脑,枚举过程 有疑问
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 03:22:59, cost 0.04175591468811 ms.