30

Electrically it makes sense because ground is the one common connection to all devices on a IIC bus. That's a lot less of a restriction than forcing power to be the common connection to all IIC devices, as would be required if the lines were driven high and floated low via pulldowns. Note that IIC devices don't all need to be powered from the same net or ...


28

ASCII and CRC are not mutually exclusive. ASCII is an encoding, and CRC is for error checking. ANYTHING can be sent as ASCII. Us oldsters certainly remember UUEncoding, which turns anything into an ASCII string. A) For me, it's usually a question of speed and efficiency. Sending a large 32-bit number by ASCII can take a long time, but it only takes 4 ...


27

The official documentation for GPS is available online at: https://www.gps.gov/technical/ The portions you are probably most interested in are the Interface Control Documents, especially: IS-GPS-200, "NAVSTAR GPS Space Segment / Navigation User Segment Interfaces" IS-GPS-800, "NAVSTAR GPS Space Segment / User Segment L1C Interface" These documents ...


24

In the good old days, TTL drivers were much better at pulling a signal down than pulling it up. Therefore, protocols like I2C, but also interrupt lines, reset, and others, were all implemented using a pull-up with distributed pull-down.


17

Both of your first two links are, simply, wrong. A UART is a piece of hardware which can implement a number of different protocols which are used to frame asynchronous data streams. The U is an acronym for "Universal", and while it is effectively correct there is no reason a protocol could not be used which confounds the present population of UARTs - other ...


15

At some point in my life, I used to run the USB business for big semi company. The best result I remember was NEC SATA controller capable of pushing 320Mbps actual data throughput for mass storage, probably current sata drives are capable of this or slightly more. This was using BOT (some mass storage protocol runs on USB). I can give a technical detailed ...


15

How do you (or would you) design your systems protocol? In my experience, everyone spends a lot more time debugging communication systems than they ever expected. And so I strongly suggest that whenever you need to make a choice for a communication protocol, you pick whichever option that makes the system easier to debug if at all possible. I encourage you ...


15

The codes are just a reference to a set of actual IR codes. It tells the microcontroller or CPU (loose term) of the remote which type of code modulation, brand and device type to use. The standard protocols are RC5 and NEC, though there are other types. Once you know the protocol, the rest is just crafting the actual button code, which is a fairly small set ...


14

At least three reasons, probably: In the era when RS-232 ports were common, it so by far the most common means of bit-at-a-time communication, so much so that the term "serial port" became synonymous with "RS-232 port"; using the term "serial" in connection with anything else would add confusion. Note that USB avoids such confusion mainly because it seldom ...


14

It's easier to use ground as a common reference among subsystems that might have varying supply voltages. If you use PNP transistors to pull up to a supply voltage, all subsystems would have to be connected to the same supply.


14

