sdi-12实现分析和总结.docxVIP

  • 98
  • 0
  • 约8.22千字
  • 约 16页
  • 2022-04-21 发布于上海
  • 举报
SDI-12 串行总线实现 图 1:总线时序唤醒信号:12MS 高电平(Least)+8.33MS 低电平; 主机指令发送; 从机应答发送。 对于时序偏差的容忍度是±0.4MS,唯一的例外是Stop Bit 和下一个Start Bit 之间的时间间隔的最大值为 1.66MS 不允许偏差。 主机将数据线设置为高至少 12MS 将被认为是一个Break; 从机在数据线设置为高 6.5MS 以内不会认为是 Break,而设置为高 12MS 以上必定认为是 Break; 从机在接收地址之前,必须要等待 8.33MS 的前导低电平; 在接收到Break 信号 100MS 以内,传感器必须被唤醒,并做好监测Start Bit 的准备; 主机在发送完命令的最后一个Bit 以后,必须在Stop Bit 结束后 7.5MS 内让出总线的 控制权;(容忍度:+0.4MS) 在接收到 Break 和 Command 以后,被地址定位的从机将数据总线设置为低8.33MS(容忍度:—0.4MS),应答的第一个 Byte 的 Start Bit 应在 Command 的最后一个 Stop Bit 发送后 15MS 发送(容忍度:+0.4MS); 从机在发送完最后一个应答 Byte 以后,应该在 7.5MS 以内释放总线的控制权(容忍度: +0.4MS); 在应答和指令的两个 Bytes 的 Stop Bit 和 Start Bit 之间的时间间隔不能超过 1.66MS,没 有容忍,这使得对M 命令的应答被限制在 380MS 以内; 传感器必须在接受到一个无效地址或者在接受到最后一个Mark Bit 的 100MS 后进入睡眠模式(容忍度:+0.4MS); 如果上一个指令是不同的地址,或者最后一个Market Bit 已经发送了 87MS,在发送命令前应加上 Break。 Break 的规则 在需要从休眠状态唤醒一个传感器时,主机将发送一个 Break Bit。传感器在接受到最后一个 Mark Bit 的 100MS 后或者接收到一个无效地址后将再次进入休眠状态。因此,如果上一个指令是不同的地址,或者最后一个Market Bit 已经发送了 87MS,在发送命令前应加上Break。 如果接收到的服务通知将在 87MS 以内执行 D0 指令,主机不一定要发送 Break。然而如果延迟的时间超过了 87MS,则必须发送一个 Break 来唤醒设备。 重试 主机必须支持重试,传感器在接收到 Break 以后有 100MS 的时间来唤醒设备,且在被唤醒前不会接收任何指令。传感器在检测到数据总线空闲 100MS 以后将再次进入休眠模式。 重试:在发送命令后没有接到回应的情况下,主机将等到命令的最后一个 Bit 发送16.67MS 以后 87MS 以前重新发送命令(不需要Break)。在重试两次以上以后仍未接收到正确的回应新号,如果最后一次重试是在 Break 的 100MS 以后(保证设备拥有完整的 100MS 的唤醒时间),将重新发送包括 Break 在内的所有命令(两次以上)。 重试的条件如下: 1、 传感器没有回应; 2、 在接收到回应的 Start Bit 后,出现了 8.33MS 的 Mark; 3、 不正确的回应。 错误回应包括:不正确的格式;奇偶校验错误;帧错误或者是总线竞争。在发送重试以前必须等待回应结束。任何以上三条件之一存在的话,将触发重试。 SDI-12 通信协议 SDI-12 的主机和传感器之间通过 ASCII 字符进行数据交换。主机将数据线置高 12MS 以发送一个 Break 来唤醒传感器。主机发送一个命令。传感器回复一个相应的应答。每个命令都将发送给一个明确的传感器。每个命令的第一个字符是主机将要通信的那个传感器的唯一 地址。其他的传感器将跳过这个命令并再次进入休眠状态。主机开始从一个传感器采集数据 后,如果没有接收到正确的回应将不会同其他传感器进行通信。 一个标准的传输流程为: 1、 主机通过一个 Break 来唤醒 SDI-12 总线上的所有设备; 2、 主机广播一个带有唯一地址的命令,指示一个传感器进行测量; 3、 地址指向的传感器将在 15MS 以内回应测量设备将数据准备好所需的时间和将要回应的数据的字节数; 4、 如果测量数据立刻就可以准备好,主机将发送一个命令来得到测量数据。如果数据不能立刻准备好,主机将等待传感器发送一个表示数据已经准备就绪的请求。这时主机再发送命令来得到数据; 5、 传感器回应一个或多个测量数据。 数据率和帧格式 SDI-12 总线的数据率是 1200,下表显示了 SDI-12 的帧格式: Start Bit: 奇偶校验:偶校验 End Bit: UART 设置:硬件流关闭,数据位 8,校验无,停止位

文档评论(0)

1亿VIP精品文档

相关文档