单片机串行通信SM2怎么用?
书上写了,但看不太明白。请以最常用的串口模式1和串口模式3为例,讲讲在发送和接收时它该怎么置位以及有什么作用!先谢谢了,刚学单片机的菜鸟,不胜感激!...
书上写了,但看不太明白。请以最常用的串口模式1和串口模式3为例,讲讲在发送和接收时它该怎么置位以及有什么作用!先谢谢了,刚学单片机的菜鸟,不胜感激!
展开
3个回答
展开全部
SM2多机通讯控制位:
SM2=0 时,只能进行点对点通讯
SM2=1 时,可以进行多机通讯,与通讯的第9位数据配合;
这第9位信息方式1没有;
所以方式1下通常SM2=0 ,只进行点对点通讯;
方式1下,将接收移位寄存器中的8位数据存入串行口数据缓冲器SBUF,收到的停止位被装入RB8。
方式2、方式3:为9位异步通讯,发送、接收一帧信息由11位组成,即起始位1位(0)、数据8位(低位在前)、1个可编程位(第9位)、1个停止位(1)。
当通讯的第9位信息是1时,代表是地址帧信息;
当通讯的第9位信息是0时,代表是数据帧信息;
通讯完成后,接受方在9位数据收齐之后,还必须同时满足以下两个条件,这次接收才被真正确认:
——RI=0(上次装入SBUF的数据已被取走);
——SM2=0或接收到的第9位RB8为1
当满足这两个条件时,将接收移位寄存器中的8位数据装入串行口数据缓冲器SBUF,使接收中断标志RI置1。
若这两个条件不满足,则所接收的数据无效,串行口接着又开始寻找下一个起始位,准备接收下一帧数据。
SM2=0 时,只能进行点对点通讯
SM2=1 时,可以进行多机通讯,与通讯的第9位数据配合;
这第9位信息方式1没有;
所以方式1下通常SM2=0 ,只进行点对点通讯;
方式1下,将接收移位寄存器中的8位数据存入串行口数据缓冲器SBUF,收到的停止位被装入RB8。
方式2、方式3:为9位异步通讯,发送、接收一帧信息由11位组成,即起始位1位(0)、数据8位(低位在前)、1个可编程位(第9位)、1个停止位(1)。
当通讯的第9位信息是1时,代表是地址帧信息;
当通讯的第9位信息是0时,代表是数据帧信息;
通讯完成后,接受方在9位数据收齐之后,还必须同时满足以下两个条件,这次接收才被真正确认:
——RI=0(上次装入SBUF的数据已被取走);
——SM2=0或接收到的第9位RB8为1
当满足这两个条件时,将接收移位寄存器中的8位数据装入串行口数据缓冲器SBUF,使接收中断标志RI置1。
若这两个条件不满足,则所接收的数据无效,串行口接着又开始寻找下一个起始位,准备接收下一帧数据。
展开全部
SM2——多机通信控制位
多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接收到的数据放弃。当SM2=0时,就不管第9位数据是0还是1,都会将数据送入SBUF,并发出中断申请。工作于方式0时,SM2必须为0。
多机通信是工作于方式2和方式3,SM2位主要用于方式2和方式3。接收状态,当串行口工作于方式2或3,以及SM2=1时,只有当接收到第9位数据(RB8)为1时,才把接收到的前8位数据送入SBUF,且置位RI发出中断申请,否则会将接收到的数据放弃。当SM2=0时,就不管第9位数据是0还是1,都会将数据送入SBUF,并发出中断申请。工作于方式0时,SM2必须为0。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
SM2是专为多机通信而设置的标志位,也不必为这个事所困惑,这大概是早期做多机通信时才考虑的问题吧,而如今,再做多机通信几乎是用不到了,特别是与电脑构成多机通信网络时,就更不能用了,用了反倒是无法通信了。而且,就算是想用,也是很麻烦的,特别是在编写软件时是很累的,单片机有些资源,不一定就非要用不可,只要实际设计电路能够满足设计上技术要求就可以,不必什么东西都要用到,有些东西用了反倒很麻烦,有点自找烦恼了。现在,在工控上几乎都用Modbus协议了,就不能用这个SM2的,用了就无法与电脑通信了。所以,还是先学习一些基础的有用的吧,不用再困扰了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询