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 ...


28

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.


18

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 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 ...


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

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 ...


14

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 ...


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 10 1b ...


14

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 ...


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 ...


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

This is a very old topic, but it has no answer yet. This is my attempt: Why are today's implementations not capable of streaming at 53 MB/s? The calculations are nearly fine, but you are forgetting a couple of things in the available number of bytes between frame markers: Each microframe has two thresholds called EOF1 and EOF2. No bus acivity must occur ...


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

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

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

LVDS -> Low Voltage Differential Signalling is the actual voltage and impedances on the physical wires. There are different voltage levels even within the MIPI standard, so pay attention to those. MIPI is the format of the how the various bits are located relative to other bits and signalling and start and stop sequences inside the data stream. In some ...


8

Many small and cheap microcontroller have CAN built in. Look at some of the PIC 18 with "8" in their part number. You only need to add the physical CAN transceiver, like a MCP2551. If you just want a differential signal, then you can use a number of differential line drivers/receivers. There is nothing wrong with using CAN transceivers for this, RS-485 ...


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 ...


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