AVR单片机串口通信问题请教!
时间:10-02
整理:3721RD
点击:
问题描述:Atmega64作为主机----使用片内8M时钟
Atmega16作为从机----使用片外8M晶振
从主机向从机发送指令(5字节16进制),采用500K速率。发现:数据接收时对时错,用示波器抓波形,发现两种情况下主机发送给从机的波形是完全一致的。
分析是由于时钟同步造成的,但是单片机串口采用的是异步通信方式,哪位大神能帮忙分析下?PS:由于硬件限制,主机端不好加片外的时钟。而且个人理解,即使加了也需要考虑时钟同源的影响吧。
Atmega16作为从机----使用片外8M晶振
从主机向从机发送指令(5字节16进制),采用500K速率。发现:数据接收时对时错,用示波器抓波形,发现两种情况下主机发送给从机的波形是完全一致的。
分析是由于时钟同步造成的,但是单片机串口采用的是异步通信方式,哪位大神能帮忙分析下?PS:由于硬件限制,主机端不好加片外的时钟。而且个人理解,即使加了也需要考虑时钟同源的影响吧。
片内时钟还真没用过,片外的应该没这种问题
这是最初设计的缺陷,一般而言500K速率对于单片机而言,采用片内时钟是很不可靠的。
就是不能理解,为什么对于相同的波形,接收端有时能正确接收,有时又是错的?
原先在一个手册上看到USART的接收是通过采样判决来实现的,从这一方面考虑,那就是接收端应该还存在与发送端的一个同步问题?
波特率弄低点儿试过没
从主机发回上位机采用的是115200速率,都能正确接收。