There are different ways to prevent this: Make sure you never send a 10/13 combination in your regular messages (so only as stop bytes). E.g. to send 20 21 22 23 24 25: 20 21 22 23 24 25 10 13 Escape 10 and 13 (or all non ASCII characters with an escape character e.g. . So to send 20 21 10 13 25 26 send: (see comment of/credits for: DanW) 20 21 1b ...


13

You need to use a transceiver when you want to bring out high speed signals from inside the FPGA and interface with the real world. Typical examples are to communicate with other high speed parts on the same board (for example another FPGA or ADC) or to interface off board (for example using PCI, HDMI or ethernet). In order to send these high speed ...


13

Tag(or type)-length-value (TLV) is a method of containing different types of info of variable length in a data structure. You only need that when there's no common subset of info that every instance of that data structure must have, or when the order of fields must be variable for some reason. Think about it this way: if all GENEVE packets had a "...


13

How fail-safe is \n\r as stop bytes? If you send send arbitrary data -> probably not fail-safe enough. A common solution is to use escaping: Let's define that the characters 0x02 (STX - frame start) and 0x03 (ETX - frame end) need to be unique within the transmitted data stream. This way the start and the end of a message can be safely detected. If one ...


13

You do not need to pay anything if USB logo and the word "USB" is not important to you and you are happy using a non-unique Vendor ID code. The logo is protected by trademark and copyright and you receive a license to use it with conditions. One of those conditions is that you conduct certification testing. The Vendor ID is how they make sure you pay to ...


11

I did a little probing with my oscilloscope on my Chamberlin liftmaster pro formula 1 opener wires. There are 2 wires that connect to a 3 button wall switch (door open/close, light on/off, lock on/off). It's a PWM encoded DC signal with highs around 18v. When no buttons are pressed, there is a low pulse @ 80Hz periods that lasts for 200us. When the light ...


11

Byte-stuffing schemes have worked great for me over the years. They're nice because they're easy to implement in software or in hardware, you can use a standard USB-to-UART cable to send packets of data, and you're guaranteed to get good-quality framing without having to worry about timeouts, hot-swapping, or anything else like that. I would advocate for a ...


10

There are two main reasons for using a preamble to start a packet of manchester encoded data: Let the data slicer settle. Manchester is often used over radio links and physical links where there is no direct connection and the difference between a high and low level not explicitly known up front. This usually means a anlog signal is presented to a data ...


10

Some embedded system protocols, several of them extremely simple, are listed at Embedded Systems: Common Protocols, including: Tiny Embedded Network (TEN) Microcontroller Interpreter for Networked Embedded Systems (MINES) Yet Another Scalable Protocol (YASP) Local Interconnect Network (LIN) Serial Servo Controller (SSC) Robot Operating System serial (...


10

Rolling codes require several part to function correctly. Here I'll describe a generic implementation that uses all the parts in a specific way. Other systems are variations on this theme, but generally employ many of the same techniques in a similar way. Rather than try to describe the complete implementation and how it works at once, I'll describe a simple ...


10

Here are some thoughts about it: ASCII is nice because you can use a serial monitor to have a manual look in what is send. if your connection is not reliable,you must expect transmission-errors and should use a CRC to check the integrity of each received message. This can also be done on ASCII messages. if your connection is too slow you can reduce the ...


9

I don't see a synchronizer on the rx data line. All asynchronous inputs must be synchronized to the sampling clock. There are a couple of reasons for this: metastability and routing. These are different problems but are inter-related. It takes time for signals to propagate through the FPGA fabric. The clock network inside the FPGA is designed to ...


9

Without going into too much detail (because a lot has been said about them here and how much information there is readily available about them), the two main buses you can use are I2C (I-squared-C) and SPI. You can also use UART. Most microcontrollers come with built in modules for this that do the legwork for you.


9

MIPI and LVDS panels are quite different. They are different ways of sending a RGB, DE, Hsync, VSync signal to a panel. Older (lower res) panels would accept these digital signals directly so RGB24 would have 27 signals, and they would toggle at the pixel rate. LVDS is quite straight forward, and is just parallel data serialised 7:1. The RGB, DE, and syncs ...


8

I think the main benefit is that you can measure analog signals directly correlated in time to decoded serial protocol traffic in an integrated display. These types of modules will also often come with an indexed search kind of capability to let you jump to user-defined events through the common interface of the scope. Sometimes they will also identify ...


8

I first encountered KeeLoq when researching the chip in a garage door opener. The Microchip datasheet does a good job of explaining how it works. In a nutshell: the receiver maintains a database of all transmitters, keyed on their serial number. each transmitter is associated with a symmetric encryption key (64 bit), which is on the chip, and also in the ...


8

Since you already know about the SMBus, why not look into the Smart Battery Data Specification or the Smart Battery Charger Specification, as this is what you'll have to simulate. Yet, this won't describe if the System Management chip has some additional features which are undocumented ;-)


8

Good answers abound here, but there is also another reason. If the quiescent state of the bus is at ground, there is no way to tell if the bus is connected or just hanging in space. It is normal for the pull-up to be located at the master device. Slaves usually do not have a pull-up. This is because the pull-down current that would be required to assert a ...


7

The sequence of bytes is not for hiding the content from others, but to prevent accidental overwrites of data. You can accidentally write a byte to the EEPROM, but accidentally writing the three specific bytes in a row is much less likely. And no, you can't change the bytes.


Only top voted, non community-wiki answers of a minimum length are eligible