| 
					阅读:1879回复:4
				 关于串口通信接收部分的算法
					我有一个关于串口接收部分的算法有点不太懂,请求牛人指点,串口接收的时候,我是采取一帧为10位,开始的起始位是0,最后位为1
 我不知道如何真正判断才算接收到了起始位0,如何避免开始接收到的是数据里的0(即起始位)。如有谁作了这方面的,望能给我解答,谢了!! | |
| 沙发#发布于:2004-07-16 10:15 
					一般起始位和停止位是靠串口的硬件自动检测,当硬件检测到有一个一定延时的低电平出现时即自动认为是起始位。				 | |
| 板凳#发布于:2004-07-19 09:58 
					谢谢仁兄!
 但是我这个是要靠软件检测起始位的呀,我首先说下我做的东西,我就是通过CPLD和485芯片(带有刚好两个相反的使能端), 把一个全双工变成半双工(通过在软件里产生使能信号来控制485芯片)。不知你有没有油箱,能否告诉我?我可以发到邮件里向你请教和讨论. | |
| 地板#发布于:2004-07-19 12:32 
					串口在空闲的情况下是保持‘1’的。
 cpu此时一直在搜寻串口输入管脚有无'0'到来; 如果有,则被认为是起始位到了,计数器开始工作,cpu停止搜寻。 计数器数到10个比特位完成,cpu等待一点点时间,又重新开始搜寻起始位。此算法只要计数器跟串口速率适配得当,串口发送不要发太长的帧,控制在200字节以下,干扰不是太严重的情况下就不会误判起始位。 ---------- | |
| 地下室#发布于:2004-07-20 09:36 
					lun ren fei :
 你好!谢谢你指点,我现在把它弄的差不多了,等几天我来调试一下它.请问"串口发送不要发太长的帧,控制在200字节以下"是什么意思,它不是一帧10位吗?我在做程序的时候有一点很难,就是在检测到起始位(0)到停止位(1)之间我要产生一个高电平的使能信号,其他的时候为低电平,这个使能信号的高电平应包括起始位和停止位(难点在这里).还有一个问题是,检测的时候,中间要是一帧错了怎办(就是在计数到停止位时本来应为高电平,而它为为低电平怎办)?这就不产生了帧错误吗?请求高人指点. | |
 
							
 
				