关于模拟串口的问题

[复制链接]
2654|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,用示波器测模拟串口的输出波型,看看方波是否稳定。顺便看看通过线路驱动后的波型电压幅度是否符合要求。
 楼主| 王培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.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;---idle<br />&nbsp;&nbsp;&nbsp;--|&nbsp;|_|&nbsp;|_|&nbsp;|_|&nbsp;<br />416us&nbsp;&nbsp;模拟串口<br />而SCI口产生的波形就没有看见那个416us
张明峰 发表于 2008-3-31 18:03 | 显示全部楼层

模拟串口算法有问题

正常情形下发0x55应该看到这样的波型<br /><br />idle&nbsp;---&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;---&nbsp;idle<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-&nbsp;&nbsp;&nbsp;-<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;S&nbsp;1&nbsp;0&nbsp;1&nbsp;0&nbsp;1&nbsp;0&nbsp;1&nbsp;0&nbsp;T<br />显然,你的模拟串口在处理前面几位数据位是有问题,416us正好是两个数据位的宽度。
 楼主| 王培1 发表于 2008-4-1 11:53 | 显示全部楼层

to 张教主

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

本版积分规则

37

主题

142

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部