串口通讯格式:

  串口通讯可以分为同步通讯(Synchronous)和异步通讯(Asynchronous)。同步通讯时有一根时钟信号,数据格式中没有起始位和停止位;异步通讯中没有时钟信号,数据格式中包含起始位和停止位。此次记录内容为使用STM32的异步通信配置学习。

  串口异步传输一帧数据需要多个位,这些位的描述为 起始位+数据位+校验位+停止位。起始位是固定的 1bit ,数据位、校验位和停止位是可配置的,常见的配置类型如:数据位可配置格式为 5bit、6bit、7bit、8bit和9bit(PC端无法配置9bit),STM32好像不能配置5bit和6bit;校验位1bit,可配置为无校验、奇校验、偶校验、1校验(Mark)和0校验(Space),Mark校验和Space校验在STM32中好像不能直接配置;停止位可配置格式为1bit、1.5bit和2bit,STM32好像都是1bit停止位。重要的提示:平常使用中,校验位会单独拿出来配置和介绍,但是如果开启了校验功能,校验位是填充在数据位的MSB位置。意思是如果你开起了校验位,那么数据位需要设置为你所需要传输数据的位数加一,否则可能出问题。以几张时序图作为参考(第一次画,看着别扭):

  1、传输无校验位

            

  左图中起始位占据1bit,数据位占据8bit(如果设为数据位7bit,那数据位只有7个方格,同理至5bit、6bit),停止位占据1bit,不含校验位,两端表示空闲状态,这种数据格式配置是普通使用最常见的。右图中起始位占据1bit,数据位占据9bit,停止位占据1bit,不含校验位,两端表示空闲状态;一般我们都是以字节数据传输,这种配置时有9bit可用,MSB这一位通常用作校验位,而且这个校验位可以由用户随意指定;对于STM32使用者来说,虽然寄存器配置无法直接实现Mark校验和Space校验,但用户可使用该格式手动设置MSB,充当Mark校验或者Space校验结果使用,因为真实的校验结果也是放在数据位的MSB位置。

  2、传输有校验位

            

  左图配置起始位1bit、数据位8bit、停止位1bit,开启了校验功能,校验结果1bit占据了数据位的MSB位置,如此当设置为8bit数据位而且开启了校验功能时,用户可传输有效数据只有7bit,MSB会被校验结果强行占据。右图配置起始位1bit、数据位9bit、停止位1bit,开启校验功能,校验结果1bit占据MSB,用户可传输有效数据为8bit数据,恰好是常用的一个字节数据,所以当用户打算开启校验功能而且要保留当前传输数据有效位不变,就要配置数据位加1。对于这个情况,从STM32H7xx参考手册里截图说明如下:

  对于这一点通过程序设置串口为8bit数据位,开启奇校验,使用示波器探测波形进行验证。使用串口发送0xFF数据时,示波器显示传输数据为0x7F,因为0xFF经过校验后会把MSB的1变成0;使用串口发送0x7F数据时,示波器显示传输数据为0x7F。

码元学习:

  百度百科里面介绍:码元,承载信息量的基本信号单位。在数字通信中常常用时间间隔相同的符号来表示一个二进制数字,这样的时间间隔内的信号称为(二进制)码元。 而这个间隔被称为码元长度。值得注意的是当码元的离散状态有大于2个时(如M大于2个) 时,此时码元为M进制码元。

  码元传输速率,又称为码元速率或传码率。其定义为每秒钟传送码元的数目,单位为"波特",又可以称为波特率,常用符号"Baud"表示,简写为"B"。一个码元可能由多个位组成,所以波特率不一定等于比特率。如果一个码元只需要表示2个级别状态(0和1),那么一个码元就是一个位,此时波特率等于比特率;如果一个码元需要表示4个级别状态(0、1、2和3),那么一个码元需要两个位表示(即一个码元占据两个位,对数关系),此时波特率等于比特率的1/2。

MODBUS 超时时间:

1、两帧之间超时时间为3.5字符  2、一帧数据中每个字符超时时间为1.5字符

MODBUS 中处理一个字符相当于串口处理一帧。

超时时间根据通信速率计算:

  串口传输数据时,一个码元只占据一个位,所以串口的波特率等于比特率。

  bps = bit / s = 位 每 秒!  

  比如串口一帧数据常用的通信格式:起始位(1位) + 数据位(8位) + 校验位(0位) + 停止位(1位) = 10(位)

  9600bps 的比特率下,串口发送字节数据速度为 9600/10 = 960 字符/秒;

  每个字符对应时间为 1s / 960 ,3.5字符时间为 3.5 * 1 / 960 = 0.0036458 s = 3.6458 ms

