打印

关于模拟串口的问题

[复制链接]
2124|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
王培1|  楼主 | 2008-3-26 10:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用非FSL的单片机做模拟串口的发送实验,发现在不同的机器,会收到不同的数据,有些PC机可以收到收到正确的数据的,而有些PC机则不能收到正确的数据,不知道有没有大虾有遇到过这种怪事情

相关帖子

沙发
至爱森林| | 2008-3-27 13:23 | 只看该作者

换一个单片机也出现同样的现象吗?

使用特权

评论回复
板凳
王培1|  楼主 | 2008-3-28 09:28 | 只看该作者

如果是串口模块,就不会

如果是硬件的串口模块就不会,关键是软件的串口在一些PC机上面可以,一些不行,就比较郁闷

使用特权

评论回复
地板
张明峰| | 2008-3-28 16:44 | 只看该作者

可能是波特率不稳定

让单片机连续不停地发送0x55,用示波器测模拟串口的输出波型,看看方波是否稳定。顺便看看通过线路驱动后的波型电压幅度是否符合要求。

使用特权

评论回复
5
王培1|  楼主 | 2008-3-31 16:55 | 只看该作者

还是串口问题

看了一下,如果波特率是4800,模拟串口的正频宽是208us,负频宽是208us,V-V是12V,LL16DEMO板的SCI口产生的4800的正频宽是196.4us,负频宽是199.7us,V-V是13.6V,但不同的是模拟串口一帧的波形和LL16DEMOSCI口产生的一帧的波形不同,模拟串口是标准的232协议波形,如果是发0x55.
      -   -   -   ---idle
   --| |_| |_| |_| 
416us  模拟串口
而SCI口产生的波形就没有看见那个416us

使用特权

评论回复
6
张明峰| | 2008-3-31 18:03 | 只看该作者

模拟串口算法有问题

正常情形下发0x55应该看到这样的波型

idle ---   -   -   -   -   --- idle
        | | | | | | | | | |
         -   -   -   -   -
         S 1 0 1 0 1 0 1 0 T
显然,你的模拟串口在处理前面几位数据位是有问题,416us正好是两个数据位的宽度。

使用特权

评论回复
7
王培1|  楼主 | 2008-4-1 11:53 | 只看该作者

to 张教主

张教主说的是,的确是犯了个错误,232一帧的数据包括
1个电平的启始位+8个数据位+一个高电平的结束位,所以在发送缓冲中
应该把这个缓冲声明为unsigned int,而我声明为了char,所以在发送0x55的时候最后两位都是0,且没有高电平的结束位,就出现了上面的416us的低电平,这个程序不是FSL的,不然我就贴出来,大家共享一下

使用特权

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

本版积分规则

37

主题

142

帖子

0

粉丝