Questions tagged «protocol»

协议是用于格式化和交换消息的规则集。

2
为什么USB设备的速度低于480 MBit / s
动机 信号速率为480 MBit / s时,USB 2.0设备应能够以高达60 MB / s的速度传输数据。但是,今天的设备在阅读[ Wiki:USB ]时似乎被限制为30-42 MB / s 。那是30%的开销。 十多年来,USB 2.0已经成为外部设备的事实上的标准。早期以来,USB接口最重要的应用之一就是便携式存储。不幸的是,USB 2.0迅速成为了这些带宽要求较高的应用程序的速度限制瓶颈,例如,当今的HDD能够以90 MB / s的顺序读取速度。考虑到长期的市场占有率以及对更高带宽的持续需求,我们应该期望USB 2.0 eco系统经过多年的优化,其读取性能已接近理论极限。 在我们的案例中,理论上的最大带宽是多少?每个协议包括USB都有开销,根据官方USB 2.0标准,它为53.248 MB / s [ 2,表5-10]。从理论上讲,这意味着今天的USB 2.0设备可以快25%。 分析 为了深入探究此问题的根源,以下分析将演示在从存储设备读取顺序数据时总线上正在发生的情况。该协议是逐层分解的,我们特别对以下问题感兴趣:为什么53.248 MB / s是批量上游设备的最大理论数量。最后,我们将讨论分析的局限性,这可能会给我们带来一些额外开销的提示。 笔记 在整个问题中,仅使用十进制前缀。 USB 2.0主机能够处理多个设备(通过集线器),每个设备可以处理多个端点。端点可以在不同的传输模式下运行。我们将分析限制在直接连接到主机并且能够在高速模式下通过上游批量端点连续发送完整数据包的单个设备上。 构图 USB高速通信以固定帧结构同步。每个帧长125 us,并以帧起始数据包(SOF)开始,并受帧结束序列(EOF)限制。每个数据包均以SYNC开头,并以和数据包结尾(EOF)结尾。为了清楚起见,这些序列已添加到图中。EOP的大小是可变的,并且取决于分组数据,对于SOF,它始终为5个字节。 在新标签页中打开图片可查看大图。 交易次数 USB是主驱动协议,每个事务都由主机启动。SOF和EOF之间的时隙可用于USB事务。但是,SOF和EOF的时间安排非常严格,并且主机仅启动可以在空闲时隙内完全完成的事务。 我们感兴趣的事务是成功的批量IN事务。事务从令牌包IN开始,然后主机等待数据包DATA0 / DATA1,并通过握手包ACK确认传输。所有这些数据包的EOP都是1到8位,具体取决于数据包数据,在此我们假定了最坏的情况。 在这三个数据包之间,我们必须考虑等待时间。它们位于主机的IN数据包的最后一位与设备的DATA0数据包的首位之间,以及DATA0数据包的最后一位与ACK数据包的第一位之间。我们不必考虑任何进一步的延迟,因为主机可以在发送ACK之后立即开始发送下一个IN。电缆传输时间定义为最大18 …

8
什么时候应该从ASCII切换到高级串行协议?
我所有通过UART与PC通信的微控制器设备都使用ASCII字符串发送命令和接收数据(在Arduino中实现)。这是我开始研究电子产品时学到的,我总是发现发送裸线就足够了。但是我注意到,我遇到的大多数设备都使用复杂的二进制协议,其中包括功能代码,地址和CRC错误检查。 什么时候可以接受基本的ASCII通讯?何时应该考虑使用更高级的功能,例如Modbus?商用设备是否使用这种ASCII?产业?

