MBus协议详解(二)

2023-05-16

4.4 slave设计

传输特性:slaves被设计为具有两种不同恒定sink电流,因此在总线上电压有1V的变化的时候,sink电流的变化一定不能超过0.2%。为了传输一个Mark,一个单位负载被指定,一个单位负载由最大为1.5mA的恒定电流组成。如果slave需要更多的电流,就必须增加适当数量的单位负载。当发送一个space的时候,slave需要多增加11~20mA的电流消耗。Slave在接收数据的时候,检查总线电源的最大值VmaxVmax可以在21V~42V之间。Slave端检测到的电压超过Vmax-5.5V时,slave端认为接收到一个Mark;当检测的电压小于Vmax-8.2V时,slave端认为接收到一个Space

远程供电:slave和总线系统间的接口称为总线接口,总线接口可以从总线系统获得所需要的电流。如果可能,所有slave都应该从总线获得电流,在这种情况下,一旦从总线获得电流失败,slave能够自动切换到电池供电或者重要的数据能够被保存。如果slave仅仅通过电池供电,那么选择的供电电池应该有几年的使用寿命,这可以减少维护成本。

保护措施:Slaves的总线接口是极性无关的,也就是说两条总线可以互换,而不会影响slaves的运行。总线接口的这种极性反接保护功能除了具有保护的作用外,还可以简化总线系统的安装。Slaves中的某一个可能出现短路的情况,在这种情况下为了维持总线的正常运行,在每个slave的总线上必须有保护电阻,电阻的值为430±10Ω。这限制了短路时电流的最大值为100mA42V/420Ω),在总线接口上减少了能量转换为热量。

M-BUS总线收发器TSS721

    为了满足slaves的设计要求,TI公司开发了集成电路收发芯片TSS721TSS721MBus系统的slave设备中作为到总线的接口芯片使用,由于slave的设计中使用了TSS721芯片,减少了组成slave设备的组件,节约了成本。除了根据MBus规范进行数据的发送和接收,TSS721还能够为与之相连的微处理器提供工作电压,这样TSS721和微处理器就可以进行通信,通信的波特率可以在300~9600这个范围。TSS721的其他特性还包括反极性保护功能,给微处理器提供3.3V的恒定电源,总线电源故障指示。
                                                                                   TSS721 收发器框图

下面结合TSS721的框图,详细的介绍它的各个功能:

反极性保护:总线首先通过外部保护电阻被带到桥式整流器BR,以提供反极性保护。通过桥式整流器后的整流电压变为统一方向的VB端和GND端的电压,能够在VB引脚上得到(即VB引脚上的电压就是整流后总线上的电压差)。为了避免整流后电压的减小,当反极性保护可以省掉的时候,总线电压可以直接在VB引脚和GND引脚之间进行连接。

数据接收:比较器电路TC3用于检测来自于master的信号,通过电容SC的充放电,TC3调整自身电压到Mark电压水平通过比较电路TC3的比较,将结果通过TX或者TXI端送至微处理器接收端当总线处于Mark状态的时候,SC电容充电直到电压等于Vmark-8.6V;在Space状态下,SC电容进行放电。充电和放电电流比大于30倍,这使得任何种类的Uart协议都可以独立于数据内容而工作。电容SC上的动态参考电平可以使比较器TC3和总线上Mark电平电压形成一种动态平衡。 由于SC电容充电和放电电流之间的比例关系,导致了在传输协议上的特别要求,就是每发送11bit,必须保证至少第11bit是逻辑1,也就是说是一个Mark。这样就能够保证SC电容不会放电太多,对Mark电压电平的匹配总是有效的。当一个低于Mark电压水平7.9v的电压出现在接收端,TSS721TX引脚输出逻辑00v),反向引脚TXI上输出电源电压。

