多个单片机传数据给一个单片机,能实现吗?
时间:10-02
整理:3721RD
点击:
急急急,各位大神,请问基于独立的三个STC89c52单片机超声波测得的距离数据,可以传给另外一个52单片机吗?就是多个单片机传数据给一个单片机,能实现吗?怎么做?
当然可以。我以前做个4个单片机(从)传数据给一个单片机(主),也是测距。其实只要做好通信协议就可以了。通信协议必须包含两个层面:1.数据包格式,用于保证接收的数据的正确性,属于底层保证。2.通信方式,也就是多机通信的原则。
数据包格式可以自行定义,一般结构可为帧头(用于判断数据帧开始,可为多个字节以提高可靠性)+数据帧长度(数据帧字节数)+数据帧(具体要传输的数据,包括从机地址、命令等均包含于此)+结束帧(用于校验数据包是否准确接收)。
通信方式是指由谁开始发起通信,可以有主机到从机(询问,应答)方式和从机到主机(随机通信方式)。一般来说从机数量比较少的时候,可以选择查询-应答方式,每次由主机向一个从机发出查询指令,从机识别后向主机报告结果,这样就保证在每一个时候都只有一个从机与主机通信,避免数据冲突。
当然也可以选择多从机突发传送数据,但这时从机在发送数据前就必须先“监听”数据线电平在一段时间内(最短为1个字节传输的时间)是否有跳变,而发送结束后也应该延时1个数据包的时间再进行下一次数据发送(释放数据线)。这样从机可以随时向主机发送数据,主机根据解析接收到的数据包中数据帧包含的设备地址信息来获知是哪个从机的数据。
采用方式二若是不小心有两台从机同时发送了数据呢?别急,因为有了数据包格式的规定,两个数据包叠加后肯定是生成一个乱的数据包,不符合数据包格式,主机接收到后将丢弃该包,从机则转入监听以再次发送。
在我做的程序中,使用的是主从通信方式,数据包长10字节,每500ms查询所有从机数据。