网上资料指明,在通信速率等于或低于 19200 bps 时,这两个定时必须严格遵守;
对于比特率大于 19200 bps 的情形, 应该使用 2 个定时的固定值 :

  字符间超时时间(t1.5)为 750µs ,

  帧间的超时时间 (t3.5) 为 1.750ms 。

MODBUS 数据格式相关记录的更多相关文章

  1. [Android学习笔记]理解焦点处理原理的相关记录

    焦点处理相关记录 以下所涉及的焦点部分,只是按键移动部分,不明确包含Touch Focus部分 需解决问题 控件的下一个焦点是哪? 分析思路 当用户通过按键(遥控器等)触发焦点切换时,事件指令会通过底 ...

  2. 关于视觉跟踪中评价标准的相关记录(The Evaluation of Visual Tracking Results on OTB-100 Dataset)

    关于视觉跟踪中评价标准的相关记录(The Evaluation of Visual Tracking Results on OTB-100 Dataset) 2018-01-22  21:49:17 ...

  3. Linux系列笔记 - vim相关记录

    一.常用到的vim命令 这里只简单记录常用到的命令,后面会有自己记录的命令,但有些可能不常用. 常规模式: gg 跳到文件头 shift+g 跳到文件尾 行数+gg 跳到指定行 如:123gg 跳到1 ...

  4. web app 相关记录

    今天在手机浏览器上运行cocos2d-html5的sample, crystalcraze运行起来只有10~20帧, moonwarrior只有20~30帧,很不理想的数据: 记录下几个web app ...

  5. quartz相关记录

    1.http://www.quartz-scheduler.org/api/2.3.1-SNAPSHOT/ api地址 2.https://www.jianshu.com/p/3c3e166a7da1 ...

  6. Jexus使用的相关记录

    前言 本文是零零散散的记录,部分内容是我在平时工作中用到的,部分是从群里"偷"来的,所以难免会有一些错误. 主要还是希望能帮到部分使用Jexus的朋友. 安装 curl https ...

  7. powerdesigner相关记录

    背景 项目逐步开始规范化,表设计直接用designer来,然后生成语句,到oracle数据库,把相关的操作等记录一下, designer版本:15.1 oracle版本:11.2,64位 oracle ...

  8. git使用相关记录

    上传github操作记录:https://blog.csdn.net/pql925/article/details/72772660 git提交仓库相关:https://blog.csdn.net/M ...

  9. MODBUS协议相关代码(CRC验证 客户端程序)

    Modbus协议是一种已广泛应用于当今工业控制领域的通用通讯协议.通过此协议,控制器相互之间.或控制器经由网络(如以太网)可以和其它设备之间进行通信.Modbus协议使用的是主从通讯技术,即由主设备主 ...

随机推荐

  1. web安全常用工具

    简单工具:明小子,阿d注入工具,namp,穿山甲,御剑,旁注 漏洞扫描工具:appscan .awvs.nbsi 端口扫描工具:nessus.namp.天镜脆弱性扫描与管理系统 数据库备份工具:中国菜 ...

  2. HTML惊天地

    博主网站 一.HTML文档结构 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...

  3. 小程序开发:用Taro搭建框架

    1.node环境 1) 下载 . 官方地址:https://nodejs.org/en/ 或 https://nodejs.org/zh-cn/ 2)安装. 一路next......Install.直 ...

  4. Shell基础 -Linux从入门到精通第九天(非原创)

    文章大纲 一.关于shell二.shell进阶(重点)三.学习资料下载四.参考文章   一.关于shell 1. 什么是shell 1.1 shell简介  Shell(外壳) 是一个用 C 语言编写 ...

  5. Java中基本数据类型、不能用浮点数表示金额

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10831763.html 一:8种基本数据类型 8种基本数据类型(4整,2浮,1符,1布): 整型:byte( ...

  6. 07-cmake语法-MATCHES

    如果给定的字串或变量值域给定的正则表达式匹配的话,表达式返回真. IF (CMAKE_SYSTEM_NAME MATCHES "Linux") MESSAGE(STATUS &qu ...

  7. Game Publisher

    “Amazon Appstore https://developer.amazon.com/why-amazonApple Store https://developer.apple.com/prog ...

  8. LeetCode 1216. Valid Palindrome III

    原题链接在这里:https://leetcode.com/problems/valid-palindrome-iii/ 题目: Given a string s and an integer k, f ...

  9. opengl第一个工程

    #include <iostream> #include <glad/glad.h> #include <GLFW/glfw3.h> void framebuffe ...

  10. IIS 报错 Cannot open database "test4" requested by the login. The login failed. Login failed for user 'IIS APPPOOL\test1'.

    报错: Cannot open database "test4" requested by the login. The login failed. Login failed fo ...