数据发送通过TC4控制恒流源CS1和恒流源CS3可以将RXRXI引脚接收到的信号转换为总线电流,并进行电流脉冲编码。当发送Mark信号的时候,通过恒流源CS1从总线上吸取比较小的静态电流;当发送Space信号的时候,通过TC4将恒流源CS3接入总线系统,因此总线上增加额外的脉冲电流达到Ispace电流。静态电流(即恒流源CS1电流值)可以通过Ridd电阻在一定的范围内进行调节,脉冲电流(即恒流源CS3电流值)可通过Ris电阻进行调节。为了让处理器能够检测出MBus总线上产生的冲突,在RX(I)上的信号会被返回到TX(I)上。

    处理器供电:为了给微处理器供电,TSS721在它的VDD引脚输出3.3V电压。当限制到一个标准负载时,根据微处理器的数据手册可以消耗大概600mA的平均电流。对于脉冲电流的要求,储能电容STC被使用。当连接到总线的时候,这个电容将被充电到最大7V的电压,VDD引脚上的输出电压在Vstc=6V的时候是有效的。当总线电压供电失败,TSS721PF引脚输出电压失败信号,这个信号可用于通知处理器将其数据保存在存储设备中(比如:EEPROM),同时由储能电容STC供电。另外,TSS721也允许使用一个FET(场效应)管连接到VS引脚在总线供电失败的时候,通过电池给TSS721供电。下图显示了通过TSS721给微处理器供电的三种方式。
  数据链路层

物理层对数据链路层做了一定的要求,在链路层除了使用300~9600波特率的数据速率进行半双工异步串行传输外,还包括至少每第11个比特是一个逻辑1,由于从设备间不能进行通信因此设备间必须是一个主从结构。

数据链路层的协议是基于国际标准IEC 870-5IEC 870-5定义遥控设备及其系统的传输协议。MBus协议是基于IEC 870-5,但并没有使用到协议规定的全部功能。

5.1 传输参数

        MBus协议使用异步串行比特传输方法,使用开始和停止比特来对每个字符进行同步。由于总线上静止状态表示逻辑1(即Mark),因此开始比特必须是逻辑0(即Space),并且停止比特是逻辑1Mark)。在开始和停止位之间是被传输的8个数据比特和1个奇偶校验位,这样就确保了每第11个比特是一个Mark的物理层要求。数据比特的传输按照由低到高的顺序,即数据的最低比特LSBLSB = least significant bit)首先被传输到总线上。采用半双工的传输方式,波特率最少为300,下图为一个字符在发送和应答方向上的传输:
  5.2 帧格式
    根据IEC 870-5标准,三种不同的数据完整性类别(I1, I2  I3)被设计用于远程控制数据的传输。M-Bus数据链路层还采用IEC870-5数据完整性类别I2的信息帧格式来处理传输过程中可能产生的传输故障。
                                                                             MBus 协议的帧格式

单字符:这种格式包含一个单一的字符,即E5H(十进制数为229),用于作为传输的接收应答。

短帧:这种格式具有固定的长度,10H作为开始字符,16H作为停止字符,中间包括CA字段和CA字段的校验和。

长帧:以68H作为开始字符,后面的长度字段(L字段)首先被传输两次,两个L字段后再次跟随开始字符68H。两个68H后依次是功能字段(C字段)、地址字段(A字段)和控制信息字段(CI字段)。L字段的值是用户数据(User Data)字段的长度加3(即CACI三个字节)。用户数据字段后是校验和,校验和的范围是L字段指示的范围。最后16H字符被传输,作为帧的结束。

控制帧:控制帧为不带用户数据的长帧,L字段为固定长度3,校验和字段是CACI字段的校验和。

5.3 各个字段含义

    下面描述的各个字段的长度都为1个字节,即8个比特。

C FieldControl Field, Function Field 控制字段、功能字段):除了标示功能和行为外,功能字段还指示了数据流的方向,还负责在调用和应答两个方向上的各种附加任务。

                                                                                控制字段编码
          最高比特位( MSB most significant )是保留位,值为 0 。比特位 6 用于指示数据流传输方向。为了避免传输丢失和重传,帧控制比特( FCB )用来指示报文被成功的传输和处理。如果期望的应答丢失或接收失败,主机发送具有相同 FCB 的报文,从机使用相同 FCB 的报文作为应答。主机将 FCV (帧控制比特有效, frame count bit valid )设置为 1 ,表明 FCB 被使用过,如果 FCV 位为 0 ,从机应该忽略这个 FCB