6
串行协议定界/同步技术
由于异步串行通信甚至在当今的电子设备中也很普遍,我相信我们许多人会不时遇到这样的问题。考虑与串行线(RS-232或类似产品)连接并且需要连续交换信息的电子设备D和计算机。即每个发送一个命令帧,并每个发送一个状态报告/遥测帧答复(报告可以作为对请求的响应发送,也可以独立发送-在这里并不重要)。通信帧可以包含任何任意二进制数据。假设通信帧是固定长度的分组。PCPCX msDY ms 问题: 由于协议是连续的,因此接收方可能会失去同步,或者只是在进行中的发送帧中间“加入”,因此它只是不知道帧起始位置(SOF)在哪里。根据数据相对于SOF的位置,数据具有不同的含义,接收到的数据可能会永久损坏。 所需的解决方案 可靠的定界/同步方案可在恢复时间短的情况下检测SOF(即重新同步所需的时间不超过1帧)。 我了解(并使用了一些)的现有技术: 1)标头/校验和 -SOF作为预定义的字节值。帧末的校验和。 优点:简单。 缺点:不可靠。恢复时间未知。 2)字节填充: 优点:可靠,快速恢复,可与任何硬件一起使用 缺点:不适用于固定大小的基于帧的通信 3)第9位标记 -在每个字节之前附加一个位,而SOF标记为1和数据字节标记为0: 优点:可靠,快速恢复 缺点:需要硬件支持。大多数PC硬件和软件未直接支持。 4)第8位标记 -上面的一种模拟,同时使用第8位而不是第9位,每个数据字仅保留7位。 优点:可靠,快速的恢复,可与任何硬件一起使用。 缺点:需要从/到常规8位表示到/从7位表示的编码/解码方案。有点浪费。 5)基于超时 -假定SOF为某个已定义的空闲时间之后的第一个字节。 优点:无数据开销,简单。 缺点:不太可靠。在较差的计时系统(如Windows PC)上无法很好地工作。潜在的吞吐量开销。 问题: 还有哪些其他可能的技术/解决方案可以解决该问题?您能否指出上面列出的缺点,可以轻松解决这些缺点,从而消除它们?您(或您将)如何设计系统协议?
24 serial  communication  protocol  brushless-dc-motor  hall-effect  hdd  scr  flipflop  state-machines  pic  c  uart  gps  arduino  gsm  microcontroller  can  resonance  memory  microprocessor  verilog  modelsim  transistors  relay  voltage-regulator  switch-mode-power-supply  resistance  bluetooth  emc  fcc  microcontroller  atmel  flash  microcontroller  pic  c  stm32  interrupts  freertos  oscilloscope  arduino  esp8266  pcb-assembly  microcontroller  uart  level  arduino  transistors  amplifier  audio  transistors  diodes  spice  ltspice  schmitt-trigger  voltage  digital-logic  microprocessor  clock-speed  overclocking  filter  passive-networks  arduino  mosfet  control  12v  switching  temperature  light  luminous-flux  photometry  circuit-analysis  integrated-circuit  memory  pwm  simulation  behavioral-source  usb  serial  rs232  converter  diy  energia  diodes  7segmentdisplay  keypad  pcb-design  schematics  fuses  fuse-holders  radio  transmitter  power-supply  voltage  multimeter  tools  control  servo  avr  adc  uc3  identification  wire  port  not-gate  dc-motor  microcontroller  c  spi  voltage-regulator  microcontroller  sensor  c  i2c  conversion  microcontroller  low-battery  arduino  resistors  voltage-divider  lipo  pic  microchip  gpio  remappable-pins  peripheral-pin-select  soldering  flux  cleaning  sampling  filter  noise  computers  interference  power-supply  switch-mode-power-supply  efficiency  lm78xx 

1
音量控制耳机如何工作?
最近有关Android发烧友的一个问题让我想知道音量控制耳机的工作原理。 我的意思不是说音量控制可以通过衰减输入信号来实现,而是指一种向设备发送信号以增加或减少信号输出的音量控制。 例如,根据Crossfade LP产品页面,音量控件仅适用于Apple设备: 通用兼容性和麦克风通信LP随附2条电缆,可与所有现代移动和音频设备通用兼容。三键式远程麦克风电缆是为最新的Apple设备设计的,包括iPhone®,iPad®,iPod®和Macbook系列。长的纯音频电缆和1/4“适配器与所有音频设备和专业设备通用兼容。 但是,这种设备显然可以在某些android手机上使用,问题是该设备也可以在Windows计算机上与某些计算机声卡一起使用,但不是Apple的买家(并且最近才购买了我的第一款智能手机),但我还没有看到这种设备之前的事情。我已经在Google上进行了快速搜索,但是找不到该技术标准的任何内容。 这是如何运作的? 就像缩短左/右/麦克风通道一样简单吗? 如果是这样,将这种耳机与不支持该技术的设备一起使用会损坏该设备吗? 它是串行信号,例如通过麦克风通道发送吗? 它仅需要耳机TRS连接器还是耳机+麦克风TRRS连接器? 这个技术有名字吗? 顺便说一句,有人可以回答这个问题吗,我大概可以自己查询其余信息。* 8') 它是否像它看来的标准,还是每个人都在追随Apple? 这是获得专利的东西吗? 如果是这样,谁拥有专利,他们是否会向人们收取使用该技术的许可费? 如果没有,是否有开放标准? 在回答这个问题时,有一些很好的信息。耳机插孔使用什么协议?但这并没有回答这种类型的音量(等)控件的工作原理的细节,因为它现在似乎更加普遍和标准。

7
为什么I2C设计为使用上拉电阻而不使用下拉电阻?
我了解在I2C中,SCL和SDA线使用上拉电阻,并且引脚驱动器是开路集电极NPN器件,可以将引脚驱动到地。这给I2C带来了一个优势,即同一根总线现在可以与多个从机共享,即使两个或多个从机意外尝试同时驱动该总线,也不会对系统造成任何损害。 但这也可以通过在SDA和SCL线上使用PNP开漏驱动器和下拉电阻来完成。时钟延展和多主机仲裁之类的事情也可以实现。 I2C协议的当前实现是否比上述建议的替代实现有任何好处?

1
官方GPS协议文档?
搜索“ GPS协议”会显示许多处理过的GPS数据源,例如NMEA或GPS单位的二进制输出。 GPS卫星-接收器协议的官方文档在哪里?或任何有趣的补充材料可能会解释它? 上下文:我对了解(例如)年历和星历如何传播特别感兴趣。
15 gps  protocol  standard 

