这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » Help! IO口模拟UART通信遇到的问题

共8条 1/1 1 跳转至

Help! IO口模拟UART通信遇到的问题

工程师
2019-06-27 23:02:56     打赏

如上图,是串行发送8位数据的时序图

下图的程序是利用51单片机的IO口模拟UART串行通信

1.jpg


红色箭头所指的程序,是表示判断数据是否接收完毕

结合时序图来看,while(!RxdEnd);语句是判断数据是否接收完毕,

若接收完毕,则代表RxdEnd这个标志位等于1,即检测到停止位

如果8位数据中出现1,会不会使得程序误以为接受到的1是停止位的1,从而误以为接收完成了?

2.jpg








关键词: UART     模拟串口    

工程师
2019-06-27 23:15:31     打赏
2楼

RxdEnd不可能是直接检测高电平的来设置的。

是根据波特率来的。比如起始位触发RxdEnd=0接收,然后是8bit数据,然后是停止位。这个要


靠定时器来同步的。也就是说至少要过了10位时间才能触发RxdEnd=1



工程师
2019-06-27 23:22:05     打赏
3楼

那应该是个位变量,是由其它代码在控制,结束时置1结束位是高电平,不代表高电平就是结束


工程师
2019-06-27 23:28:03     打赏
4楼

不管怎么样的模拟串口程序,其有一个共同的特征就是得有一个精确控制的检测周期来进行数


据的读入,这必须匹配输入波特率。

离开这个概念,所以的串口包括硬件串口都不能正常工作。

对于有精确时钟控制的软串口程序,其判断停止位时间,不可能落在数据位上面。




高工
2019-06-29 13:23:20     打赏
5楼

不管怎么样的模拟串口程序,其有一个共同的特征就是得有一个精确控制的检测周期来进行数ru .


院士
2019-06-29 21:00:11     打赏
6楼
谢谢分享,学习了。

工程师
2019-06-30 21:51:17     打赏
7楼

最近我在DIY一个光纤串口,主要实现隔离信号和保护电脑免受高压、静电等损坏,喜欢的朋友,可以多关注我或直接联系哦


工程师
2019-07-03 09:35:18     打赏
8楼

市场整合,情理之中的事情吧!


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]