在应答方向,DFC(数据量控制,data flow control)位实现流控功能,DFC1表明从机不能再接收数据。ACD(访问请求,access demand)位为1,表示从机希望传输类型1数据(Class 1 data),这时主机应该发送一个命令用于请求类型1数据。这样类型1数据就具有更高的优先级,相对于类型2数据来说它就能尽可能快的被传输。类型1数据支持、ACD比特位功能、DFC位功能不是标准要求的。

                          控制字段的比特0~3位用于编码消息的功能和行为,如下表所示:
                                           MBus 协议控制码( F : FCB-Bit, A : ACD-Bit, D : DFC-Bit

    A FieldAddress Field,地址字段):地址字段在调用方向用于寻址接收者,在接收方向用于标识信息的发送者。这个地址长度为1字节,因此它的值为0~255。地址1~250能够被分配到各个从机,最多250个从机。没有配置的从机在出厂的时候分配的地址为0,当被连接到MBus总线的时候可以分配1~250个地址中的一个。地址254FEh)和255FFh)用于传输信息到所有的从机,即为广播地址(Broadcast)。地址255的广播没有从机应答,地址254的广播从机用它们自己的地址作为应答。当总线上有多个从机连接时,地址为254的广播会导致总线冲突,因此只能用于测试的目的。地址253FDh)表面只在网络层进行寻址,而不是在数据链路层。地址251252保留为以后使用。

    CI Fieldcontrol information field,控制信息字段):CI字段属于应用层的一部分,它被包含在使用的帧格式中,是为了在长帧格式和控制帧格式间进行区分。控制信息能够允许在主机和从机中实现多种行为。

     Check Sum(校验和):校验和用于识别传输和同步过程中的错误,是报文的特殊部分。校验和是校验范围内数据的算术和,不需要考虑进位。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MBus协议详解(二) 的相关文章

  • thrift例程编译报错原因和解决方法总结

    thrift里自带的turoral xff0c 使用make编译时经常会报错 xff0c 总结如下 xff1a 1 如果出现如下错误 xff1a error uint8 t does not name a type error uint32
  • C++11带来的move语义

    C 43 43 11带来了move语义 xff0c 可以有效的提高STL的效率 xff0c 这篇文章写的非常好 xff0c 可以参考 xff0c 这里对原文进行翻译 xff0c 加入我自己的理解 原文 xff1a http www cpro
  • C++11带来的lambda表达式

    C 43 43 11带来了lambda表达式 xff0c 可以简化程序的编写 xff0c 使代码更加清晰 现在按照步骤来介绍lambda表达式 xff1a 1 函数对象 又叫仿函数 xff0c 如果一个类或者结构体重载了operator 操
  • caffe中几个基本概念

    caffe中几个基本概念 1 caffe中的blob结构是用来进行数据存储 交换和处理网络中正向反向迭代时的数据和导数信息的数据结构 blob是caffe的标准数组结构 他提供了一个统一的内存接口 其将内部的cpu gpu数据之间的传输与存
  • 摄像头引脚定义

    摄像头引脚定义 1 NC NO CONNECT 2 AGND Power Analog ground 3 SIO D I O SCCB serial interface data I O 4 AVDD Power Analog power
  • Android7.0 JACK编译器不支持多用户同时编译的问题的解决

    xfeff xfeff Android7 0 xff08 也就是Android N xff09 上默认使用JACK编译器而不再使用openjdk了 xff0c 但发现JACK不是很好用 xff0c 比如最大的一个问题就是 xff0c 同一台
  • 【树莓派】死机自动重启、掉线自动重连

    目录 WIFI掉线自动重连 首先查看你的板子硬件型号 拿树莓派去做服务器就要配置下这两项 xff0c 保证随时能够VNC控制 WIFI掉线自动重连 http shumeipai nxez com 2017 01 25 raspberry p
  • open vswitch分析

    Open vSwitch 概述 Open vSwitch xff08 下面简称 OVS xff09 是一个高质量的 多层虚拟交换机 OVS 遵循开源 Apache2 0 许可 xff0c 通过可编程扩展 xff0c OVS 可以实现大规模网
  • C# 接口《通俗解释》

    原文地址 xff1a https www cnblogs com hamburger p 4681681 html 接口的定义 xff1a 接口是指定一组函数成员 xff0c 而不实现他们的引用类型 接口使用interface 关键字进行定
  • linux 如何查看指定动态库

    要查看 Linux 系统指定的动态库 xff0c 可以使用以下命令 xff1a 使用 ldconfig 命令 xff1a ldconfig p 该命令将显示系统已加载的所有动态库及其路径 如果要查找特定动态库 xff0c 可以使用 grep
  • Tortoisegit 恢复文件夹被删除的文件(被误删)

    关于Tortoisegit 恢复git文件夹中被删除的文件 xff1a 1 在git文件夹右键tortorisegit show log 2 选择版本 xff08 当时执行删除操作的版本 xff09 3 选择被delete掉的 xff0c
  • putty screen 快捷键

    使用putty的时候 xff0c 开启screen再detach xff0c 可以防止跑程序过程中断开连接而导致程序中断 总结了下putty与screen 相关的快捷键 目前常用的有如下几个 xff08 命令均在putty终端输入 xff0
  • Magento的不同版本(CE,EE,ECE)介绍

    Magento提供了三个不同的版本平台 xff0c 即Magento Community Edition xff08 CE xff09 社区版 xff0c Magento Enterprise Edition xff08 EE xff09
  • c语言初学,字母大小写转换

    这类题目主要通过ASCII码差值实现 xff0c A对应ASCII码十进制数字是65 xff0c a对应ASCII码十进制数字是97 xff0c 即大小写字母之间ASCII码差值为32 xff0c 想要将大写字母转换为小写字母可以将该字符A
  • matlab——subplot多子图共用一个colorbar,微调子图和colorbar位置

    用subplot命令画出多个图后 xff0c 需要让这些图共用一个colorbar 在这里与大家分享我的操作 xff0c 希望能帮助到有需要的人 备注 xff1a 从 R2019b 开始 xff0c 可以在分块图布局中显示共享颜色栏 xff
  • 远程连接服务器数据库报错:Host ‘XXXXXX’ is blocked because of many connection errors

    一 我遇到的问题描述 使用Navicat for mysql连接公司的服务器数据库 xff0c 报错 xff1a Host XXXXXX is blocked because of many connection errors 二 出现错误
  • android中MediaCodec硬编码中关键帧间隔时间设置问题

    在MediaCodec硬编码中设置 xff29 关键帧时间间隔 xff0c 在 xff21 xff30 xff29 中是这么设置的 mMediaCodec 61 MediaCodec createByCodecName debugger g
  • python3 网络编程问题——虚拟机centos7上运行tcp服务器,在主机win10上使用网络调试助手作为tcp客户端无法建立连接,提示1035错误:the socket is marked...

    前提 xff1a 主机和虚拟机都是在同一网段下 我的网络调试助手的连接结果如下图 xff1a 注意 红框中的提示 xff0c 连接超时的结果可能是由于以下两种可能的情况导致的 xff1a 1 服务器端口未开启监听 2 路由项被防火墙拦截 对
  • DSSM pytorch实现

    之前在网上找到了一个文本匹配实现仓库 xff0c 但是没有提供DSSM的代码 xff0c 我就根据那个代码实现以下DSSM 数据集采用的是蚂蚁金服的数据集 也参考过别人的代码 xff0c 但是总感觉怪怪的 xff0c DSSM原文中 xff
  • 文本匹配实验结果总结

    主要把一些实验结果说一下 xff1a DSSM 作为文本匹配的开山鼻祖 xff0c 想法也很简单 xff0c 就是将query 和doc拉到同一维度 xff0c 然后计算余弦相似度 xff0c 网络也是非常简单 xff0c 所以只获得了78

