原创 详解串行通信协议及其FPGA实现,5000字先马后看

      最后更新:2022-05-26 10:14:55 手机定位技术交流文章

      详解串行通信协议及 FPG A 实现 500 0 字先马后看

      \ 插播一条:

      今年我一直在研究一个简单简单的概念 80 0 余篇

      论文制作思维导图

      原理 + 源代 + 开题报 + + 外文资料

      我在找一封学生给我的密信

      前言

      自博客更新至今已久, 完成这篇文章花了一周时间。 文章讨论了《 串行议定书》数据框架结构、连环通讯工作技术、平板标准和编码方法。 Verilo g 允许序列发送和接收一个字节的数据。

      MC U 也许是序列发送。 1 线码使连环港口的传输和接收成为可能:

      STM3 2 的串口接收和发送

      //STM3 2 1 个字节 USART_SendData(USART1, 'A' ); while ( USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);

      //STM3 2 1 个字节: uint8_t Res; while ( USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);Res = USART_ReceiveData(USART1);

      5 1 单片机的发送和接收

      //5 1 单片机发 1 个字节 SBUF = ' A; while ( ! TI);TI = 0 ;

      //5 1 单片机接 1 个字节: char Res; if ( RI){

      Res = SBUF;

      RI = 0 ;}

      没那么难,很实质性的 C fpu t 函数 fget c 函数,还可以实 print f 直接 重定向到串口 某些调试数据可以简单地导出。

      STM3 2 输入输出应发至序列发报机。

      / / 可重定 print f 函数 int fputc ( int ch, FILE * f){

      USART_SendData(DEBUG_USARTx, ( uint8_t ) ch);

      while ( USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);

      return ( ch);} / / 可重定 scan f 函数 int fgetc ( FILE * f){

      while ( USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);

      return ( int )USART_ReceiveData(DEBUG_USARTx);}

      MC U 几乎所有半导体制造商都预先设计了序列号。 MC U 标签和高集成很容易使用,但字符串的推力大体上是固定的,不能修改。 FPG A 来说,需要使 HD L 从底部序列数据框架中可以做到这一点,在任何触发因素发生时可以立即这样做。 Verilog HD L 为了达成一项标准的系列通信协议,我们必须首先对系列通信协议有透彻的理解。

      串口数据帧格式

      波特率

      波特率,即比特率 Baud rat e ),即通信双 沟通的语 双方必须选择相同的港口利率,才能正常互动。 1 位的时间是 1 / 波特 秒,如,波特 9600bp s ,即每秒传 9600bi t 因此,每次 1/9600 s = 104.1666u s ,常用的波特率有 4800/9600/115200/1280 0 等等 我们可以按需要调整港口费率 1 M 3 M ,但是有 P C USB-TT L 高速港口速率没有模块支持,经常使用。 USB-TT L 芯片有 CH34 0 CP210 2 PL210 3 FT23 2 等,其 FT232H L 芯片 最大支 12 M 的波特率 当然,价格并不比其他薯片高多少。

      起始位和停止位

      框架从起始位置开始,结束停止位置。 0 Express 和 stop 位元已被修改 。 1 表示,一般 0. 5 1 1. 5 2 标准常规位数 1 只要当事人同意,中途停留将持续。

      数据位

      开始后就接近数据了 低一点 LS B )在前,高位 MS B )在后,一般 5 6 7 8 位数据位,常用的 8 因为一个字节是正确的, 使用比特比特 。 8 位。

      校验位

      通常使用验证来确定所收到的数据位置是否含有错误。 od d )、偶校验 eve n 0 校验 spac e 1 校验 mar k )及无校验 noparit y 对不起,我不知道,非常规检查需要有效的数据 和检查地点 1 这是一个奇怪的数字,像一个。 8 位长的有效数据为 0110100 1 ,此时共 4 1 ,为达到奇数 "1 " 的效果,校验位 1 1 的个数变 5 另一方面,需要适当的数据和校准。 1 因为数量是均衡的,现在是检查比特点以求平衡的时候了。 0 0 校验,即校验位总是 0 1 校验校验位总是 1 。奇偶校验逻辑相反 0 1 核查的逻辑是相反的,它经常是奇特的或未加节制的。

      奇偶校验 Verilo g 实现

      Verilo g 中顶检查的计算非常容易, 数据比特的奇点检查不同, 或奇点检查被反检, 以便使用单项操作员的削减功能, 简单计算奇点供应检查器 :

      input [ 7 : 0 ] data_in, / / 需要发送 8 位数据 wire even_bit; / / 偶校验 = 各位异或 wire odd_bit; / / 奇校验 = ~ 偶校验位 assign even_bit = ^ data_in; / / 简单操作员1美元,可比 data_in[0] ^ data_in[1] ^ ..... assign odd_bit = ~ even_bit;

      wire POLARITY_BIT = even_bit; / / 偶校验

      关于波特的费率允许的误差幅度

      例如,根据我的实际实验,港口利率有一定的误差差。 STM3 2 配置 11520 0 波特率, 10m s 发送一 3 0 序列芯片字节字符串 CH34 0 ,上位机波特率设置 113000-12100 0 你也许也能明白,这不是一个废墟,是相当不错的 200 0 港口费率也太宽,不能出错,当然,据了解,如果发送频率太高,数据量太大,无法大幅度增加,通信双方使用相同的港口费率来减少错误。

      串口数据的实际波形

      使用串口上位机连 USB-TT L 发送一个数据字节, 模块 。 1 位停止 + 8 位数据 + 1 位奇校验 + 1 点停位位置可以使用单振荡器触发功能设定。 USB-TT L 模块 T X 你知道这些字符为什么被运到这里吗?

      一个字符的实际波形

      两个字符的实际波形

      单一、半双倍、全时、不对称和同步之间的区别

      在我们进入序列电子高度标准之前, 让我们先看看序列通信的功能, 即单、半双、全时、逐步和同步的差异。

      单工

      单个雇员,即数据传输只能按一个方向发送;你可以将数据发送给我,或者我可以将数据发送给你。 方向已经确定,不可能进行双向接触,如外部天线电视、调频传输等等。

      半双工

      半半成半半比单件工作更先进,因为传输方向可能改变,使数据能够双向传递,虽然在一次中只有数据可以向一个方向传输,而且基本上可以是双向的,例如双向无线电 II C 通信。

      全双工

      全职工作比半日工作更先进,因为它可以同时以两种方式传递数据。 发送和接收是完全独立的,能够接收信号,同时发送或接收。 它需要发送和接收设备,以便拥有独立的发送和接收能力,例如电话连接。 SP I 通信,串口通信。

      同步和异步的区别

      连续通信可分为两类:同步通信和无同步通信。

      简言之,同步通信需要时钟信号,移动通信则不需要。

      · 同步:一旦发送者发送了数据,以下数据包在接收者答复之前将不予发送。

      · 当发送者提供数据时,接收方无须答复,下一批资料则发送。

      SP I II C 为同步通信 UAR T 为异步通信, USAR T 为同 & 异步通信。

      · USAR T 对称收发器和普遍同步化

      · UAR T :通用异步收发器

      USAR T 作者在一篇题为“同步和逐步”的文章中说: UAR T 只支持异步收发。

      STM3 2 在同步模式中时, 您必须连接到同步时钟, 才能画出您的脚, 即模式智能卡

      常用的串行通信协 / 电平标准

      TT L 电平

      即普 MC U 例如,芯片输出的串流电极 MC U 输出的串口信号就 TT L 电平。低电平 0-GN D ,高电平 1-VC C 其特点是速度、低潜伏度和高功率,主要用于盘中两个芯片之间的短距离通信。

      RS232

      RS23 2 这是系列的行业标准,无论是否使用。 PL C 23 2 控制机器的接口,即作为整个链条来源的连锁港。 23 2 电平标准 23 2 该标准采用了一定程度的否定推理。 -15~-3 v 为逻 1 +3~+1 5 为逻 0 ,这里的电平是 R X T X 相对 GN D 电压,既包括电压范围,也包括电压极。 TT L 很明显,两套公寓不能立即连在一起,必须连在一起。 MAX23 2 一级转换芯片,将两个级别实时转换为两个级别,用于一般传输远程控制。 20 m 以内,原因 RS-23 2 这是一种一端信号传输,涉及大规模噪音和无法限制逗号干扰的问题。

      RS485

      在从数十米到数千米的距离上进行通信时,这种通信十分广泛。 RS-485 串行总线标准 RS-48 5 使用平衡分配和有差别的接收,这抑制了不必要的干扰,此外,公共汽车收发机敏感度高,检测到的频率低。 200m V 因此,可以重建数千公里远的广播信号。 RS-48 5 只要在任何特定时间有少量的传输,传输电路就必须由使能信号来调节。 RS-48 5 是的,对于无数的连接 保存许多信号线是非常有用的。 RS-485 该系统可联网成分布式系统,允许尽可能大。 3 2 台驱动器 3 2 台接收器。

      RS422

      RS-42 2 RS-48 5 电路在实际中是相同的;电路的发送和识别方式不同,不需要数字连接。 RS-42 2 接受和分配全时工作不受两对扼杀的影响。 RS48 5 我们只能工作半天, 我们不能同时做, 但它只需要一对扼杀。 RS42 2 RS48 5 19kpb s 下能传 120 0 RS-42 2 的电气性能 RS-48 5 完全一样 主要的区别是.. RS-42 2 4 根信号线:两根发送 Y Z )、两根接收 A B )。由 RS-42 2 两者分开,以便同时(全时)接收和交付。

      串行通信的编码方式

      R Z 编码

      R Z 该代码还演变为零代码,其属性是数据位置在一段时间内以二进制方式传递,因此在数据位跳动后需要一段低电极水平的时期。

      以上图示图示单极零,即低水平的表格。 0 ,正电平表 1 这是两极零值的高位 1 ,负电平表 0 。如下图所示:

      NR Z 编码

      NR Z 此外,代码不是零,正表是我们最常用的代码之一。 1 ,低电平表 0 。它 R Z 编码的差别在于它不必是零,这意味着一个周期可以完全用来传输数据,使转让的能力得到充分利用。

      NRZ I 编码

      NRZ I 完整代码被称为倒置的非零代码,它包含前两个代码的好处,包括发送时钟信号的能力,同时减少系统带宽损失。 USB2. 0 通信的编码方式就 NRZ I 编码。其 NRZ I 因为编码比较简单, 信号级别会翻转表格。 0 ,信号电平不变表 1 。例如想要表 00100010(B ) 信号波形如下图所示:

      在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/26344.html

          热门文章

          文章分类