单片机如何跟硬件之间进行通讯
扫描二维码
随时随地手机看文章
越来越多的功能各异的单片机为我们的设计提供了许多新的方法与思路,对于某一些场合,比如:复杂的后台运算及通信与高实时性前台控制系统、软件资源消耗大的系统、功能强大的低消耗系统、加密系统等等,如果合理使用多种不同类型的单片机组合设计,可以得到极高灵活性与性能价格比。
1、采用硬件UART进行异步串行通信
这是一种占用口线少,有效、可靠的通信方式;但遗憾的是许多小型单片机没有硬件 UART,有些也只有1个UART,如果系统还要与上位机通信的话,硬件资源是不够的,这种方法一般用于单片机有应件UART且不需与外界进行串行通信或采用双UART单片机的场合。
2、采用片内SPI接口或2C总线模块串行通信形式,SPI/I2C接口具有硬件简单、软件编程容易等特点,但目前大多数单片机不具备硬件SPI/I2C模块。
3、利用软件模拟SPI/I2C模式通信,这种方式很难模拟从机模式,通信双方对每一位要做出响应,通信速率与软件资源的开销会形成一个很大的矛盾,处理不好会导致系统整体性能急剧下降,这种方法只能用于通信量极少的场合。
4、口对口并行通信,利用单片机的口线直接相连,加上1~2条握手信号线,这种方式的特点是通信速度快,1次可以传输4位或8位,甚至更多,但需要占用大量的口线,而且数据传递是准同步的,在一个单片机向另一个单片机传送1个字节以后,必须等到另一个单片机的接收响应信号后才能传送下一个数据。一般用于一些硬件口线比较富余的场合。
51系列单片机片内支持其与上位机的多机通讯,也即是一个上位机可以控制多个下位机(由单片机组成)分时协同工作。这个功能的实现主要依赖于51单片机中存在从上位机接收地址还是接收数据的标志位SM2。51单片机有三种通讯模式,由SCON寄存器控制,SCON寄存器结构如下
SCON D7 D6 D5 D4 D3 D2 D1 D0
SM0 SM1 SM2 REN TB8 RB8 TI RI
只有工作在多机通信控制位,允许接收位模式,单片机才具有多机通信能力,此时SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接受到的数据放弃。当SM2=0时,就不管第位数据是0还是1,都难得数据送入SBUF,并发出中断申请。这样就可以实现多机通信。为什么?假设所有下位机初始时都将SM2置为1,那么它们只能接收被标志为地址的数据。上位机先发送地址数据,然后所有单片机同时接收到该数据送进各自的SBUF,那么我们就可以在单片机程序中进行对该数据的判断,看看它是否就是本机的地址,如果是,那么就将SM2清零,等待上位机发送数据(这里不是地址数据,它们的区别在于第9位是1还是0,若为1,我们定义为地址数据,为0,我们定义为数据),而其他单片机因为接收到的地址数据都与自己预置的不同,所以不将SM2清零,那么他们就接收不到下一个周期单片机发送过来的数据(不是地址数据),继续等待他的地址数据的到来。