最后更新: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 ) 信号波形如下图所示:
在线网速测试 整理编辑,转载请注明出处。