2
滚动码说明
有人可以解释一下滚动代码协议(例如KeeLoq)如何工作吗?我了解他们每次都使用不同代码的基本前提,因此您不能仅使用重播攻击,但我不了解一方如何验证正确的代码等。 此外,如果事先不知道/未共享滚动码的索引,它们如何执行初始同步? 如果您必须以Keeloq为例进行说明,那很好,但是我宁愿对滚动代码进行一般性说明。
13 protocol 

6
以太网和串行通信之间有什么区别?
所有鼠标移动,USB连接和其他PC外设(例如打印机等)都称为串行通信。每次一次。 到现在为止还挺好。但是,当涉及TCP协议,以太网和Internet时,就不再称为串行通信。但这也是每秒的东西。 为什么会这样?主要区别是什么?我不明白为什么它不是串行通讯。

2
冗余I2C在航天航空电子设备中的使用
我最近阅读了有关JPL x2000航空电子设备开发项目的报告,该项目使用商业硅片开发了更多模块化的航空电子设备平台,以降低成本和功耗。他们选择了两个冗余协议的架构,以将航天器中的所有电子设备连接起来。高速1394总线用于大数据,而I2C总线(100khz)用于低带宽控制。它被配置为多主机总线,每个节点都可以在其中相互通信。 我使用I2C的不仅仅是单个传感器,但据我了解,距离存在严重限制。在航天器中,可能有很长的线束。 除了具有两个冗余I2C总线之外,每个设备还具有定制的ASIC,该ASIC在总线和此处和此处所示的主芯片之间提供隔离。该芯片是否也可以提供某种调节? 谁能解释为什么他们可能选择使用设计用于一个PCB内通信的协议来进行大型车辆内的通信? 我知道可能没有一个确定的答案,但是我有兴趣了解影响选择的因素。
10 i2c  protocol 

6
良好的基于​​RS232的协议,用于嵌入式到计算机的通信
我正在从事一个涉及远程Arduino与计算机之间大量数据通信的项目。无线连接是通过一对XBees进行的,因此我们在Arduino和计算机之间建立了RS232链接。对于少量数据,将一些简单的通信协议组合在一起很容易。但是,对于较大的项目,有什么好的简单的通信协议? 我看过MODBUS,这似乎是一个可行的选择,但我想看看是否还有其他更好的选择。

2
通用IR遥控器“代码”如何工作?
在搜索特定设备的IR协议和代码时,很容易找到这种参考。实际的IR传输所包含的数据远远超过这些小代码所能容纳的数据。 这些代码究竟代表什么? 四位数字如何代表设备可以接收的所有命令? 这些“代码”是否引用了某些标准协议?通用遥控器如何从这个小的配置代码中了解协议以及产品可以理解的所有代码? 我很想了解有关这项技术的更多信息。对我来说,每个遥控器似乎都是不同的,您必须对每条消息进行反向工程以识别哪个位/字节可以做什么。

2
VHDL:计数位时接收模块随机失败
背景 这是一个个人项目;考虑到将FPGA连接到N64,FPGA接收的字节值然后通过UART发送到我的计算机。它实际上运行得很好!不幸的是,在随机时间,设备将发生故障,然后恢复。通过调试,我设法找到了问题,但是由于无法使用VHDL,我对如何解决它感到困惑。 我一直在与VHDL玩弄几天,而我可能无法解决这个问题。 问题 我有一个示波器,它测量进入FPGA的N64信号,另一个通道连接到FPGA的输出。我也有数字引脚记录计数器值。 本质上,N64发送9个数据位,包括STOP位。计数器对接收到的数据位进行计数,当我达到9位时,FPGA开始通过UART发送。 这是正确的行为: FPGA是蓝色波形,橙色波形是N64的输入。在接收期间,我的FPGA“回音”输入的信号以进行调试。FPGA计数到9后,它开始通过UART传输数据。请注意,N64完成后,数字引脚计数为9,FPGA输出立即变为低电平。 这是一个失败的例子: 请注意,计数器会跳过位2和7!FPGA到达末尾,等待N64的下一个起始位,但是什么也没有。因此,FPGA超时并恢复。 这是N64接收模块的VHDL。它包含计数器:s_bitCount。 library IEEE; use IEEE.STD_LOGIC_1164.all; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity N64RX is port( N64RXD : in STD_LOGIC; --Data input clk25 : in STD_LOGIC; clr : in STD_LOGIC; tdre : in STD_LOGIC; --detects when UART is ready transmit : out STD_LOGIC; --Signal to …
9 fpga  vhdl  protocol 

5
\ n \ r作为停止字节的故障安全性如何?
在我的UART通信中,我需要知道所发送消息的起始字节和终止字节。起始字节很容易,但终止字节不是很多。我在消息末尾实现了两个停止字节,即\ n和\ r(十进制的10和13)。UART仅适用于字节0-255的值,那么这有多安全?我可以想象,尽管可能性很小,但当它们不是停止字节时,我的消息可能会依次包含值“ 10和13”。 有没有更好的方法来实现这一目标?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.