打印

用串口扩展串口的失败经验...

[复制链接]
1760|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hongdikeji|  楼主 | 2007-7-17 14:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    说来惭愧呀。我进来在进行一个项目,需要用到等多的串口。于是“领导”就选了款串口扩展串口的芯片,来扩展串口。我当时也没有考虑就将它设计到了系统中。
    后来等到我编写好linux下的驱动程序,并作了简单的测试后。我开始做大流量的周期测试才发现问题。
    系统根本来不及处理4路9600bps的子串口数据,而出现数据接收溢出。

    这个串口扩展芯片的一个读写操作需要2个字节(W/R_OP),主串口波特率设置为T = 230400bps。而从这个芯片中收/发一个字节数据需要至少6次读写操作,相当于从主串口收/发12字节的数据。于是系统通过串口扩展芯片能处理的最大波特率:B= T /12 = 230400 /12 = 19200bps。
    而实际中在uClinux下的中断延迟(t1)和用户中断服务程序中的处理过程(t2)这两个时间,以及中断共享下的耗时(t3)。因此实际处理收/发一个字节的时间:
         t = t1 + t2 + (n-1)*t3 + 1/B       (打开的子串口路数)
实际测试的得到的波特率:14388.5bps。
    
    “领导”要求支持4路子串口1200~9600bps波特率的同时收发。我测试时一直在找是不是程序有问题呀。可苦了我啦。
    后来仔细地计算考虑发现是方案的错误。
    告诫大家要先考虑方案是否可行,否则“领导”会以为你...,其实错从开始就错了。
     

相关帖子

沙发
hqgboy| | 2007-7-17 14:57 | 只看该作者

...谢谢分享.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

31

主题

85

帖子

1

粉丝