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


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.


20

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


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


17

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

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


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


15

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


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


13

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


13

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


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

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

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

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


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

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

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


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 ;-)


9

TL; DR : SPI is a generic physical interface that can do four different bit transmission protocols to be compatible with various chip interface specifications, while I2C is a specification that defines the bit transmission protocol and physical interface. They are different interfaces built from different starting point. Having selectable clock polarity and ...


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

I'd like to clarify some things: LVDS standard describes a way to transmit 0s and 1s serially as voltage differences. FPD-Link (and OpenLDI) standard describe a way to use LVDS to transmit video data. Becaue FPD-Link is so tightly coupled with LVDS they are used synonymously. So when someone says LVDS they usually mean FPD-Link (even data sheets do this!) ...


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


8

It is a both actually. UA stands for Universal Asynchronous which handles asynchronous serial transmission. RT stands for Receiver/Transmitter which are clearly hardware terms. The UART is both the hardware which implements the (UART) protocol. The hardware part is mostly called the UART 'peripheral' or device. However, the UART protocol can also ...


8

Once you've got a bomb-proof digital system going, then a logic analyser is great if you want to see complex signals across wide busses, or time, or codes. Until you've got said bomb-proof system going, an oscilloscope is essential for figuring out why your so-called digital system is behaving in an analogue way with ground bounce, logic overshoots, slow ...


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