求助:关于SCI通讯的问题

[复制链接]
3264|6
 楼主| quanlai2 发表于 2008-10-29 20:36 | 显示全部楼层 |阅读模式
有没有人用过freesacl的DJ128MCU啊,看他们的datasheet中提到过在一对多通讯时,多个从RX可以设置成睡眠模式,由带有MSB(most significant bit)的地址帧唤醒并与本机地址比较若适合则继续接受后面的数据否则继续为睡眠模式。我现在不知道这个MSB应该怎么设置啊,RX是怎么知道本帧数据中有没有MSB呢?谢谢了
lyjian 发表于 2008-10-29 20:48 | 显示全部楼层

类似51种的多机通信模式

数据设位9位模式
Data Format Mode Bit=1
Wakeup Condition Bit=1
 楼主| quanlai2 发表于 2008-10-30 14:09 | 显示全部楼层

请问楼上

可是我实际上需要的数据位是8位的啊,你的意思是指将所有的数据均设置成9位模式,还是说数据设置成8位模式但是将第9位数据位置1呢?如果都设置成9位模式,怎样保证不会把地址帧后面的数据帧不当成唤醒帧呢?谢谢了
lyjian 发表于 2008-10-30 14:30 | 显示全部楼层

没看规格书吗

Data Format Mode Bit — MODE determines whether data characters are eight or nine bits long.
0 One start bit, eight data bits, one stop bit
1 One start bit, nine data bits, one stop bit

Wakeup Condition Bit—WAKE determines which condition wakes up the SCI: a logic 1 (address mark) in the most significant bit position of a received data character or an idle condition on the RXD.
0 Idle line wakeup
1 Address mark wakeup
 楼主| quanlai2 发表于 2008-10-31 10:15 | 显示全部楼层

看了啊,可是不是很明白

我的理解是设置成9位数据位的模式中第九位数据位会与MSB位相冲突啊,二者占用的都是数据位中的第九位,那我怎么区别这一位是作为数据用还是作为MSB用呢?
如果我设置了MSB位是不是必须将数据设置成8位的,然后在地址帧中将第九位设置成MSB也就是置1呢?然后其他的数据帧只有8位数据位,这样而这就区分开了,是这样的么?还请指教啊,谢谢了!
lyjian 发表于 2008-10-31 10:27 | 显示全部楼层

多机通信模式中设为9位数据模式

其中第9位(MSB)在T8(或R8)中。
数据发送时用这位(T8)作为地址识别,当这位为1时表示发送的是地址,当这位为0时表示发送的是数据。
接收数据的CPU设置Wakeup Condition Bit为1,这样,只有在接收到的数据中的R8位(对应发送数据中的T8位)为1时才会唤醒(接收中断)这个CPU,而对于R8位为0的数据就会忽略掉(不会产生接收中断)。
 楼主| quanlai2 发表于 2008-11-3 15:39 | 显示全部楼层

明白了,多谢指教,呵呵

您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部