随机推荐

  • 使用wikiextractor 提取wiki数据

    wikiextractor包链接地址 xff1a https github com attardi wikiextractor 安装wikiextractor pip install wikiextractor 然后下载wiki语料库 xf
  • python爬虫(Python读取TXT文件中的URL并下载文件)

    前言 xff1a 本人之前并没有接触过python爬虫 xff0c 但是现在因为要做个试验 xff0c 需要下载海量人脸图片 xff0c 所以需要用到python爬虫这个办法 但是过程中遇到到了很多问题 xff0c 程序调了很久都不成功 x
  • 机器学习之python读取CSV文件

    当我们在用python处理机器学习的问题时 xff0c 往往需要先读取数据 xff0c 这些数据通常都是文件 xff0c 我今天遇到的是CSV文件 xff0c 是在kaggle竞赛数据集下载的 xff08 比如手写数字识别 xff0c 以及
  • Robust PCA Low-rank(附matalb 代码)

    最近在看的论文中 xff0c 包括人脸识别 xff0c 以及深度神经网络模型压缩等论文中 xff0c 都会有low rank 低秩 低秩稀疏分解等解决方法 xff0c 感觉关于low rank的研究还挺火的 xff0c 这个问题和Robus
  • 完美图解教程 Linux环境VNC服务安装、配置与使用

    图片直观明了 xff0c 尝试一步一步分享俺的成果 1 xff1a 下面第一步当然是确认自己linux系统是否安装VNC 默认情况下 xff0c Red Hat Enterprise Linux安装程序会将VNC服务安装在系统上 打开终端窗
  • torch.ge,torch.gt,torch.le

    torch ge torch ge input other out 61 None Tensor 逐元素比较input和other xff0c 即是否 input gt 61 otherinput gt 61 other 如果两个张量有相同
  • VAE(变分自动编码器)

    首先先贴上一些有用的链接 xff1a https www cnblogs com king lps p 8477300 html https zhuanlan zhihu com p 29685634 再补充一个链接 xff1a https
  • 视频去噪资料整理(深度学习方法)

    近几天做了一些视频去噪的一些边缘工作 xff0c 故整理一下 我读的一篇论文 xff1a paper TOFlow Video Enhancement with Task Oriented Flow code https github co
  • 正则表达式里的?:是啥意思例如(?:a|b)

    我也是找答案时看到的 xff0c 发现这里回答的理论是的 xff0c 但不好让人理解 xff0c 我也结合其他地方的资料 xff0c 才能理解他的答案 下面我用两个例子来说明 单引号里面的三个元字符之间的意思 39 39 1 39 39 x
  • idea设置javadoc、idea2020单行注释的快捷键

    找了半天 xff0c 想不起来叫什么 1 其实就是给方法和类上添加这种doc文档的注释的快捷键 xff1a 打开setting keymap 搜索 xff1a fix doc comment 我习惯用ctrl 43 enter 2 切换到i
  • LaTeX分享008【LaTeX多图排列方法】

    LaTeX分享 LaTeX多图排列方法 作者 xff1a JinyuLi 日期 xff1a 2023 03 18 内容 xff1a 填坑 xff0c 补充上一篇专栏中LaTeX图片插入问题中的多张图片同时插入的实现方法部分 xff0c 本篇
  • SONiC(2):手动运行sonic-vs

    SONiC的testbed都是用ansible自动部署的 xff0c 下面尝试手动来创建 另外最新的sonic vs可以从这里下载 准备工作 ansible生成的vlab 01这个虚机的vir配置xml文件如下 testbed 64 u18
  • SONiC vs testbed搭建

    准备工作 一台安装Ubuntu18 04的系统 xff0c 内存建议不少于16G 需要支持kvm虚拟化安装ssh server sudo apt update y sudo apt openssh server y 设置sudo免密 sud
  • 2. 安装GNOME和KDE图形化桌面

    安装GNOME和KDE图形化桌面 1 使用CD DVD介质配置本地Yum源2 安装GNOME图形化桌面2 1 安装GNOME xff1a 2 2 设置在系统启动时进入图形化桌面3 安装KDE图形化桌面3 1 安装KDE xff1a 3 2
  • 复位电路的几种设计

    本人转自 xff1a http hi baidu com yinweini2 item 48ba4f12f54587711009b591 复位源是导致单片机内部复位操作的源泉 xff0c 大致可分为七种 xff1a 上电复位 xff08 P
  • Hadoop入门经典:WordCount

    以下程序在hadoop1 2 1上测试成功 本例先将源代码呈现 xff0c 然后详细说明执行步骤 xff0c 最后对源代码及执行过程进行分析 一 源代码 package org jediael hadoopdemo wordcount im
  • Jlink 采用 SWD 模式下载电路接法

    在Jlink上 xff1a 对应的电路图为 xff1a 其中要使用的是 Pin1 gt vcc Pin7 gt SWDIO Pin9 gt SWCLK Pin4 gt GND 其他GND 引脚也可 在对于的开发板 xff08 举例 xff1
  • ubuntu系统硬盘温度过高的解决方法

    一 更改swap分区设置 在ubuntu 里面 xff0c swappiness的值的大小对如何使用swap分区是有着很大的联系的 swappiness 61 0的时候表示最大限度使用物理内存 xff0c 然后才是 swap空间 xff0c
  • MBus协议详解(一)

    看了许多关于MBus协议的资料 xff0c 感觉说的不具体 不完整 也不系统 xff0c 本人准备结合一个具体的产品实现 xff0c 从理论和实现上对MBus协议做一个详细的论述 xff0c 如有不当之处 xff0c 欢迎讨论 1 介绍 M
  • MBus协议详解(二)

    4 4 slave 设计 传输特性 xff1a slaves 被设计为具有两种不同恒定 sink 电流 xff0c 因此在总线上电压有 1V 的变化的时候 xff0c sink 电流的变化一定不能超过 0 2 为了传输一个 Mark xff