机电之家资源网
单片机首页|单片机基础|单片机应用|单片机开发|单片机文案|软件资料下载|音响制作|电路图下载 |嵌入式开发
培训信息
赞助商
一个非常不错的双机通讯协议
一个非常不错的双机通讯协议
 更新时间:2008-8-19 13:41:25  点击数:34
【字体: 字体颜色

待发送的数据封包在Mail中.

Infomation frame structure:
Frame char + Length(Msb Lsb) + Header + Mail + Checksum
| | | | |
1Byte 2Bytes 1Byte nBytes 1Byte

Super control frame and unnumbered control frame:
Frame char + Length(Msb Lsb) + Header + Checksum
1Byte 2Bytes 1Byte 1Byte

Frame char: 0x10.
Length: Mail's Length+1(Header's Length)
Header: 这是BUS MAIL的Header. 它包含以下的内容:
Bit7 区分这通数据的类型 0/1 Information Frame/Control Frame

1:Information Frame
Bit7(I/C)+Bit6~4(TxSeq)+Bit3(PF)+Bit2~0(RxSeq)
Bit7(I/C): =0 表示是Information Frame.
Bit6~4(TxSeq): TxSeq 数据传输序列0~6,每发送成功一个,增加1.
Bit3(PF): PF 0/1 /表示希望收到ack
Bit2~0(RxSeq): 希望收到的序列 Index.

2:Control Frame
Bit7(I/C)=1 表示是Control Frame
Bit6(S/U)=0/1 Supervisory Control Frame/Unnumbered Control
Frame
Supervisory Control Frame:
Bit5~4(Supervisory Identifier)
00: Receive Ready
01: Reject
10: Receive Not Ready
Bit3(PF): PF 0/1 /表示希望收到ack
Bit2~0: RxSeq
Unnumbered Control Frame: 用于初始化和复位传输
Bit5~4: UnId 00(SABM) 设定异步平衡模式
Bit3:PF:
Bit2~0: Reserve

Mail: Pragrame Id + Task Id + Primitive(LByte+MByte) + Mail Parameter
1Byte 1Byte >=2Bytes
Pragrame Id: always setted to 0x00
Task Id: 指定Module中哪一层任务来接收这通数据
=0x0f (UserTask)
=0x00 other
Primitive: Api的命令
Mail Parameter: 命令的参数
Checksum: Header Field + Mail Field 的checksum(相加).

同步操作:
本地发送了一通数据后,如果PF set,则表示他需要收到ack,收到下一通数据后,根据收到
的数据的RxSeq来确定是否已经收到.
Mail Tx used Information frame.
传送每通新的数据,TxSeq必须++ (1~7)
每方最多只能有七个未回ack的information frame.
当没有收到ack后,每方必须准备好重传info frame,
每方可以任意设定PF.
一方发送设定了PF的数据,需启动1秒的Timer.
当时间溢出的时候,必须重传没有收到ack的frame. Info frame必须保持原来的TxSeq.
当info frame or super frame发送的时候,RxReq必须设定成希望对方发送的TxSeq.
每方都可以在它需要的时候传送Receive Ready.
每方都可以传送Reject,当它认识到info sequence收到的时候 。
当内部涌塞的时候,可以送Receiver Not Ready.
当收到一个frame的PF是1的时候,本方必须用info frame or super frame回复。
若收到的mail的Txseq跟期待的不一样,必须丢掉这通数据。
为了保持同步,一方可以传送unnumbered control frame with PF set SABM,接收方必须
reset所有的Txseq and Rxseq.并且用unnumbered control frame with PF clear 回复。
这期间它不发送也不接收任何frame.

Illustrate:
mcu1-> 0x5A 0x5A 0x5A (Mcu2忽略这些字符,等待0x10)

mcu1-> 0x10 0x00 0x01 0xc8 0xc8 (unnumbered frame)
mcu1<- 0x10 0x00 0x01 0xc0 0xc0 (unnumbered frame)

cmd=0x2f2e
mcu1-< 0x10 0x00 0x06 0x18 0x00 0x0f 0x2e 0x2f 0x01 0x85 (Info frame what you want to tx. )
mcu1-> 0x10 0x00 0x01 0x82 0x82
  • 上一篇: MSP430单片机中的WDT研究
  • 下一篇: 一种智能电梯语音系统的设计
  • 发表评论   告诉好友   打印此文  收藏此页  关闭窗口  返回顶部
    热点文章
     
    推荐文章
     
    相关文章
    网友评论:(只显示最新5条。)
    关于我们 | 联系我们 | 广告合作 | 付款方式 | 使用帮助 | 机电之家 | 会员助手 | 免费链接

    点击这里给我发消息66821730(技术支持)点击这里给我发消息66821730(广告投放) 点击这里给我发消息41031197(编辑) 点击这里给我发消息58733127(审核)
    本站提供的机电设备,机电供求等信息由机电企业自行提供,该企业负责信息内容的真实性、准确性和合法性。
    机电之家对此不承担任何保证责任,有侵犯您利益的地方请联系机电之家,机电之家将及时作出处理。
    Copyright 2007 机电之家 Inc All Rights Reserved.机电之家-由机电一体化网更名-声明
    电话:0571-87774297 传真:0571-87774298
    杭州滨兴科技有限公司提供技术支持

    主办:杭州市高新区(滨江)机电一体化学会
    中国行业电子商务100强网站

    网站经营许可证:浙B2-20080178-1