作者sintsu (sin)
看板ASM
标题[讨论] RS485
时间Sat Feb 10 03:54:48 2007
小弟最近刚到这个板上,希望能跟各位前辈讨教讨教
刚接触单晶片及相关程式快一年,大部分知识都是自学书上及网路资料所得
所以很多基础知识不足,若有错误观念还请大家不吝指教,谢谢
因为之前玩过马达还有RS232串列传输,後来玩不出新花样了...想玩看看RS485
485和232最大的差异就是可以多对多的通讯,距离也加长了很多
目前大多为工业控制使用,而485也可以说是是乙太网路的前身
目前我已经把485硬体的部份完成,不过还没有测试...因为卡在韧体还没有写好
(不知道用韧体称呼单晶片程式是否不妥?)目前所理解的东西如下
串列传输控制有关的暂存器是SCON
里面分别是SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0和SM1用来设定传输模式,SM2则是485通讯的关键之一
REN是决定是有接收外部的串列资料,TB8&RB8也是多处理机通讯关键
TI是发送中断旗帜、RI是接收中断旗帜,鲍率设定这边就先跳过吧:p
接着是通讯协定的部份
因为485是半双工多对多的通讯,所以每个设备都要有个唯一的位址,有点像mac address
讯号传送端
再呼叫别台设备时,会先送出对方的位址值
且多了一个TB8=1的位元代表传输的是位址值而不是数据
接着才会传输数据(TB8=0)
(我不知道万一对方没收到位址或是有错误怎麽办,自己写交握?)
讯号接收端
将SCON的SM2位元设定为1,并将收到的串列资料当作是位址,比对是否呼叫自己
如果是自己的话,则把SM2设为0,将後来收到的资料视为数据,接收完後再将SM2设为1
我有点不太知道RB8要什麽时後设定,资料里面没提到,感觉功能跟上面SM2的功能好像@@
讲的有点语无伦次,请见谅
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.104.117.214
1F:推 loveflames:接收第九个位元时才设RB8? 02/10 04:25