您的位置 首页 开关

AVR串口通讯

用M8做了一个485通信,调试时发现,PC端接收数据不正常,而另一个同样的板子接收的数据时正常。测量了PC端串口接收数据的管脚波形,正常,…

用M8做了一个485通讯,调试时发现,PC端接纳数据不正常,而另一个相同的板子接纳的数据时正常。

测量了PC端串口接纳数据的管脚波形,正常,可是接纳数据不对,古怪!

此刻发送板的M8作业电压为3.3V,运用内部晶振。

将发送版的M8的作业电压改为5V后,PC端接纳数据正常了。

接纳数据的正确与否和M8的作业电压有联系,而作业电压的大小会影响什么呢?

有两个当地:

1、IO口的电平

莫非IO口的电平会影响数据的正确与否,这个问题能够扫除,原因如下:

1)、MAX485是5V供电的,可是它能够和3.3V电平匹配。

2)、接纳端的波形是对的,阐明数据发出去是对的。

2、影响内部晶振

内部晶振受作业电压影响很大,从而影响了串口通讯的波特率,这便是为什么波形是对的,而被PC识别出的数据却是过错的。

知道原因了,就找一下解决办法了,底子问题在于波特率上,也便是晶振上,解决办法如下:

1、体系选用5V供电

不合理,由于板子上还有其他的芯片与M8通讯,这样就不敢确保电平匹配了。

2、运用外部晶振

不合理,由于该管脚引脚被用了,要是加的话只能飞线。

3、写校准字

需求自己测出校准字是多少。

合理,不需求更改硬件,但不一定能确保成功,只能试验了。

办法如下:

将0~255的数一次写到OSCCAL寄存器中,并将其经过转口发到PC机的串口调试终端上,
找出接连正确的数字,为确保正确,应该去掉走后一个正确的数(本比如中为BD)。

这是测得的一串接连对的数据:

A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD FE FF

所以校准字可选:A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC

总结经验:

1、M8运用内部晶振时,其振动频率受作业电压影响很大。

假如运用了内部晶振,还要做串口通讯,主张是用5V作业或许一定要校准晶振,最好运用外部晶振,

这样更安全。

2、串口接纳的数据假如一向安稳的错,八成原因是波特率的问题了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/dianyuan/kaiguan/273182.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部