串行同步通信过程中时钟线的作用---但是因为发送者和接收者运行的频率不一样,信号的同步就是个问题,比如,接受者接收到了一个持续一段时间的低电平,无法得知这究竟是代表了5个0 还是1000个0

同步通信—时钟线 例如:spi iic
异步通信—波特率 例如:uart(rs485,rs232) can
usb----USB中用NRZI来编码数据

CAN总线使用异步串行通讯,相比同步串行通讯,CAN总线省去了一根用于同步的时钟线(CLK)。有优点,多半会带来一些缺点,缺点就是同步问题。
根据波特率做采样,波特率的误差会产生通信错误。为什么?CAN总线上的各个CAN节点的波特率来源于各个节点上的晶振(例如,STM32上的CAN控制器上的时钟频率就是从PCB上的晶振进行倍频后再分频得到)。晶振会有误差,外加上其他误差。说白了,各个节点的波特率都设置500K。但是,由于误差问题肯定不会完全等于500K。

https://blog.csdn.net/u013836909/article/details/104901622?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164688202816780269864672%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=164688202816780269864672&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v1~rank_v31_ecpm-1-104901622.pc_search_result_cache&utm_term=%E4%BB%8E%E9%9B%B6%E5%BC%80%E5%A7%8B%E5%AD%A6USB%EF%BC%88%E5%85%AD%E3%80%81USB%E9%80%9A%E8%AE%AF%E7%9A%84%E6%95%B0%E6%8D%AE%E6%A0%BC%E5%BC%8F%EF%BC%89&spm=1018.2226.3001.4187

首先,USB 的数据是串行发送的,就像 UART、I2C、SPI 等等,连续的01 信号只通过一根数据线发送给接受者。

但是因为发送者和接收者运行的频率不一样,信号的同步就是个问题,比如,接受者接收到了一个持续一段时间的低电平,无法得知这究竟是代表了5个0 还是1000个0。

一个解决办法,就是在传输数据信号的同时,附加一个时钟信号,用来同步两端的传输,接受者在时钟信号的辅助下对数据信号采样,就可以正确解析出发送的数据了,比如 I2C 就是这样做的,SDA 来传输数据,SCL 来传输同步时钟:
在这里插入图片描述

虽然这样解决了问题,但是却需要附加一根时钟信号线来传输时钟。有没有不需要附加的时钟信号,也能保持两端的同步呢?

有的,这就是 RZ 编码(Return-to-zero Code),也叫做归零编码。

在 RZ 编码中,正电平代表逻辑 1,负电平代表逻辑 0,并且,每传输完一位数据,信号返回到零电平,也就是说,信号线上会出现 3 种电平:正电平、负电平、零电平:

在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学无止境2022

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值