US20180196777A1 - Methods to send extra information in-band on inter-integrated circuit (i2c) bus - Google Patents
Methods to send extra information in-band on inter-integrated circuit (i2c) bus Download PDFInfo
- Publication number
- US20180196777A1 US20180196777A1 US15/917,507 US201815917507A US2018196777A1 US 20180196777 A1 US20180196777 A1 US 20180196777A1 US 201815917507 A US201815917507 A US 201815917507A US 2018196777 A1 US2018196777 A1 US 2018196777A1
- Authority
- US
- United States
- Prior art keywords
- serial bus
- duration
- line
- information
- bus
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/64—Hybrid switching systems
- H04L12/6418—Hybrid transport
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Definitions
- the present disclosure relates generally to an interface between processors and peripheral devices and, more particularly, to improving data communications capabilities of a serial bus.
- the Inter-Integrated Circuit serial bus which may also be referred to as the I2C bus or the I 2 C bus, is a serial single-ended computer bus that was intended for use in connecting low-speed peripherals to a processor.
- the I2C bus is a multi-master bus in which each device can serve as a master and a slave for different messages transmitted on the I2C bus.
- the I2C bus can transmit data using only two bidirectional open-drain connectors, including a Serial Data Line (SDA) and a Serial Clock Line (SCL).
- SDA Serial Data Line
- SCL Serial Clock Line
- the connectors typically include signal wires that are terminated by pull-up resistors.
- I2C supported data signaling rates of up to 100 kilobits per second (100 kbps) in standard-mode operation, with more recent standards supporting speeds of 400 kbps in fast-mode operation, and 1 megabit per second (Mbps) in fast-mode plus operation.
- Embodiments disclosed herein provide systems, methods and apparatus that provide improved performance of an I2C bus.
- Primary data may be encoded in first signaling in accordance with I2C bus protocols, and the first signaling may be combined with second signaling to obtain combined signaling for transmission on an I2C bus in accordance with the I2C protocols, specifications and/or de-facto standards.
- a method of data communications includes encoding primary data in an I2C signal in accordance with I2C bus protocols, encoding secondary data in the I2C signal to obtain a multi-channel signal, and transmitting the multi-channel signal on an I2C bus.
- the multi-channel signal may be compatible with the I2C bus protocols.
- encoding the secondary data in the I2C signal includes encoding the secondary data in a differential signal, the differential signal including a pair of complementary signals, and transmitting the differential signal on the I2C bus by transmitting one of the pair of complementary signals on the SDA of the I2C bus and a different one of the pair of complementary signals on the SCL of the I2C bus.
- the differential signal may be transmitted on the I2C bus when both the SDA and the SCL are at the high logic level.
- the SDA and the SCL may have voltage levels that are greater than a minimum voltage specified by the I2C bus protocols for a high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the differential signal is transmitted over the SDA and the SCL.
- the differential signal may be transmitted during a period of time when the I2C bus is idle.
- encoding the secondary data in the I2C signal includes encoding the secondary data in an FM signal, and transmitting the FM signal over one or more of the SDA of the I2C bus and the SCL of the I2C bus.
- the FM signal may have an amplitude that is less than a minimum hysteresis voltage level for Schmitt trigger inputs used by a receiver of an I2C compatible device.
- the minimum hysteresis voltage level may be defined in the I2C bus protocols.
- encoding the secondary data in the I2C signal includes inserting or refraining from inserting a short pulse into a signal transmitted on the SDA of the I2C bus or on the SCL of the I2C bus.
- a short pulse may be inserted when a value of a bit of the secondary data to be transmitted has a first value and the short pulse may be omitted when the bit of the secondary data to be transmitted has a second value.
- the secondary data may be encoded in the I2C signal by inserting or refraining from inserting short pulses into a plurality of half cycles of a clock signal transmitted on the SCL.
- the short pulse may have a duration that is less than a minimum duration specified by the I2C bus protocols for a pulse of the clock signal.
- the short pulse may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored by an I2C receiver.
- encoding the secondary data in the I2C signal includes pulse-width modulating a clock signal transmitted on the SCL of the I2C bus.
- Each high period of the resultant pulse-width modulated clock signal has a duration that exceeds a minimum high period for an SCL clock specified by the I2C bus protocols and each low period of the pulse-width modulated clock signal has a duration that exceeds a minimum low period for an SCL clock specified by the I2C bus protocols.
- the primary data may be encoded in frames to be transmitted on the I2C bus.
- Encoding the secondary data in the I2C signal may include transmitting a stop condition followed by a start condition between frames of primary data when a bit of the secondary data to be transmitted has a first value, and transmitting a repeated start condition when the bit of the secondary data to be transmitted has a second value.
- the primary data is encoded in frames to be transmitted on the I2C bus.
- Encoding the secondary data in the I2C signal may include transmitting a repeated start condition between frames of primary data, where the repeated start condition has a first of two predefined durations when a bit of the secondary data to be transmitted has a first value, and transmitting a repeated start condition that has a second of two predefined durations when the bit of the secondary data to be transmitted has a second value.
- the processing circuit may be configured to encode primary data in an I2C signal in accordance with I2C bus protocols, encode secondary data in the I2C signal to provide a multi-channel signal, and a transmitter configured to transmit the multi-channel signal on an I2C bus in accordance with the I2C bus protocols.
- the processing circuit of the encoder is configured to encode the secondary data by encoding the secondary data in a differential signal or an FM signal that is superimposed on the I2C signal.
- the processing circuit of the encoder may be configured to encode the secondary data by pulse-width modulating a clock signal transmitted on the SCL of the I2C bus, or by selectively adding short pulses to the SDA of the I2C bus or the SCL.
- the short pulses may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored by an I2C receiver.
- the processing circuit of the encoder may be configured to encode the secondary data by using bits of the secondary data to select type of start condition transmitted between frames of primary data transmitted on the I2C bus.
- the processing circuit of the encoder may be configured to encode the secondary data by using the bits of the secondary data to select duration of repeated start conditions transmitted between the frames of primary data.
- a method of data communications includes decoding primary data received from an I2C signal in accordance with I2C bus protocols, and decoding secondary data from the I2C signal.
- the secondary data is decoded using a protocol other than the I2C bus protocol.
- the I2C signal complies with the I2C bus protocols.
- decoding secondary data includes receiving a differential pair of signals from the SDA and the SCL of the I2C bus, where the SDA and the SCL carry different ones of the differential pair of signals, and decoding the secondary data from the differential pair of signals.
- the differential pair of signals may be received from the I2C bus when both the SDA and the SCL are at a high logic level.
- the SDA and the SCL may have voltage levels that are greater than a minimum voltage specified by the I2C bus protocols for the high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the differential pair of signals is received from the I2C bus.
- the differential pair of signals is received during a period of time when the I2C bus is idle.
- decoding the secondary data may include receiving an FM signal from at least one of the SDA or the SCL of the I2C bus, and decoding the secondary data from the FM signal.
- the FM signal may have an amplitude that is less than a minimum hysteresis voltage level for Schmitt trigger inputs in a receiver of an I2C compatible device as defined in the I2C bus protocols.
- the voltages of the SDA and the SCL may be greater than a minimum voltage specified by the I2C bus protocols for a high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the FM signal is being received.
- decoding secondary data includes determining presence or absence of short pulses in a signal received from the SDA of the I2C bus or the SCL of the I2C bus, and decoding the secondary data based on the presence or absence of the short pulses.
- Each of the short pulses may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored.
- decoding secondary data includes determining presence or absence of short pulses in a plurality of half cycles of a clock signal received from the SCL of the I2C bus, and decoding the secondary data based on the presence or absence of the short pulses.
- Each of the short pulses may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored.
- decoding secondary data includes decoding secondary data in a pulse-width modulated clock signal received from the SCL of the I2C bus.
- Each high period of the pulse-width modulated clock signal has a duration that exceeds a minimum high period for an SCL clock specified by the I2C bus protocols and each low period of the pulse-width modulated clock signal has a duration that exceeds a minimum low period for an SCL clock specified by the I2C bus protocols.
- decoding secondary data includes determining a first value for a bit of secondary data when a stop condition and a start condition is received between consecutive frames carrying the primary data on the SDA of the I2C bus, and determining a second value for the bit of secondary data when a repeated start condition is received between the consecutive frames.
- decoding secondary data includes determining a first value for a bit of secondary data when a repeated start condition received between consecutive frames carrying the primary data on the SDA of the I2C bus has a first duration, and determining a second value for the bit of secondary data when the repeated start condition has a second duration.
- an apparatus configured to receive data from an I2C bus.
- the apparatus may include means for decoding primary data received from an I2C signal in accordance with I2C bus protocols, and means for decoding secondary data from the I2C signal.
- the secondary data is decoded using a protocol other than the I2C bus protocol.
- the I2C signal may comply with the I2C bus protocols.
- FIG. 1 depicts an apparatus employing a data link between IC devices that selectively operates according to one of plurality of available standards.
- FIG. 2 is a block schematic drawing illustrating certain aspects of an apparatus connected to an I2C communications bus.
- FIG. 3 illustrates a configuration of I2C connected to a common I2C bus.
- FIG. 4 is a timing diagram that illustrates the relationship between SDA and SCL signal wires on a conventional I2C bus.
- FIG. 5 is a timing diagram that illustrates timing associated with multiple frames transmitted on an I2C bus.
- FIG. 6 is a timing diagram illustrating transmission of secondary data over an I2C bus by varying an aspect of a terminating condition.
- FIG. 7 is a timing diagram illustrating transmission of secondary data over an I2C bus by inserting short pulses on a clock signal.
- FIG. 8 is a timing diagram illustrating transmission of secondary data over an I2C bus by pulse width modulating a clock signal.
- FIG. 9 is a timing diagram illustrating transmission of secondary data over an I2C bus by adding a low-voltage differential signal to the SCL and SDA signals.
- FIG. 10 is a timing diagram illustrating transmission of secondary data over an I2C bus by superimposing an FM signal on the SCL signal or the SDA signal.
- FIG. 11 is a block schematic diagram of an I2C device adapted to send extra in-band information on an I2C bus.
- FIG. 12 is a flow chart of a first method for transmitting additional data on an I2C bus according to one or more aspects disclosed herein.
- FIG. 13 is a diagram illustrating an example of a hardware implementation for a receiving apparatus that communicates over an I2C bus according to one or more aspects disclosed herein.
- FIG. 14 is a flow chart of a first method for receiving additional data transmitted on an I2C bus according to one or more aspects disclosed herein.
- FIG. 15 is a diagram illustrating an example of a hardware implementation for a transmitting apparatus that communicates over an I2C bus according to one or more aspects disclosed herein.
- a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program and/or a computer.
- an application running on a computing device and the computing device can be a component.
- One or more components can reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
- these components can execute from various computer readable media having various data structures stored thereon.
- the components may communicate by way of local and/or remote processes such as in accordance with a signal having one or more data packets, such as data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems by way of the signal.
- the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise, or clear from the context, the phrase “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, the phrase “X employs A or B” is satisfied by any of the following instances: X employs A; X employs B; or X employs both A and B.
- the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from the context to be directed to a singular form.
- Certain aspects of the invention may be applicable to communications links deployed between electronic devices that are subcomponents of a mobile apparatus such as a telephone, a mobile computing device, an appliance, automobile electronics, avionics systems, etc.
- a mobile apparatus include a cellular phone, a smart phone, a session initiation protocol (SIP) phone, a laptop, a notebook, a netbook, a smartbook, a personal digital assistant (PDA), a satellite radio, a global positioning system (GPS) device, a multimedia device, a video device, a digital audio player (e.g., MP3 player), a camera, a game console, a wearable computing device (e.g., a smartwatch, a health or fitness tracker, etc.), an appliance, a sensor, a vending machine, or any other similar functioning device.
- SIP session initiation protocol
- PDA personal digital assistant
- GPS global positioning system
- multimedia device e.g., a digital audio player, MP3 player
- a camera e
- FIG. 1 depicts an example of an apparatus 100 that may employ a communication link between IC devices.
- the apparatus 100 may include a wireless communication device that communicates through an RF transceiver with a radio access network (RAN), a core access network, the Internet and/or another network.
- the apparatus 100 may include a communications transceiver 106 operably coupled to a processing circuit 102 .
- the processing circuit 102 may include one or more IC devices, such as an application-specific IC (ASIC) 108 .
- the ASIC 108 may include one or more processing devices, logic circuits, and so on.
- the processing circuit 102 may include and/or be coupled to processor readable storage such as a memory 112 that may maintain instructions and data that may be executed by processing circuit 102 .
- the processing circuit 102 may be controlled by one or more of an operating system and an application programming interface (API) 110 layer that supports and enables execution of software modules residing in storage media, such as the memory device 112 of the wireless device.
- the memory device 112 may include read-only memory (ROM) or random-access memory (RAM), electrically erasable programmable ROM (EEPROM), flash cards, or any memory device that can be used in processing systems and computing platforms.
- the processing circuit 102 may include or access a local database 114 that can maintain operational parameters and other information used to configure and operate apparatus 100 .
- the local database 114 may be implemented using one or more of a database module, flash memory, magnetic media, EEPROM, optical media, tape, soft or hard disk, or the like.
- the processing circuit may also be operably coupled to external devices such as an antenna 122 , a display 124 , operator controls, such as a button 128 and a keypad 126 , among other components.
- FIG. 2 is a block schematic drawing illustrating certain aspects of an apparatus 200 that includes multiple devices 202 , 220 and 222 a - 222 n connected to a communications bus 230 .
- the apparatus 200 may be embodied in a mobile apparatus.
- the apparatus 200 includes multiple devices 202 , 220 and 222 a - 222 n that communicate using an I2C bus 230 and at least one imaging device 202 may be configured to operate as a slave device on the I2C bus 230 .
- the imaging device 202 may be adapted to provide a sensor control function 204 that manages an image sensor, for example.
- the imaging device 202 may include configuration registers or other storage 206 , control logic 212 , a transceiver 210 and line drivers/receivers 214 a and 214 b .
- the control logic 212 may include a processing circuit such as a state machine, sequencer, signal processor or general-purpose processor.
- the transceiver 210 may include a receiver 210 a , a transmitter 210 c and common circuits 210 b , including timing, logic and storage circuits and/or devices.
- the transmitter 210 c encodes and transmits data based on timing provided by a clock generation circuit 208 .
- Two or more of the I2C devices 202 , 220 and/or 222 a - 222 n may be adapted according to certain aspects and features disclosed herein to extend the bandwidth and other capabilities provided by a conventional I2C bus.
- the I2C devices 202 , 220 and/or 222 a - 222 n may be adapted to support a higher bit rate than can ordinarily be achieved when conventional I2C protocols are used to manage communications on the I2C bus 230 .
- the I2C protocols may conform to de facto I2C standards and may include specifications defining electrical and timing aspects of I2C signals, in addition to data formats and I2C bus control and timing.
- FIG. 3 illustrates a configuration of I2C devices 304 , 306 , 308 , 310 , 312 , 314 and 316 connected to an I2C bus 302 , whereby three devices 304 , 314 and 316 are adapted or configured to obtain higher data transfer rates over the I2C bus 302 .
- the adapted devices 304 , 314 and 316 may coexist with conventionally configured I2C devices 306 , 308 , 310 and 312 , and the adapted devices 304 , 314 and 316 may communicate using conventional I2C protocols, as desired or needed.
- communications using conventional I2C protocols may be considered to be a primary communication channel on the I2C bus 302
- the enhanced communications capabilities disclosed herein may be provided as one or more secondary or virtual communication channels that coexist on the I2C bus with the primary communication channel.
- a secondary communication channel may be available when an enhanced I2C device 304 controls the I2C bus 302 as a bus master.
- one I2C device 304 is currently serving as a bus master 304
- the bus master 304 may provide one or more secondary communication channels that can be monitored by slave I2C devices 314 and 316 that have been adapted according to certain aspects disclosed herein. Additional data (secondary data) can be transferred over the I2C bus 302 in a secondary channel without using an external bridge device and without compromising the functionality of legacy I2C devices 306 , 308 , 310 and 312 on the I2C bus 302 .
- FIG. 4 includes timing diagrams 400 and 420 that illustrate the relationship between SDA and SCL signal wires 402 , 404 on a conventional I2C bus.
- the first timing diagram 400 illustrates the timing relationship between the SDA signal wire 402 and the SCL signal wire 404 while data is being transferred on the conventionally configured I2C bus.
- the SCL signal wire 404 provides a series of clocking pulses 412 that can be used to sample data in the SDA signal wire 402 .
- the SCL signal wire 404 is in a logic high state during data transmission, data on the SDA signal wire 402 is required to be stable and valid, such that the state of the SDA signal wire 402 is not permitted to change when the SCL signal wire 404 is in a high state.
- I2C Specifications for conventional I2C protocol implementations define a minimum duration for the high period (t HIGH ) 410 of each pulse 412 on the SCL signal wire 404 , where the pulse 412 corresponds to the time in which the SCL signal wire 404 is in a High logic state.
- the I2C Specifications also define minimum durations for a setup time (t SU ) 406 and a hold time (t Hold ) 408 , during which the signaling state of the SDA signal wire 402 must be stable before and after the pulse 412 during which the SDA signal wire 402 is in the high logic state.
- the setup time 406 defines a maximum time period after a transition 416 between signaling states on the SDA signal wire 404 until the arrival of the rising edge of a pulse 412 on the SCL signal wire 404 .
- the hold time 408 defines a minimum time period after the falling edge of the pulse 412 on the SCL signal wire 404 until a next transition 418 between signaling states on the SDA signal wire 404 .
- the I2C Specifications also define a minimum duration for a low period (t LOW ) 414 for the SCL signal wire 404 .
- the data on the SDA signal wire 402 is typically captured for the period of time (t HIGH ) 410 when the SCL signal wire 404 is in the High logic state after the leading edge of the pulse 412 .
- the second timing diagram 420 of FIG. 4 illustrates signaling states on the SDA signal wire 402 and the SCL signal wire 404 between data transmissions on a conventional I2C bus.
- the I2C protocol provides for transmission of 8-bit data (bytes) and 7-bit addresses. Data transmissions are acknowledged by the receiver that drives the SDA signal wire 402 for one clock period, such that a low signaling state represents an acknowledgement (ACK) indicating successful reception and a high signaling state represents a negative acknowledgement (NACK) indicating a failure to receive or an error in reception.
- ACK acknowledgement
- NACK negative acknowledgement
- a start condition 422 is defined to permit the current bus master to signal that data is to be transmitted.
- the start condition 422 occurs when the SDA signal wire 402 transitions from high to low while the SCL signal wire 404 is high.
- the I2C bus master initially transmits the start condition 422 , which may be also be referred to as a start bit, followed by a 7-bit address of an I2C slave device with which it wishes to exchange data. The address is followed by a single bit that indicates whether a read or write operation is to occur.
- the addressed I2C slave device if available, responds with an ACK bit.
- the master and slave I2C devices then exchange bytes of information in frames, in which the bytes are serialized such that the most significant bit (MSB) is transmitted first.
- MSB most significant bit
- the transmission of the byte is completed when a stop condition 424 is transmitted by the I2C master device.
- the stop condition 424 occurs when the SDA signal wire 402 transitions from low to high while the SCL signal wire 404 is high.
- the I2C Specifications require that all transitions of the SDA signal wire 402 occur when the SCL signal wire 404 is low, and exceptions may be treated as a start condition 422 or a stop condition 424 .
- FIG. 5 includes timing diagrams 500 and 520 that illustrate timing associated with multiple data transmissions on an I2C bus.
- the period of time 514 that elapses between a stop condition 508 and a consecutive start condition 510 may be prolonged, causing the conventional I2C bus to be idle during this period of time 514 .
- a busy period 512 commences when the I2C bus master transmits a first start condition 506 , followed by data.
- the busy period 512 ends when the I2C bus master transmits a stop condition 508 and an idle period 514 ensues.
- the idle period 514 ends with transmission of a second start condition 510 .
- the idle periods 514 between successive data transmissions on the I2C bus may be reduced in number or eliminated by transmitting a repeated start condition (Sr) 528 rather than a stop condition.
- the repeated start condition 528 terminates the preceding data transmission and simultaneously indicates the commencement of a next data transmission.
- the state transition on the SDA signal wire 522 is identical for a start condition 526 occurring after an idle period 530 and the repeated start condition 528 .
- the SDA signal wire 522 transitions from high to low while the SCL signal wire 524 is high.
- a repeated start condition 528 is used between data transmissions, a first busy period 532 is immediately followed by a second busy period 534 .
- FIGS. 6-10 provide examples in accordance with certain aspects disclosed herein showing the exploitation of specifications governing the operation of an I2C bus and protocols to enable additional in-band data to be transmitted in-band on the I2C bus.
- FIG. 6 includes a first timing diagram 600 showing one conventional transmission of a data stream 602 with combinations of start and stop conditions 604 , 606 separating consecutive I2C frames, and another conventional transmission of a data stream 610 with repeated start conditions 612 , 614 separating consecutive I2C frames.
- an I2C bus master may be adapted to provide a secondary channel over an I2C bus by encoding data in the duration of repeated start conditions 622 , 624 , 626 and 628 .
- binary “1” is transmitted as a longer repeated start condition 624
- binary “0” is transmitted as a shorter repeated start condition 622 , 626 , 628 .
- the duration of the repeated start conditions 622 , 624 , 626 , 628 may be modulated by controlling the period of the hold time (t HD,STA ) 426 between a falling edge of the SDA signal wire 402 and the falling edge of the SCL signal wire 404 in a start condition 422 (see FIG. 4 ).
- Data to be encoded may be used to select the duration of the hold time 426 used on each occasion 622 , 624 , 626 and 628 selected from two or more durations that exceed the minimum hold time 426 defined in the I2C Specifications.
- the I2C Specifications define minimum hold times of 4 ⁇ s for standard-mode operation, 0.6 ⁇ s for fast-mode operation, and 0.26 ⁇ s for fast-mode plus operation.
- a receiver in an I2C slave device may be configured or adapted to detect variations in the period of the hold time (t HD,STA ) 426 of terminating conditions and, in at least some instances, differences in the magnitude of such variations.
- the hold time 426 may be varied for start conditions 510 or 526 occurring after an idle period 514 or 530 or in a repeated start condition 528 (see FIG. 5 ).
- an I2C bus master may be adapted to provide a secondary channel on an I2C bus by encoding data in the type of terminating condition 642 , 644 , 646 and 648 transmitted after an I2C frame.
- binary “1” is transmitted in a terminating condition 644 that includes a stop condition and a start condition, while binary “0” is transmitted as a repeated start condition 642 , 646 , 648 .
- additional in-band data may be transmitted in short pulses 710 , 712 or in an absence 714 of a short pulse on the SDA signal 702 or the SCL signal 704 .
- the I2C Specifications define a pulse width (t SP ) of a spike that must be suppressed by an input filter of a conventional I2C receiver in certain modes of operation.
- the t SP pulse width may be specified as having a maximum duration of 50 ns. Accordingly, any pulses that are shorter than 50 ns are filtered and ignored by conventional I2C receivers.
- An I2C transmitter may be adapted or configured to provide a virtual secondary channel over an I2C bus by encoding data in short pulses.
- two pulses 710 and 712 having a duration (t SEC ) 716 may represent a binary “1,” while a binary “0” may be determined when a pulse is not detected.
- two bits may be transmitted on the virtual secondary channel in one-bit interval of the I2C protocol.
- the pulses may be transmitted on SDA signal 702 or SCL signal 704 , provided the pulse has a duration t SEC ⁇ t SP , where t SP is specified for a current mode of operation of the I2C bus.
- additional short pulses 710 , 712 may be added in the period of time 708 when the SCL signal 704 is in the High logic state and in the period of time 718 when the SCL signal 704 is in the Low logic state, respectively.
- a short additional pulse 710 or 712 may be added when the SCL signal 704 is in one of the two periods of time 708 or 718 . That is, short additional pulses 710 or 712 may be inserted only during the low period 718 , with no pulses being inserted during the high period 708 , or vice versa.
- more than one additional pulse may be added in one or more of the periods of time 708 , 718 .
- Short pulses may be additionally or alternatively be added to the SDA signal 702 in the manner described for short pulses 710 , 712 added to the SCL signal 704 .
- minimum durations 410 , 414 for the High and Low logic states of the SDA signal wire 402 and SCL signal wire 404 are defined in the I2C Specifications for certain modes of operation.
- the duration (t HIGH ) 410 of each logic High period must be greater than 0.6 ⁇ s
- the duration (t LOW ) 414 of each logic Low period must be greater than 1.3 ⁇ s, with no maximum values specified.
- I2C devices may be adapted to modulate the width (durations 410 , 414 ) of the logic states of the SCL signal wire 404 , provided the minimum specified durations 410 , 414 for the High and Low logic states of the SCL signal wire 404 are obeyed.
- FIG. 8 is a timing diagram 800 illustrating the transmission of additional in-band data by using pulse-width modulation (PWM) to provide a secondary channel on an I2C bus.
- PWM pulse-width modulation
- the duration of each clock pulse 816 , 818 on the SCL signal 804 is determined by the value of at least one bit of secondary data bits 824 to be encoded in the secondary channel.
- An I2C bus master device that is adapted to pulse-width modulate the SCL clock signal may encode primary data on an I2C signal transmitted on the SDA signal 802 in accordance with an operating mode defined in the I2C Specifications.
- the data may be encoded in transmission intervals defined by a conventional SCL clock signal 804 . This combination of signaling may provide a primary communication channel on the I2C bus.
- the I2C master device may also encode secondary data on the SCL signal 804 using PWM to obtain a modulated SCL signal 814 .
- the I2C master device may use short pulses 816 to encode secondary data bits 824 with a value ‘0’ and longer pulses 818 to encode secondary data bits 824 with a value ‘1’.
- the pulse width of each type of pulse 816 and 818 may be maintained within predefined limits on duration.
- the use of PWM can at least double the bandwidth of the I2C bus between devices that support PWM.
- Each transmission of a byte transmitted on the SDA signal 802 provides 9 clock pulses that may be encoded using PWM.
- one data byte and a control bit may be sent on the PWM encoded SCL signal 814 while one data byte is being transmitted on the SDA signal 802 .
- a block of 9 bytes can be transmitted on the PWM encoded SCL signal 814 when a block of 8 bytes is transmitted on the SDA signal 802 .
- Other PWM schemes may be used and more than one bit may be encoded provided receiving I2C devices can be adapted or configured to distinguish differences in timing of the short pulses 816 , the longer pulses 818 and even longer pulses.
- I2C devices that are adapted to transmit and/or receive a PWM encoded SCL signal 814 are typically configured to recognize and/or distinguish between a start condition 806 , a repeated start condition 808 and a stop condition 810 in order to synchronize PWM encoders and decoders.
- the SCL signal 804 , 814 may be in a High logic state for prolonged periods of time preceding a start condition 806 or a stop condition 810 .
- the pulse 820 of the repeated start condition 808 may be available for encoding data using PWM when, for example, the pulse 820 of a repeated start condition 808 has the same duration as other pulses 812 in the base SCL signal 804 .
- the repeated start condition may use a pulse 820 that has a duration that is different from the other pulses 812 in the base SCL signal 804 , including when secondary data is encoded in the duration of modulated t HD;STA timing as discussed in relation to FIG. 6 .
- an encoder of an adapted I2C master may refrain from encoding data on the pulse 820 of the repeated start condition 808 .
- an encoder of an adapted I2C master may refrain from encoding data on the ninth clock pulse 820 , 822 for all transmissions, in order to simplify logic design, provide an additional channel for encoding data in the start condition 806 , repeated start condition 808 or stop condition 810 , or for other reasons.
- FIG. 9 is a timing diagram 900 illustrating the transmission of additional in-band data using differential signaling to provide a secondary channel on the I2C bus.
- the differential signaling may be accomplished by transmitting a pair of differential signals (D+, D ⁇ ) 910 , 912 by superposition of the complementary signals in the pair of differential signals (D+, D ⁇ ) 910 , 912 on the SDA signal wire 902 .
- the SDA signal wire 902 carries the D+ signal 910 and the SCL signal wire 904 carries the D ⁇ signal 912 .
- the pair of differential signals (D+, D ⁇ ) 910 , 912 is transmitted during at least a portion of the idle time 914 between a stop condition 906 and a start condition 908 .
- the differential signals (D+, D ⁇ ) 910 , 912 are typically low-voltage digital signals that have amplitudes selected to ensure that the high logic state of the SDA and SCL signal wires 902 , 904 can be modulated within the tolerances defined in the I2C Specifications for signaling states of the SDA and SCL signal wires 902 , 904 .
- secondary data may be encoded in the differential signals (D+, D ⁇ ) 910 , 912 using non-return-to-zero (NRZ) encoding that can be decoded at the receiver that has a phase-locked-loop (PLL) to synchronize a receive clock to the clock used for encoding the secondary data.
- NRZ non-return-to-zero
- PLL phase-locked-loop
- Other encoding schemes may be used as appropriate for the type of secondary data and clock frequency used to encode the secondary data, or for other reasons.
- the I2C Specifications define a nominal high input voltage level (V IH ) 930 at 70% of a device supply voltage VDD 924 , relative to a 0V reference 922 .
- a noise tolerance level (V nH ) is required for a signal 902 , 904 in the High logic state, and the maximum voltage level 926 for an input signal 902 , 904 is defined as VDD+0.5V. Consequently, an input signal may range between a minimum voltage level 928 of 0.9 ⁇ VDD and a maximum level of VDD+0.5V.
- input signals 902 , 904 may have a high logic state set or configured at VDD 924 , with a superimposed differential signal 932 having a peak-to-peak voltage level that is less than 0.2V.
- differential receivers may be configured to determine the difference in voltage between the SDA signal wire 902 and the SCL signal wire 904 during the idle period 914 .
- FIG. 10 is a diagram 1000 illustrating transmission of additional in-band data using frequency modulation (FM) to provide a secondary channel on the I2C bus.
- Data may be encoded using FM to vary the instantaneous frequency of a carrier wave and thereby obtain an FM signal 1002 having a substantially consistent peak-to-peak voltage level 1014 .
- the FM signal 1002 may then be overlaid or otherwise superimposed on an I2C signal 1004 , which may be the SDA signal and/or the SCL signal.
- the peak-to-peak voltage 1014 may be selected to be lower than the hysteresis voltage level specified for receivers by the I2C Specifications such that the I2C signaling in the combined signal 1006 can be received and decoded by a conventional I2C slave.
- the conventional I2C slave may reject, filter or ignore the FM signal 1002 in the combined signal 1006 .
- the FM signal 1002 in the combined signal 1006 may be extracted and demodulated or otherwise decoded by an I2C slave adapted according to certain aspects disclosed herein.
- the I2C Specifications define a minimum hysteresis voltage level (V hys ) of 0.05 ⁇ VDD for Schmitt trigger inputs in the receiver of an I2C device and the peak-to-peak voltage 1014 may be selected to be lower than the specified V hys .
- the FM signal 1002 may be transmitted on one or both of the SDA and SCL signals. When transmitted on both signal wires of the I2C bus, a timing shift may be provided between versions of the FM signal 1002 transmitted on the two wires to permit easier separation of the FM signal 1002 from the I2C digital signal 1004 . Transmission of the FM signal 1002 on both wires of the I2C bus may enable certain noise cancelation techniques to be applied.
- FIG. 11 is a block diagram illustrating an example of a transmitter 1100 and a receiver 1140 coupled to an I2C bus 1124 and configured or adapted according to certain aspects disclosed herein.
- the transmitter 1100 and/or receiver 1140 may be adapted or configured to enable data 1110 to be transmitted and/or received according to I2C standards-defined.
- the transmitter 1100 and/or receiver 1140 may be further adapted or configured to enable data 1116 to be transmitted and/or received using secondary channel signaling according to certain aspects disclosed herein.
- data encoded and transmitted in standards-defined protocols may be referred to as “Primary Data” 1110 , and it may be considered that such Primary Data 1110 is transmitted over a primary channel provided by the standards-defined I2C bus 1124 .
- Secondary Data 1116 data encoded and transmitted in secondary channel signaling may be referred to as “Secondary Data,” 1116 and it may be considered that the Secondary Data 1116 is transmitted over a secondary, or virtual channel on the I2C bus 1124 .
- the transmitter 1100 may include a primary channel serializer 1102 that serializes the Primary Data 1110 for transmission on the SDA signal wire 1122 in accordance with the timing of the clock provided on the SCL signal wire 1120 .
- the primary channel serializer 1102 is typically clocked by the transmit clock 1126 to produce I2C serial data 1112 for transmission on the SDA signal wire 1122 .
- the transmitter 1100 may also be configured or adapted to encode the Secondary Data 1116 in secondary channel signaling transmitted on the I2C bus 1124 .
- the Secondary Data 1116 may be serialized by a secondary channel serializer 1108 in order to generate a stream of bits (modulation data) 1118 that can be encoded in the secondary channel signaling.
- the secondary channel serializer 1108 may be clocked by the transmit clock 1126 and/or by a modulation clock 1128 generated in accordance with a modulation scheme used by the encoder/modulator 1104 to encode Modulation Data 1118 for generating secondary channel signaling.
- the encoder/modulator 1104 may provide the modulation clock 1128 when secondary channel communications with a slave device has been initiated or negotiated, and the modulation clock 1128 may otherwise be suppressed.
- the modulation clock 1128 may be derived or otherwise based on the I2C transmitter clock 1126 .
- the Secondary Data 1116 may be encoded by inserting short pulses 710 , 712 into the I2C transmitter clock 1126 (see also FIG. 7 ) or by pulse width modulating the I2C transmitter clock 1126 (see also FIG. 8 ), in which case the secondary channel serializer 1108 may receive a phase-shifted, frequency-doubled and/or frequency-divided version of the transmitter clock 1126 to clock a serial stream of bits as modulation data 1118 .
- a modulation clock 1128 may be based on the I2C transmitter clock 1126 in that the modulation clock 1128 may be suppressed when the I2C transmitter clock 1126 is active.
- the Secondary Data 1116 may be encoded in differential signals 910 , 912 transmitted during idle periods 914 during which no clock signal is transmitted on the SCL signal 904 (see FIG. 9 ), and a modulation clock 1128 is provided only when the differential signals 910 , 912 are transmitted.
- a modulation clock 1128 may be provided based on I2C frame timing on the I2C bus 1124 .
- the Secondary Data 1116 may be encoded in the configuration and/or selection of start condition 506 , a repeated start condition 508 and/or a stop condition 510 (see FIGS. 5 and 6 ) between bytes transmitted on the SDA signal wire 1122 .
- the modulation clock 1128 may be provided to extract a predefined number of bits based on the occurrence of one or more start or stop conditions 506 , 508 , 510 .
- the clock rate of the modulation clock 1128 may be independent of the clock rate of the I2C transmitter clock 1126 .
- the data rate of the modulation clock 1128 may be independently determined when FM is used (see FIG. 10 , for example) or when digital differential signals 910 , 912 are superimposed on the I2C Serial Data signal 1112 and I2C transmitter clock 1126 .
- clock information may be encoded in the digital differential signals 910 , 912 , or the digital differential signals 910 , 912 may be transmitted at a predefined clock rate.
- the encoder/modulator 1104 may include circuits and modules that can be enabled or disabled based on whether a secondary channel is available over the I2C bus 1124 . These circuits may include gates, delays and combinational logic to extend a clock pulse when PWM is used, for example, or when the timing of start conditions 506 , repeated start conditions 508 and/or stop conditions 510 is modified to encode Secondary data 1116 .
- the encoder/modulator 1104 may include circuits that adjust the voltage level of one or more logic level to permit modulation by a digital differential signal 910 , 912 or by an FM signal 1002 .
- the encoder/modulator 1104 outputs transmission signals 1114 that are based on the I2C serial data 1112 and the transmitter clock 1126 .
- the transmission signals 1114 may be relayed versions of the I2C serial data 1112 and the transmitter clock 1126 when a secondary channel is not required or desired, or when a receiving device is unable to receive the secondary channel.
- one or both of the I2C serial data 1112 and the transmitter clock 1126 may be modulated using one or more modulation techniques.
- modulation circuits of the encoder/modulator 1104 may be configured to control the operation of line driving circuits, such as the open-drain drivers 1106 .
- control signals and/or reference voltage levels 1130 may be provided by the encoder/modulator 1104 to control and/or modulate the voltage level of signals transmitted on the SCL and/or SDA signal wires 1120 , 1122 .
- a set of line receivers 1142 may include multiple types of receiving devices.
- the receiving devices may include differential receivers that can detect voltage modulations of the signals received from the SCL signal wire 1120 and/or the SDA signal wire 1122 .
- single ended receivers may ignore modulations and respond to signals received from the SCL signal wire and the SDA signal wire 1122 and that are compliant or compatible with the I2C Specifications.
- a differential receiver may compare the voltage levels of the SCL signal wire 1120 and the SDA signal wire 1122 to extract digital differential signals 910 , 912 (see FIG. 9 ).
- a differential receiver compares the voltage level of the SCL signal wire 1120 and/or the SDA signal wire 1122 to extract an analog FM encoded signal 1002 (see FIG. 10 ). Accordingly, the set of line receivers 1142 may provide multiple receive signals 1150 to a decoder/demodulator 1144 .
- the decoder/demodulator 1144 may be configured to extract I2C serial data 1152 from the SDA signal wire 1122 and to provide an I2C receive clock extracted from the SCL signal wire 1120 .
- the decoder/demodulator 1144 may produce multiple receive clocks 1160 , including the I2C receive clock and a demodulation clock that can be used to control deserialization of the data 1156 demodulated or decoded from secondary channel signaling.
- Deserialization may be performed by a primary channel deserializer 1146 to provide output Primary Data 1154 and a secondary channel deserializer 1148 to provide output Secondary Data 1158 .
- the decoder/demodulator 1144 may detect the presence of a secondary channel signal that modulates or is superimposed upon the I2C compliant signals transmitted on the SCL signal wire 1120 and/or the SDA signal wire 1122 .
- the receiving circuits 1142 may provide separate I2C compliant signals and modulation signals when the form of modulation used for secondary channel signaling includes some type of modulation of the voltage level of the digital SCL and/or SDA signal wires 1120 and/or 1122 .
- the decoder/demodulator 1144 may include circuits for detecting timing differences in the I2C signals and/or to detect presence or absence of additional short-duration pulses inserted on the I2C signals. Timing differences may be detected using counters, timers, one-shot delays, etc. Detection of timing differences may be determined in every clock cycle and/or between consecutive bytes transmitted on the I2C primary channel.
- FIG. 12 includes a flowchart 1200 illustrating a method for data communications on an I2C bus. Various steps of the method may be performed by a transmitting device that includes some combination of the I2C slave device 202 illustrated in FIG. 2 , the devices 304 , 314 or 316 illustrated in FIG. 3 , and/or other devices described herein.
- the device may encode primary data in an I2C signal in accordance with I2C bus protocols.
- the device may encode secondary data in the I2C signal to obtain a multi-channel signal.
- the device may transmit the multi-channel signal on an I2C bus.
- the multi-channel signal may be compatible with the I2C bus protocols.
- the secondary data may be encoded in the I2C signal by encoding the secondary data in a differential signal, where the differential signal includes a pair of complementary signals, and by transmitting the differential signal on the I2C bus by transmitting one of the pair of complementary signals on the SDA of the I2C bus and a different one of the pair of complementary signals on the SCL of the I2C bus.
- the differential signal may be transmitted on the I2C bus when both the SDA and the SCL are at the high logic level.
- the SDA and the SCL may have voltage levels that are greater than a minimum voltage specified by the I2C bus protocols for a high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the differential signal is transmitted over the SDA and the SCL.
- the differential signal may be transmitted during a period of time when the I2C bus is idle.
- the secondary data may be encoded in the I2C signal by encoding the secondary data in an FM signal, and transmitting the FM signal over one or more of the SDA and the SCL of the I2C bus.
- the FM signal may have an amplitude that is less than a minimum hysteresis voltage level for Schmitt trigger inputs used by a receiver of an I2C compatible device.
- the minimum hysteresis voltage level is defined in the I2C bus protocols.
- the secondary data may be encoded in the I2C signal by inserting or refraining from inserting a short pulse into a signal transmitted on the SDA or the SCL of the I2C bus.
- the short pulse may be inserted when a value of a bit of the secondary data to be transmitted has a first value and no short pulse is inserted when the bit of the secondary data to be transmitted has a second value.
- encoding the secondary data in the I2C signal may include inserting or refraining from inserting short pulses into a plurality of half cycles of a clock signal transmitted on the SCL.
- the short pulse may have a duration that is less than a minimum duration specified by the I2C bus protocols for a pulse of the clock signal.
- the short pulse may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored by an I2C receiver.
- the secondary data may be encoded in the I2C signal by pulse-width modulating a clock signal transmitted on the SCL of the I2C bus.
- Each high period of the resultant pulse-width modulated clock signal has a duration that exceeds a minimum high period for an SCL clock specified by the I2C bus protocols and each low period of the pulse-width modulated clock signal has a duration that exceeds a minimum low period for an SCL clock specified by the I2C bus protocols.
- the secondary data may be encoded in the I2C signal by transmitting a stop condition followed by a start condition between a pair of consecutive frames that encode primary data, when a bit of the secondary data to be transmitted has a first value, and transmitting a repeated start condition between the pair of consecutive frames when the bit of the secondary data to be transmitted has a second value.
- the secondary data may be encoded in the I2C signal by transmitting a repeated start condition between a pair of consecutive frames, where the repeated start condition has a first of two predefined durations when a bit of the secondary data to be transmitted has a first value, and transmitting a repeated start condition between the pair of consecutive frames with a second of two predefined durations when the bit of the secondary data to be transmitted has a second value.
- FIG. 13 is a diagram illustrating a simplified example of a hardware implementation for an apparatus 1300 employing a processing circuit 1302 .
- the processing circuit typically has a processor 1316 that may include one or more of a microprocessor, microcontroller, digital signal processor, a sequencer and a state machine.
- the processing circuit 1302 may be implemented with a bus architecture, represented generally by the bus 1320 .
- the bus 1320 may include any number of interconnecting buses and bridges depending on the specific application of the processing circuit 1302 and the overall design constraints.
- the bus 1320 links together various circuits including one or more processors and/or hardware modules, represented by the processor 1316 , the modules or circuits 1304 , 1306 and 1308 , line interface circuits 1312 configurable to communicate over an I2C bus 1314 that includes a plurality of connectors or wires, and the computer-readable storage medium 1318 .
- the bus 1320 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, will not be described any further.
- the processor 1316 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1318 .
- the software when executed by the processor 1316 , causes the processing circuit 1302 to perform the various functions described supra for any particular apparatus.
- the computer-readable storage medium 1318 may also be used for storing data that is manipulated by the processor 1316 when executing software, including data decoded from symbols transmitted over the I2C bus 1314 .
- the processing circuit 1302 further includes at least one of the modules 1304 , 1306 and 1308 .
- the modules 1304 , 1306 and 1308 may be software modules running in the processor 1316 , resident/stored in the computer-readable storage medium 1318 , one or more hardware modules coupled to the processor 1316 , or some combination thereof.
- the modules 1304 , 1306 and 1308 may include microcontroller instructions, state machine configuration parameters, or some combination thereof.
- the apparatus 1300 for wireless communication includes a module and/or circuit 1304 that is configured to encode primary data in an I2C signal in accordance with I2C bus protocols, a module and/or circuit 1306 that is configured to encode secondary data in the I2C signal to provide a multi-channel signal, and a module and/or circuit 1308 that is configured to transmit the multi-channel signal on an I2C bus 1314 in accordance with the I2C bus protocols.
- FIG. 14 includes a flowchart 1400 illustrating a method for data communications on an I2C bus.
- Various steps of the method may be performed by a receiving device that includes some combination of the I2C slave device 202 illustrated in FIG. 2 , the devices 304 , 314 or 316 illustrated in FIG. 3 , and/or other devices described herein.
- the device may decode primary data received from an I2C signal in accordance with I2C bus protocols.
- the device may decode secondary data from the I2C signal.
- the secondary data may be decoded using a protocol other than the I2C bus protocol.
- the I2C signal complies with the I2C bus protocols.
- decoding secondary data includes receiving a differential pair of signals from the SDA and the SCL of the I2C bus, where the SDA and the SCL carry different ones of the differential pair of signals, and decoding the secondary data from the differential pair of signals.
- the differential pair of signals may be received from the I2C bus when both the SDA and the SCL are at the high logic level.
- the SDA and the SCL may have voltage levels that are greater than a minimum voltage specified by the I2C bus protocols for a high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the differential pair of signals is received from the I2C bus.
- the differential pair of signals may be received during a period of time when the I2C bus is idle.
- decoding the secondary data includes receiving an FM signal at least one of the SDA and SCL of the I2C bus, and decoding the secondary data from the FM signal.
- the FM signal may have an amplitude that is less than a minimum hysteresis voltage level for Schmitt trigger inputs in a receiver of an I2C compatible device as defined in the I2C bus protocols.
- the voltages of the SDA and the SCL may be greater than a minimum voltage specified by the I2C bus protocols for a high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the FM signal is being received.
- decoding the secondary data includes determining presence or absence of short pulses in a signal received from SDA and the SCL of the I2C bus, and decoding the secondary data based on the presence or absence of the short pulses.
- Each of the short pulses may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored.
- decoding the secondary data includes determining presence or absence of short pulses in a plurality of half cycles of a clock signal received from the SCL of the I2C bus, and decoding the secondary data based on the presence or absence of the short pulses.
- Each of the short pulses may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored.
- decoding the secondary data includes decoding secondary data in a pulse-width modulated clock signal received from the SCL of the I2C bus.
- Each high period of the pulse-width modulated clock signal has a duration that exceeds a minimum high period for an SCL clock specified by the I2C bus protocols and each low period of the pulse-width modulated clock signal has a duration that exceeds a minimum low period for an SCL clock specified by the I2C bus protocols.
- decoding the secondary data includes determining a first value for a bit of secondary data when a stop condition and a start condition is received between consecutive frames carrying the primary data on the SDA of the I2C bus, and determining a second value for the bit of secondary data when a repeated start condition is received between the consecutive frames.
- decoding the secondary data includes determining a first value for a bit of secondary data when a repeated start condition received between consecutive frames carrying the primary data on the SDA of the I2C bus has a first duration, and determining a second value for the bit of secondary data when the repeated start condition has a second duration.
- FIG. 15 is a diagram illustrating a simplified example of a hardware implementation for an apparatus 1500 employing a processing circuit 1502 .
- the processing circuit typically has a processor 1516 that may include one or more of a microprocessor, microcontroller, digital signal processor, a sequencer and a state machine.
- the processing circuit 1502 may be implemented with a bus architecture, represented generally by the bus 1520 .
- the bus 1520 may include any number of interconnecting buses and bridges depending on the specific application of the processing circuit 1502 and the overall design constraints.
- the bus 1520 links together various circuits including one or more processors and/or hardware modules, represented by the processor 1516 , the modules or circuits 1504 , 1506 and 1508 , line interface circuits 1512 configurable to communicate over an I2C bus 1514 that includes a plurality of connectors or wires, and the computer-readable storage medium 1518 .
- the bus 1520 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, will not be described any further.
- the processor 1516 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1518 .
- the software when executed by the processor 1516 , causes the processing circuit 1502 to perform the various functions described supra for any particular apparatus.
- the computer-readable storage medium 1518 may also be used for storing data that is manipulated by the processor 1516 when executing software, including data decoded from symbols transmitted over the I2C bus 1514 .
- the processing circuit 1502 further includes at least one of the modules 1504 , 1506 and 1508 .
- the modules 1504 , 1506 and 1508 may be software modules running in the processor 1516 , resident/stored in the computer-readable storage medium 1518 , one or more hardware modules coupled to the processor 1516 , or some combination thereof.
- the modules 1504 , 1506 and 1508 may include microcontroller instructions, state machine configuration parameters, or some combination thereof.
- the apparatus 1500 for wireless communication includes a module and/or circuit 1504 that is configured to decode primary data received from an I2C signal in accordance with I2C bus protocols, a module and/or circuit 1506 that is configured to decode secondary data from the I2C signal, and a module and/or circuit 1508 that is configured to receive the I2C signal from the I2C bus 1514 and to separate and/or demodulate signaling associated with the encoded primary and secondary data I2C signal.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Dc Digital Transmission (AREA)
- Information Transfer Systems (AREA)
Abstract
System, methods and apparatus are described that offer improved performance of an Inter-Integrated Circuit (I2C) bus. Primary data may be encoded in first signaling in accordance with I2C bus protocols, and the first signaling may be combined with second signaling to obtain combined signaling for transmission on an I2C bus. Secondary data may be encoded in the second signaling with the combined signaling remaining compatible with the I2C bus protocols. The second signaling may modulate a voltage level of at least one signal in the first signaling. The second signaling may pulse-width modulate a clock signal transmitted on the I2C bus. The second signaling may modify a start condition between bytes transmitted on the I2C bus. The second signaling may add a plurality of short pulses to a clock signal transmitted in the first signaling.
Description
- This application is a continuation of, and claims priority from, patent application Ser. No. 14/700,860 filed in the U.S. Patent Office on Apr. 30, 2015, which claimed priority from patent application Ser. No. 14/243,459 that was filed in the U.S. Patent Office on Apr. 2, 2014 and issued as U.S. Pat. No. 9,710,423 on Jul. 18, 2017, the entire content of each of these applications and patent being incorporated herein by reference.
- The present disclosure relates generally to an interface between processors and peripheral devices and, more particularly, to improving data communications capabilities of a serial bus.
- The Inter-Integrated Circuit serial bus, which may also be referred to as the I2C bus or the I2C bus, is a serial single-ended computer bus that was intended for use in connecting low-speed peripherals to a processor. The I2C bus is a multi-master bus in which each device can serve as a master and a slave for different messages transmitted on the I2C bus. The I2C bus can transmit data using only two bidirectional open-drain connectors, including a Serial Data Line (SDA) and a Serial Clock Line (SCL). The connectors typically include signal wires that are terminated by pull-up resistors. Original implementations of I2C supported data signaling rates of up to 100 kilobits per second (100 kbps) in standard-mode operation, with more recent standards supporting speeds of 400 kbps in fast-mode operation, and 1 megabit per second (Mbps) in fast-mode plus operation.
- In some systems and apparatus, however, higher bandwidths are required to support communications between certain types of devices. For example, mobile communications devices, such as cellular phones, may employ multiple devices, such as cameras, displays and various communications interfaces that consume significant bandwidth. Higher bandwidths may be difficult to obtain when conventional I2C protocols are used to maintain compatibility with legacy devices. Accordingly, there exists an ongoing need for providing optimized communications on serial interfaces configured as a bus connecting master and slave components within a mobile device.
- Embodiments disclosed herein provide systems, methods and apparatus that provide improved performance of an I2C bus. Primary data may be encoded in first signaling in accordance with I2C bus protocols, and the first signaling may be combined with second signaling to obtain combined signaling for transmission on an I2C bus in accordance with the I2C protocols, specifications and/or de-facto standards.
- In an aspect of the disclosure, a method of data communications includes encoding primary data in an I2C signal in accordance with I2C bus protocols, encoding secondary data in the I2C signal to obtain a multi-channel signal, and transmitting the multi-channel signal on an I2C bus. The multi-channel signal may be compatible with the I2C bus protocols.
- In another aspect, encoding the secondary data in the I2C signal includes encoding the secondary data in a differential signal, the differential signal including a pair of complementary signals, and transmitting the differential signal on the I2C bus by transmitting one of the pair of complementary signals on the SDA of the I2C bus and a different one of the pair of complementary signals on the SCL of the I2C bus. The differential signal may be transmitted on the I2C bus when both the SDA and the SCL are at the high logic level. The SDA and the SCL may have voltage levels that are greater than a minimum voltage specified by the I2C bus protocols for a high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the differential signal is transmitted over the SDA and the SCL. The differential signal may be transmitted during a period of time when the I2C bus is idle.
- In another aspect, encoding the secondary data in the I2C signal includes encoding the secondary data in an FM signal, and transmitting the FM signal over one or more of the SDA of the I2C bus and the SCL of the I2C bus. The FM signal may have an amplitude that is less than a minimum hysteresis voltage level for Schmitt trigger inputs used by a receiver of an I2C compatible device. The minimum hysteresis voltage level may be defined in the I2C bus protocols.
- In another aspect, encoding the secondary data in the I2C signal includes inserting or refraining from inserting a short pulse into a signal transmitted on the SDA of the I2C bus or on the SCL of the I2C bus. For example, a short pulse may be inserted when a value of a bit of the secondary data to be transmitted has a first value and the short pulse may be omitted when the bit of the secondary data to be transmitted has a second value. In one example, the secondary data may be encoded in the I2C signal by inserting or refraining from inserting short pulses into a plurality of half cycles of a clock signal transmitted on the SCL. The short pulse may have a duration that is less than a minimum duration specified by the I2C bus protocols for a pulse of the clock signal. The short pulse may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored by an I2C receiver.
- In another aspect, encoding the secondary data in the I2C signal includes pulse-width modulating a clock signal transmitted on the SCL of the I2C bus. Each high period of the resultant pulse-width modulated clock signal has a duration that exceeds a minimum high period for an SCL clock specified by the I2C bus protocols and each low period of the pulse-width modulated clock signal has a duration that exceeds a minimum low period for an SCL clock specified by the I2C bus protocols.
- In another aspect, the primary data may be encoded in frames to be transmitted on the I2C bus. Encoding the secondary data in the I2C signal may include transmitting a stop condition followed by a start condition between frames of primary data when a bit of the secondary data to be transmitted has a first value, and transmitting a repeated start condition when the bit of the secondary data to be transmitted has a second value.
- In another aspect, the primary data is encoded in frames to be transmitted on the I2C bus. Encoding the secondary data in the I2C signal may include transmitting a repeated start condition between frames of primary data, where the repeated start condition has a first of two predefined durations when a bit of the secondary data to be transmitted has a first value, and transmitting a repeated start condition that has a second of two predefined durations when the bit of the secondary data to be transmitted has a second value.
- In an aspect of the disclosure, an apparatus configured to transmit data on an I2C bus includes an encoder having a processing circuit. The processing circuit may be configured to encode primary data in an I2C signal in accordance with I2C bus protocols, encode secondary data in the I2C signal to provide a multi-channel signal, and a transmitter configured to transmit the multi-channel signal on an I2C bus in accordance with the I2C bus protocols.
- In another aspect, the processing circuit of the encoder is configured to encode the secondary data by encoding the secondary data in a differential signal or an FM signal that is superimposed on the I2C signal.
- In another aspect, the processing circuit of the encoder may be configured to encode the secondary data by pulse-width modulating a clock signal transmitted on the SCL of the I2C bus, or by selectively adding short pulses to the SDA of the I2C bus or the SCL. The short pulses may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored by an I2C receiver.
- In another aspect, the processing circuit of the encoder may be configured to encode the secondary data by using bits of the secondary data to select type of start condition transmitted between frames of primary data transmitted on the I2C bus. The processing circuit of the encoder may be configured to encode the secondary data by using the bits of the secondary data to select duration of repeated start conditions transmitted between the frames of primary data.
- In an aspect of the disclosure, a method of data communications includes decoding primary data received from an I2C signal in accordance with I2C bus protocols, and decoding secondary data from the I2C signal. The secondary data is decoded using a protocol other than the I2C bus protocol. The I2C signal complies with the I2C bus protocols.
- In another aspect, decoding secondary data includes receiving a differential pair of signals from the SDA and the SCL of the I2C bus, where the SDA and the SCL carry different ones of the differential pair of signals, and decoding the secondary data from the differential pair of signals. The differential pair of signals may be received from the I2C bus when both the SDA and the SCL are at a high logic level. The SDA and the SCL may have voltage levels that are greater than a minimum voltage specified by the I2C bus protocols for the high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the differential pair of signals is received from the I2C bus. The differential pair of signals is received during a period of time when the I2C bus is idle.
- In another aspect, decoding the secondary data may include receiving an FM signal from at least one of the SDA or the SCL of the I2C bus, and decoding the secondary data from the FM signal. The FM signal may have an amplitude that is less than a minimum hysteresis voltage level for Schmitt trigger inputs in a receiver of an I2C compatible device as defined in the I2C bus protocols. The voltages of the SDA and the SCL may be greater than a minimum voltage specified by the I2C bus protocols for a high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the FM signal is being received.
- In another aspect, decoding secondary data includes determining presence or absence of short pulses in a signal received from the SDA of the I2C bus or the SCL of the I2C bus, and decoding the secondary data based on the presence or absence of the short pulses. Each of the short pulses may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored.
- In another aspect, decoding secondary data includes determining presence or absence of short pulses in a plurality of half cycles of a clock signal received from the SCL of the I2C bus, and decoding the secondary data based on the presence or absence of the short pulses. Each of the short pulses may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored.
- In another aspect, decoding secondary data includes decoding secondary data in a pulse-width modulated clock signal received from the SCL of the I2C bus. Each high period of the pulse-width modulated clock signal has a duration that exceeds a minimum high period for an SCL clock specified by the I2C bus protocols and each low period of the pulse-width modulated clock signal has a duration that exceeds a minimum low period for an SCL clock specified by the I2C bus protocols.
- In another aspect, decoding secondary data includes determining a first value for a bit of secondary data when a stop condition and a start condition is received between consecutive frames carrying the primary data on the SDA of the I2C bus, and determining a second value for the bit of secondary data when a repeated start condition is received between the consecutive frames.
- In another aspect, decoding secondary data includes determining a first value for a bit of secondary data when a repeated start condition received between consecutive frames carrying the primary data on the SDA of the I2C bus has a first duration, and determining a second value for the bit of secondary data when the repeated start condition has a second duration.
- In an aspect of the disclosure, an apparatus is configured to receive data from an I2C bus. The apparatus may include means for decoding primary data received from an I2C signal in accordance with I2C bus protocols, and means for decoding secondary data from the I2C signal. The secondary data is decoded using a protocol other than the I2C bus protocol. The I2C signal may comply with the I2C bus protocols.
-
FIG. 1 depicts an apparatus employing a data link between IC devices that selectively operates according to one of plurality of available standards. -
FIG. 2 is a block schematic drawing illustrating certain aspects of an apparatus connected to an I2C communications bus. -
FIG. 3 illustrates a configuration of I2C connected to a common I2C bus. -
FIG. 4 is a timing diagram that illustrates the relationship between SDA and SCL signal wires on a conventional I2C bus. -
FIG. 5 is a timing diagram that illustrates timing associated with multiple frames transmitted on an I2C bus. -
FIG. 6 is a timing diagram illustrating transmission of secondary data over an I2C bus by varying an aspect of a terminating condition. -
FIG. 7 is a timing diagram illustrating transmission of secondary data over an I2C bus by inserting short pulses on a clock signal. -
FIG. 8 is a timing diagram illustrating transmission of secondary data over an I2C bus by pulse width modulating a clock signal. -
FIG. 9 is a timing diagram illustrating transmission of secondary data over an I2C bus by adding a low-voltage differential signal to the SCL and SDA signals. -
FIG. 10 is a timing diagram illustrating transmission of secondary data over an I2C bus by superimposing an FM signal on the SCL signal or the SDA signal. -
FIG. 11 is a block schematic diagram of an I2C device adapted to send extra in-band information on an I2C bus. -
FIG. 12 is a flow chart of a first method for transmitting additional data on an I2C bus according to one or more aspects disclosed herein. -
FIG. 13 is a diagram illustrating an example of a hardware implementation for a receiving apparatus that communicates over an I2C bus according to one or more aspects disclosed herein. -
FIG. 14 is a flow chart of a first method for receiving additional data transmitted on an I2C bus according to one or more aspects disclosed herein. -
FIG. 15 is a diagram illustrating an example of a hardware implementation for a transmitting apparatus that communicates over an I2C bus according to one or more aspects disclosed herein. - Various aspects are now described with reference to the drawings. In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of one or more aspects. It may be evident, however, that such aspect(s) may be practiced without these specific details.
- As used in this application, the terms “component,” “module,” “system” and the like are intended to include a computer-related entity, such as, but not limited to hardware, firmware, a combination of hardware and software, software, or software in execution. For example, a component may be, but is not limited to being, a process running on a processor, a processor, an object, an executable, a thread of execution, a program and/or a computer. By way of illustration, both an application running on a computing device and the computing device can be a component. One or more components can reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers. In addition, these components can execute from various computer readable media having various data structures stored thereon. The components may communicate by way of local and/or remote processes such as in accordance with a signal having one or more data packets, such as data from one component interacting with another component in a local system, distributed system, and/or across a network such as the Internet with other systems by way of the signal.
- Moreover, the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise, or clear from the context, the phrase “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, the phrase “X employs A or B” is satisfied by any of the following instances: X employs A; X employs B; or X employs both A and B. In addition, the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from the context to be directed to a singular form.
- Certain aspects of the invention may be applicable to communications links deployed between electronic devices that are subcomponents of a mobile apparatus such as a telephone, a mobile computing device, an appliance, automobile electronics, avionics systems, etc. Examples of a mobile apparatus include a cellular phone, a smart phone, a session initiation protocol (SIP) phone, a laptop, a notebook, a netbook, a smartbook, a personal digital assistant (PDA), a satellite radio, a global positioning system (GPS) device, a multimedia device, a video device, a digital audio player (e.g., MP3 player), a camera, a game console, a wearable computing device (e.g., a smartwatch, a health or fitness tracker, etc.), an appliance, a sensor, a vending machine, or any other similar functioning device.
FIG. 1 depicts an example of anapparatus 100 that may employ a communication link between IC devices. Theapparatus 100 may include a wireless communication device that communicates through an RF transceiver with a radio access network (RAN), a core access network, the Internet and/or another network. Theapparatus 100 may include acommunications transceiver 106 operably coupled to aprocessing circuit 102. Theprocessing circuit 102 may include one or more IC devices, such as an application-specific IC (ASIC) 108. TheASIC 108 may include one or more processing devices, logic circuits, and so on. Theprocessing circuit 102 may include and/or be coupled to processor readable storage such as amemory 112 that may maintain instructions and data that may be executed by processingcircuit 102. Theprocessing circuit 102 may be controlled by one or more of an operating system and an application programming interface (API) 110 layer that supports and enables execution of software modules residing in storage media, such as thememory device 112 of the wireless device. Thememory device 112 may include read-only memory (ROM) or random-access memory (RAM), electrically erasable programmable ROM (EEPROM), flash cards, or any memory device that can be used in processing systems and computing platforms. Theprocessing circuit 102 may include or access alocal database 114 that can maintain operational parameters and other information used to configure and operateapparatus 100. Thelocal database 114 may be implemented using one or more of a database module, flash memory, magnetic media, EEPROM, optical media, tape, soft or hard disk, or the like. The processing circuit may also be operably coupled to external devices such as anantenna 122, adisplay 124, operator controls, such as abutton 128 and akeypad 126, among other components. -
FIG. 2 is a block schematic drawing illustrating certain aspects of anapparatus 200 that includes 202, 220 and 222 a-222 n connected to amultiple devices communications bus 230. Theapparatus 200 may be embodied in a mobile apparatus. In one example, theapparatus 200 includes 202, 220 and 222 a-222 n that communicate using anmultiple devices I2C bus 230 and at least oneimaging device 202 may be configured to operate as a slave device on theI2C bus 230. Theimaging device 202 may be adapted to provide asensor control function 204 that manages an image sensor, for example. In addition, theimaging device 202 may include configuration registers orother storage 206,control logic 212, atransceiver 210 and line drivers/ 214 a and 214 b. Thereceivers control logic 212 may include a processing circuit such as a state machine, sequencer, signal processor or general-purpose processor. Thetransceiver 210 may include areceiver 210 a, atransmitter 210 c andcommon circuits 210 b, including timing, logic and storage circuits and/or devices. In one example, thetransmitter 210 c encodes and transmits data based on timing provided by aclock generation circuit 208. - Two or more of the
202, 220 and/or 222 a-222 n may be adapted according to certain aspects and features disclosed herein to extend the bandwidth and other capabilities provided by a conventional I2C bus. For example, theI2C devices 202, 220 and/or 222 a-222 n may be adapted to support a higher bit rate than can ordinarily be achieved when conventional I2C protocols are used to manage communications on theI2C devices I2C bus 230. The I2C protocols may conform to de facto I2C standards and may include specifications defining electrical and timing aspects of I2C signals, in addition to data formats and I2C bus control and timing. -
FIG. 3 illustrates a configuration of 304, 306, 308, 310, 312, 314 and 316 connected to anI2C devices I2C bus 302, whereby three 304, 314 and 316 are adapted or configured to obtain higher data transfer rates over thedevices I2C bus 302. The adapted 304, 314 and 316 may coexist with conventionally configureddevices 306, 308, 310 and 312, and the adaptedI2C devices 304, 314 and 316 may communicate using conventional I2C protocols, as desired or needed. For the purposes of this description, communications using conventional I2C protocols may be considered to be a primary communication channel on thedevices I2C bus 302, while the enhanced communications capabilities disclosed herein may be provided as one or more secondary or virtual communication channels that coexist on the I2C bus with the primary communication channel. - A secondary communication channel may be available when an
enhanced I2C device 304 controls theI2C bus 302 as a bus master. In the depicted example, oneI2C device 304 is currently serving as abus master 304, and thebus master 304 may provide one or more secondary communication channels that can be monitored by 314 and 316 that have been adapted according to certain aspects disclosed herein. Additional data (secondary data) can be transferred over theslave I2C devices I2C bus 302 in a secondary channel without using an external bridge device and without compromising the functionality of 306, 308, 310 and 312 on thelegacy I2C devices I2C bus 302. -
FIG. 4 includes timing diagrams 400 and 420 that illustrate the relationship between SDA and 402, 404 on a conventional I2C bus. The first timing diagram 400 illustrates the timing relationship between theSCL signal wires SDA signal wire 402 and theSCL signal wire 404 while data is being transferred on the conventionally configured I2C bus. TheSCL signal wire 404 provides a series of clockingpulses 412 that can be used to sample data in theSDA signal wire 402. When theSCL signal wire 404 is in a logic high state during data transmission, data on theSDA signal wire 402 is required to be stable and valid, such that the state of theSDA signal wire 402 is not permitted to change when theSCL signal wire 404 is in a high state. - Specifications for conventional I2C protocol implementations (herein referred to as “I2C Specifications”) define a minimum duration for the high period (tHIGH) 410 of each
pulse 412 on theSCL signal wire 404, where thepulse 412 corresponds to the time in which theSCL signal wire 404 is in a High logic state. The I2C Specifications also define minimum durations for a setup time (tSU) 406 and a hold time (tHold) 408, during which the signaling state of theSDA signal wire 402 must be stable before and after thepulse 412 during which theSDA signal wire 402 is in the high logic state. Thesetup time 406 defines a maximum time period after atransition 416 between signaling states on theSDA signal wire 404 until the arrival of the rising edge of apulse 412 on theSCL signal wire 404. Thehold time 408 defines a minimum time period after the falling edge of thepulse 412 on theSCL signal wire 404 until anext transition 418 between signaling states on theSDA signal wire 404. The I2C Specifications also define a minimum duration for a low period (tLOW) 414 for theSCL signal wire 404. The data on theSDA signal wire 402 is typically captured for the period of time (tHIGH) 410 when theSCL signal wire 404 is in the High logic state after the leading edge of thepulse 412. - The second timing diagram 420 of
FIG. 4 illustrates signaling states on theSDA signal wire 402 and theSCL signal wire 404 between data transmissions on a conventional I2C bus. The I2C protocol provides for transmission of 8-bit data (bytes) and 7-bit addresses. Data transmissions are acknowledged by the receiver that drives theSDA signal wire 402 for one clock period, such that a low signaling state represents an acknowledgement (ACK) indicating successful reception and a high signaling state represents a negative acknowledgement (NACK) indicating a failure to receive or an error in reception. - A
start condition 422 is defined to permit the current bus master to signal that data is to be transmitted. Thestart condition 422 occurs when theSDA signal wire 402 transitions from high to low while theSCL signal wire 404 is high. The I2C bus master initially transmits thestart condition 422, which may be also be referred to as a start bit, followed by a 7-bit address of an I2C slave device with which it wishes to exchange data. The address is followed by a single bit that indicates whether a read or write operation is to occur. The addressed I2C slave device, if available, responds with an ACK bit. The master and slave I2C devices then exchange bytes of information in frames, in which the bytes are serialized such that the most significant bit (MSB) is transmitted first. The transmission of the byte is completed when astop condition 424 is transmitted by the I2C master device. Thestop condition 424 occurs when theSDA signal wire 402 transitions from low to high while theSCL signal wire 404 is high. The I2C Specifications require that all transitions of theSDA signal wire 402 occur when theSCL signal wire 404 is low, and exceptions may be treated as astart condition 422 or astop condition 424. -
FIG. 5 includes timing diagrams 500 and 520 that illustrate timing associated with multiple data transmissions on an I2C bus. In a first basic example, the period oftime 514 that elapses between astop condition 508 and aconsecutive start condition 510 may be prolonged, causing the conventional I2C bus to be idle during this period oftime 514. In operation, a busy period 512 commences when the I2C bus master transmits afirst start condition 506, followed by data. The busy period 512 ends when the I2C bus master transmits astop condition 508 and anidle period 514 ensues. Theidle period 514 ends with transmission of asecond start condition 510. - With reference also to the timing diagram 520, in some instances, the
idle periods 514 between successive data transmissions on the I2C bus may be reduced in number or eliminated by transmitting a repeated start condition (Sr) 528 rather than a stop condition. The repeatedstart condition 528 terminates the preceding data transmission and simultaneously indicates the commencement of a next data transmission. The state transition on theSDA signal wire 522 is identical for a start condition 526 occurring after anidle period 530 and the repeatedstart condition 528. Specifically, theSDA signal wire 522 transitions from high to low while theSCL signal wire 524 is high. When a repeatedstart condition 528 is used between data transmissions, a first busy period 532 is immediately followed by a second busy period 534. -
FIGS. 6-10 provide examples in accordance with certain aspects disclosed herein showing the exploitation of specifications governing the operation of an I2C bus and protocols to enable additional in-band data to be transmitted in-band on the I2C bus. - With reference now to the timing diagrams 600, 620 and 640 of
FIG. 6 and the timing illustrated inFIG. 5 , additional in-band data may be transmitted in the combination ofstart conditions 526, 528 and/or the duration of the start conditions 526 and/or 528 used in connection with the transmission of a sequence of bytes. For reference,FIG. 6 includes a first timing diagram 600 showing one conventional transmission of adata stream 602 with combinations of start and stop 604, 606 separating consecutive I2C frames, and another conventional transmission of aconditions data stream 610 with repeated 612, 614 separating consecutive I2C frames.start conditions - According to one aspect, and as shown in the second timing diagram 620 of
FIG. 6 , an I2C bus master may be adapted to provide a secondary channel over an I2C bus by encoding data in the duration of repeated 622, 624, 626 and 628. In the example depicted, binary “1” is transmitted as a longer repeatedstart conditions start condition 624, while binary “0” is transmitted as a shorter repeated 622, 626, 628. The duration of the repeatedstart condition 622, 624, 626, 628 may be modulated by controlling the period of the hold time (tHD,STA) 426 between a falling edge of thestart conditions SDA signal wire 402 and the falling edge of theSCL signal wire 404 in a start condition 422 (seeFIG. 4 ). Data to be encoded may be used to select the duration of thehold time 426 used on each 622, 624, 626 and 628 selected from two or more durations that exceed theoccasion minimum hold time 426 defined in the I2C Specifications. The I2C Specifications define minimum hold times of 4 μs for standard-mode operation, 0.6 μs for fast-mode operation, and 0.26 μs for fast-mode plus operation. A receiver in an I2C slave device may be configured or adapted to detect variations in the period of the hold time (tHD,STA) 426 of terminating conditions and, in at least some instances, differences in the magnitude of such variations. Thehold time 426 may be varied forstart conditions 510 or 526 occurring after an 514 or 530 or in a repeated start condition 528 (seeidle period FIG. 5 ). - According to one aspect, and as shown in the third timing diagram 640 of
FIG. 6 , an I2C bus master may be adapted to provide a secondary channel on an I2C bus by encoding data in the type of terminating 642, 644, 646 and 648 transmitted after an I2C frame. In the example depicted, binary “1” is transmitted in a terminatingcondition condition 644 that includes a stop condition and a start condition, while binary “0” is transmitted as a repeated 642, 646, 648.start condition - With reference now to the timing diagram 700 of
FIG. 7 , additional in-band data may be transmitted in 710, 712 or in anshort pulses absence 714 of a short pulse on the SDA signal 702 or theSCL signal 704. The I2C Specifications define a pulse width (tSP) of a spike that must be suppressed by an input filter of a conventional I2C receiver in certain modes of operation. In one example, the tSP pulse width may be specified as having a maximum duration of 50 ns. Accordingly, any pulses that are shorter than 50 ns are filtered and ignored by conventional I2C receivers. An I2C transmitter may be adapted or configured to provide a virtual secondary channel over an I2C bus by encoding data in short pulses. In the simple example depicted, two 710 and 712 having a duration (tSEC) 716 may represent a binary “1,” while a binary “0” may be determined when a pulse is not detected. In this example, two bits may be transmitted on the virtual secondary channel in one-bit interval of the I2C protocol. The pulses may be transmitted on SDA signal 702 orpulses SCL signal 704, provided the pulse has a duration tSEC<tSP, where tSP is specified for a current mode of operation of the I2C bus. - In one example, additional
710, 712 may be added in the period ofshort pulses time 708 when theSCL signal 704 is in the High logic state and in the period oftime 718 when theSCL signal 704 is in the Low logic state, respectively. In other examples, a short 710 or 712 may be added when theadditional pulse SCL signal 704 is in one of the two periods of 708 or 718. That is, shorttime 710 or 712 may be inserted only during theadditional pulses low period 718, with no pulses being inserted during thehigh period 708, or vice versa. In some examples, more than one additional pulse may be added in one or more of the periods of 708, 718. Short pulses may be additionally or alternatively be added to thetime SDA signal 702 in the manner described for 710, 712 added to theshort pulses SCL signal 704. - With reference again to
FIG. 4 , 410, 414 for the High and Low logic states of theminimum durations SDA signal wire 402 andSCL signal wire 404 are defined in the I2C Specifications for certain modes of operation. In the example of Fast-mode operation, the duration (tHIGH) 410 of each logic High period must be greater than 0.6 μs, and the duration (tLOW) 414 of each logic Low period must be greater than 1.3 μs, with no maximum values specified. Accordingly, I2C devices may be adapted to modulate the width (durations 410, 414) of the logic states of theSCL signal wire 404, provided the minimum specified 410, 414 for the High and Low logic states of thedurations SCL signal wire 404 are obeyed. -
FIG. 8 is a timing diagram 800 illustrating the transmission of additional in-band data by using pulse-width modulation (PWM) to provide a secondary channel on an I2C bus. When PWM is used, the duration of each 816, 818 on theclock pulse SCL signal 804 is determined by the value of at least one bit ofsecondary data bits 824 to be encoded in the secondary channel. An I2C bus master device that is adapted to pulse-width modulate the SCL clock signal may encode primary data on an I2C signal transmitted on theSDA signal 802 in accordance with an operating mode defined in the I2C Specifications. The data may be encoded in transmission intervals defined by a conventionalSCL clock signal 804. This combination of signaling may provide a primary communication channel on the I2C bus. - The I2C master device may also encode secondary data on the SCL signal 804 using PWM to obtain a modulated
SCL signal 814. In the simple example depicted, the I2C master device may useshort pulses 816 to encodesecondary data bits 824 with a value ‘0’ andlonger pulses 818 to encodesecondary data bits 824 with a value ‘1’. The pulse width of each type of 816 and 818 may be maintained within predefined limits on duration. As can be appreciated, the use of PWM can at least double the bandwidth of the I2C bus between devices that support PWM. Each transmission of a byte transmitted on thepulse SDA signal 802 provides 9 clock pulses that may be encoded using PWM. In one example, one data byte and a control bit may be sent on the PWM encoded SCL signal 814 while one data byte is being transmitted on theSDA signal 802. In some instances, a block of 9 bytes can be transmitted on the PWM encoded SCL signal 814 when a block of 8 bytes is transmitted on theSDA signal 802. Other PWM schemes may be used and more than one bit may be encoded provided receiving I2C devices can be adapted or configured to distinguish differences in timing of theshort pulses 816, thelonger pulses 818 and even longer pulses. - I2C devices that are adapted to transmit and/or receive a PWM encoded SCL signal 814 are typically configured to recognize and/or distinguish between a
start condition 806, a repeatedstart condition 808 and astop condition 810 in order to synchronize PWM encoders and decoders. The 804, 814 may be in a High logic state for prolonged periods of time preceding aSCL signal start condition 806 or astop condition 810. When a repeatedstart condition 808 is transmitted, thepulse 820 of the repeatedstart condition 808 may be available for encoding data using PWM when, for example, thepulse 820 of a repeatedstart condition 808 has the same duration asother pulses 812 in thebase SCL signal 804. In some examples, the repeated start condition may use apulse 820 that has a duration that is different from theother pulses 812 in thebase SCL signal 804, including when secondary data is encoded in the duration of modulated tHD;STA timing as discussed in relation toFIG. 6 . In these examples, an encoder of an adapted I2C master may refrain from encoding data on thepulse 820 of the repeatedstart condition 808. In other examples, an encoder of an adapted I2C master may refrain from encoding data on the 820, 822 for all transmissions, in order to simplify logic design, provide an additional channel for encoding data in theninth clock pulse start condition 806, repeatedstart condition 808 or stopcondition 810, or for other reasons. -
FIG. 9 is a timing diagram 900 illustrating the transmission of additional in-band data using differential signaling to provide a secondary channel on the I2C bus. The differential signaling may be accomplished by transmitting a pair of differential signals (D+, D−) 910, 912 by superposition of the complementary signals in the pair of differential signals (D+, D−) 910, 912 on theSDA signal wire 902. In the depicted example, theSDA signal wire 902 carries theD+ signal 910 and theSCL signal wire 904 carries the D− signal 912. The pair of differential signals (D+, D−) 910, 912 is transmitted during at least a portion of theidle time 914 between astop condition 906 and a start condition 908. The differential signals (D+, D−) 910, 912 are typically low-voltage digital signals that have amplitudes selected to ensure that the high logic state of the SDA and 902, 904 can be modulated within the tolerances defined in the I2C Specifications for signaling states of the SDA andSCL signal wires 902, 904. In one example, secondary data may be encoded in the differential signals (D+, D−) 910, 912 using non-return-to-zero (NRZ) encoding that can be decoded at the receiver that has a phase-locked-loop (PLL) to synchronize a receive clock to the clock used for encoding the secondary data. In another example, secondary data may be encoded in the differential signals (D+, D−) 910, 912 using PWM. Other encoding schemes may be used as appropriate for the type of secondary data and clock frequency used to encode the secondary data, or for other reasons.SCL signal wires - As indicated generally at 920, the I2C Specifications define a nominal high input voltage level (VIH) 930 at 70% of a device
supply voltage VDD 924, relative to a0V reference 922. A noise tolerance level (VnH) is required for a 902, 904 in the High logic state, and thesignal maximum voltage level 926 for an 902, 904 is defined as VDD+0.5V. Consequently, an input signal may range between ainput signal minimum voltage level 928 of 0.9×VDD and a maximum level of VDD+0.5V. In the example depicted, input signals 902, 904 may have a high logic state set or configured atVDD 924, with a superimposeddifferential signal 932 having a peak-to-peak voltage level that is less than 0.2V. - At the receiver, differential receivers may be configured to determine the difference in voltage between the
SDA signal wire 902 and theSCL signal wire 904 during theidle period 914. The I2C logichigh voltages 924 on both SDA and 902 and 904 cancel and the differential receivers may provide an output representative of theSCL signal wires 910, 912.differential signal -
FIG. 10 is a diagram 1000 illustrating transmission of additional in-band data using frequency modulation (FM) to provide a secondary channel on the I2C bus. Data may be encoded using FM to vary the instantaneous frequency of a carrier wave and thereby obtain anFM signal 1002 having a substantially consistent peak-to-peak voltage level 1014. TheFM signal 1002 may then be overlaid or otherwise superimposed on anI2C signal 1004, which may be the SDA signal and/or the SCL signal. As shown in thedetail view 1012, the peak-to-peak voltage 1014 may be selected to be lower than the hysteresis voltage level specified for receivers by the I2C Specifications such that the I2C signaling in the combinedsignal 1006 can be received and decoded by a conventional I2C slave. The conventional I2C slave may reject, filter or ignore theFM signal 1002 in the combinedsignal 1006. TheFM signal 1002 in the combinedsignal 1006 may be extracted and demodulated or otherwise decoded by an I2C slave adapted according to certain aspects disclosed herein. The I2C Specifications define a minimum hysteresis voltage level (Vhys) of 0.05×VDD for Schmitt trigger inputs in the receiver of an I2C device and the peak-to-peak voltage 1014 may be selected to be lower than the specified Vhys. - The
FM signal 1002 may be transmitted on one or both of the SDA and SCL signals. When transmitted on both signal wires of the I2C bus, a timing shift may be provided between versions of theFM signal 1002 transmitted on the two wires to permit easier separation of theFM signal 1002 from the I2Cdigital signal 1004. Transmission of theFM signal 1002 on both wires of the I2C bus may enable certain noise cancelation techniques to be applied. -
FIG. 11 is a block diagram illustrating an example of atransmitter 1100 and areceiver 1140 coupled to anI2C bus 1124 and configured or adapted according to certain aspects disclosed herein. Thetransmitter 1100 and/orreceiver 1140 may be adapted or configured to enabledata 1110 to be transmitted and/or received according to I2C standards-defined. Thetransmitter 1100 and/orreceiver 1140 may be further adapted or configured to enabledata 1116 to be transmitted and/or received using secondary channel signaling according to certain aspects disclosed herein. For the purposes of this description, data encoded and transmitted in standards-defined protocols may be referred to as “Primary Data” 1110, and it may be considered thatsuch Primary Data 1110 is transmitted over a primary channel provided by the standards-definedI2C bus 1124. For the purposes of this description, data encoded and transmitted in secondary channel signaling may be referred to as “Secondary Data,” 1116 and it may be considered that theSecondary Data 1116 is transmitted over a secondary, or virtual channel on theI2C bus 1124. - For I2C operations, the
transmitter 1100 may include aprimary channel serializer 1102 that serializes thePrimary Data 1110 for transmission on theSDA signal wire 1122 in accordance with the timing of the clock provided on theSCL signal wire 1120. Theprimary channel serializer 1102 is typically clocked by the transmitclock 1126 to produce I2Cserial data 1112 for transmission on theSDA signal wire 1122. - The
transmitter 1100 may also be configured or adapted to encode theSecondary Data 1116 in secondary channel signaling transmitted on theI2C bus 1124. In some examples, theSecondary Data 1116 may be serialized by asecondary channel serializer 1108 in order to generate a stream of bits (modulation data) 1118 that can be encoded in the secondary channel signaling. Thesecondary channel serializer 1108 may be clocked by the transmitclock 1126 and/or by amodulation clock 1128 generated in accordance with a modulation scheme used by the encoder/modulator 1104 to encodeModulation Data 1118 for generating secondary channel signaling. The encoder/modulator 1104 may provide themodulation clock 1128 when secondary channel communications with a slave device has been initiated or negotiated, and themodulation clock 1128 may otherwise be suppressed. - The
modulation clock 1128 may be derived or otherwise based on theI2C transmitter clock 1126. For example, theSecondary Data 1116 may be encoded by inserting 710, 712 into the I2C transmitter clock 1126 (see alsoshort pulses FIG. 7 ) or by pulse width modulating the I2C transmitter clock 1126 (see alsoFIG. 8 ), in which case thesecondary channel serializer 1108 may receive a phase-shifted, frequency-doubled and/or frequency-divided version of thetransmitter clock 1126 to clock a serial stream of bits asmodulation data 1118. Amodulation clock 1128 may be based on theI2C transmitter clock 1126 in that themodulation clock 1128 may be suppressed when theI2C transmitter clock 1126 is active. For example, theSecondary Data 1116 may be encoded in 910, 912 transmitted duringdifferential signals idle periods 914 during which no clock signal is transmitted on the SCL signal 904 (seeFIG. 9 ), and amodulation clock 1128 is provided only when the 910, 912 are transmitted.differential signals - A
modulation clock 1128 may be provided based on I2C frame timing on theI2C bus 1124. For example, theSecondary Data 1116 may be encoded in the configuration and/or selection ofstart condition 506, a repeatedstart condition 508 and/or a stop condition 510 (seeFIGS. 5 and 6 ) between bytes transmitted on theSDA signal wire 1122. In the latter example, themodulation clock 1128 may be provided to extract a predefined number of bits based on the occurrence of one or more start or stop 506, 508, 510.conditions - In some instances, the clock rate of the
modulation clock 1128 may be independent of the clock rate of theI2C transmitter clock 1126. For example, the data rate of themodulation clock 1128 may be independently determined when FM is used (seeFIG. 10 , for example) or when digital 910, 912 are superimposed on the I2Cdifferential signals Serial Data signal 1112 andI2C transmitter clock 1126. In some instances, clock information may be encoded in the digital 910, 912, or the digitaldifferential signals 910, 912 may be transmitted at a predefined clock rate.differential signals - The encoder/
modulator 1104 may include circuits and modules that can be enabled or disabled based on whether a secondary channel is available over theI2C bus 1124. These circuits may include gates, delays and combinational logic to extend a clock pulse when PWM is used, for example, or when the timing ofstart conditions 506, repeatedstart conditions 508 and/or stopconditions 510 is modified to encodeSecondary data 1116. The encoder/modulator 1104 may include circuits that adjust the voltage level of one or more logic level to permit modulation by a digital 910, 912 or by andifferential signal FM signal 1002. - The encoder/
modulator 1104outputs transmission signals 1114 that are based on the I2Cserial data 1112 and thetransmitter clock 1126. The transmission signals 1114 may be relayed versions of the I2Cserial data 1112 and thetransmitter clock 1126 when a secondary channel is not required or desired, or when a receiving device is unable to receive the secondary channel. When a secondary channel is to be provided, one or both of the I2Cserial data 1112 and thetransmitter clock 1126 may be modulated using one or more modulation techniques. In some instances, modulation circuits of the encoder/modulator 1104 may be configured to control the operation of line driving circuits, such as the open-drain drivers 1106. The line driving circuits may be implemented using push-pull drivers or some other configuration of analog and digital circuits appropriate for the modulation scheme or schemes adopted. In one example, control signals and/orreference voltage levels 1130 may be provided by the encoder/modulator 1104 to control and/or modulate the voltage level of signals transmitted on the SCL and/or 1120, 1122.SDA signal wires - At the
receiver 1140, a set ofline receivers 1142 may include multiple types of receiving devices. The receiving devices may include differential receivers that can detect voltage modulations of the signals received from theSCL signal wire 1120 and/or theSDA signal wire 1122. In one example, single ended receivers may ignore modulations and respond to signals received from the SCL signal wire and theSDA signal wire 1122 and that are compliant or compatible with the I2C Specifications. At the same time, a differential receiver may compare the voltage levels of theSCL signal wire 1120 and theSDA signal wire 1122 to extract digitaldifferential signals 910, 912 (seeFIG. 9 ). In another example, a differential receiver compares the voltage level of theSCL signal wire 1120 and/or theSDA signal wire 1122 to extract an analog FM encoded signal 1002 (seeFIG. 10 ). Accordingly, the set ofline receivers 1142 may provide multiple receivesignals 1150 to a decoder/demodulator 1144. - The decoder/
demodulator 1144 may be configured to extract I2Cserial data 1152 from theSDA signal wire 1122 and to provide an I2C receive clock extracted from theSCL signal wire 1120. The decoder/demodulator 1144 may produce multiple receiveclocks 1160, including the I2C receive clock and a demodulation clock that can be used to control deserialization of thedata 1156 demodulated or decoded from secondary channel signaling. Deserialization may be performed by a primary channel deserializer 1146 to provideoutput Primary Data 1154 and a secondary channel deserializer 1148 to provide output Secondary Data 1158. - The decoder/
demodulator 1144 may detect the presence of a secondary channel signal that modulates or is superimposed upon the I2C compliant signals transmitted on theSCL signal wire 1120 and/or theSDA signal wire 1122. The receivingcircuits 1142 may provide separate I2C compliant signals and modulation signals when the form of modulation used for secondary channel signaling includes some type of modulation of the voltage level of the digital SCL and/orSDA signal wires 1120 and/or 1122. The decoder/demodulator 1144 may include circuits for detecting timing differences in the I2C signals and/or to detect presence or absence of additional short-duration pulses inserted on the I2C signals. Timing differences may be detected using counters, timers, one-shot delays, etc. Detection of timing differences may be determined in every clock cycle and/or between consecutive bytes transmitted on the I2C primary channel. -
FIG. 12 includes aflowchart 1200 illustrating a method for data communications on an I2C bus. Various steps of the method may be performed by a transmitting device that includes some combination of theI2C slave device 202 illustrated inFIG. 2 , the 304, 314 or 316 illustrated indevices FIG. 3 , and/or other devices described herein. - At
step 1202, the device may encode primary data in an I2C signal in accordance with I2C bus protocols. - At
step 1204, the device may encode secondary data in the I2C signal to obtain a multi-channel signal. - At
step 1206, the device may transmit the multi-channel signal on an I2C bus. The multi-channel signal may be compatible with the I2C bus protocols. - In one example, the secondary data may be encoded in the I2C signal by encoding the secondary data in a differential signal, where the differential signal includes a pair of complementary signals, and by transmitting the differential signal on the I2C bus by transmitting one of the pair of complementary signals on the SDA of the I2C bus and a different one of the pair of complementary signals on the SCL of the I2C bus. The differential signal may be transmitted on the I2C bus when both the SDA and the SCL are at the high logic level. The SDA and the SCL may have voltage levels that are greater than a minimum voltage specified by the I2C bus protocols for a high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the differential signal is transmitted over the SDA and the SCL. The differential signal may be transmitted during a period of time when the I2C bus is idle.
- In another example, the secondary data may be encoded in the I2C signal by encoding the secondary data in an FM signal, and transmitting the FM signal over one or more of the SDA and the SCL of the I2C bus. The FM signal may have an amplitude that is less than a minimum hysteresis voltage level for Schmitt trigger inputs used by a receiver of an I2C compatible device. The minimum hysteresis voltage level is defined in the I2C bus protocols.
- In another example, the secondary data may be encoded in the I2C signal by inserting or refraining from inserting a short pulse into a signal transmitted on the SDA or the SCL of the I2C bus. The short pulse may be inserted when a value of a bit of the secondary data to be transmitted has a first value and no short pulse is inserted when the bit of the secondary data to be transmitted has a second value. For example, encoding the secondary data in the I2C signal may include inserting or refraining from inserting short pulses into a plurality of half cycles of a clock signal transmitted on the SCL. The short pulse may have a duration that is less than a minimum duration specified by the I2C bus protocols for a pulse of the clock signal. The short pulse may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored by an I2C receiver.
- In another example, the secondary data may be encoded in the I2C signal by pulse-width modulating a clock signal transmitted on the SCL of the I2C bus. Each high period of the resultant pulse-width modulated clock signal has a duration that exceeds a minimum high period for an SCL clock specified by the I2C bus protocols and each low period of the pulse-width modulated clock signal has a duration that exceeds a minimum low period for an SCL clock specified by the I2C bus protocols.
- In another example, the secondary data may be encoded in the I2C signal by transmitting a stop condition followed by a start condition between a pair of consecutive frames that encode primary data, when a bit of the secondary data to be transmitted has a first value, and transmitting a repeated start condition between the pair of consecutive frames when the bit of the secondary data to be transmitted has a second value.
- In another example, the secondary data may be encoded in the I2C signal by transmitting a repeated start condition between a pair of consecutive frames, where the repeated start condition has a first of two predefined durations when a bit of the secondary data to be transmitted has a first value, and transmitting a repeated start condition between the pair of consecutive frames with a second of two predefined durations when the bit of the secondary data to be transmitted has a second value.
-
FIG. 13 is a diagram illustrating a simplified example of a hardware implementation for anapparatus 1300 employing aprocessing circuit 1302. The processing circuit typically has aprocessor 1316 that may include one or more of a microprocessor, microcontroller, digital signal processor, a sequencer and a state machine. Theprocessing circuit 1302 may be implemented with a bus architecture, represented generally by thebus 1320. Thebus 1320 may include any number of interconnecting buses and bridges depending on the specific application of theprocessing circuit 1302 and the overall design constraints. Thebus 1320 links together various circuits including one or more processors and/or hardware modules, represented by theprocessor 1316, the modules or 1304, 1306 and 1308,circuits line interface circuits 1312 configurable to communicate over anI2C bus 1314 that includes a plurality of connectors or wires, and the computer-readable storage medium 1318. Thebus 1320 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, will not be described any further. - The
processor 1316 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1318. The software, when executed by theprocessor 1316, causes theprocessing circuit 1302 to perform the various functions described supra for any particular apparatus. The computer-readable storage medium 1318 may also be used for storing data that is manipulated by theprocessor 1316 when executing software, including data decoded from symbols transmitted over theI2C bus 1314. Theprocessing circuit 1302 further includes at least one of the 1304, 1306 and 1308. Themodules 1304, 1306 and 1308 may be software modules running in themodules processor 1316, resident/stored in the computer-readable storage medium 1318, one or more hardware modules coupled to theprocessor 1316, or some combination thereof. The 1304, 1306 and 1308 may include microcontroller instructions, state machine configuration parameters, or some combination thereof.modules - In one configuration, the
apparatus 1300 for wireless communication includes a module and/or circuit 1304 that is configured to encode primary data in an I2C signal in accordance with I2C bus protocols, a module and/orcircuit 1306 that is configured to encode secondary data in the I2C signal to provide a multi-channel signal, and a module and/orcircuit 1308 that is configured to transmit the multi-channel signal on anI2C bus 1314 in accordance with the I2C bus protocols. -
FIG. 14 includes aflowchart 1400 illustrating a method for data communications on an I2C bus. Various steps of the method may be performed by a receiving device that includes some combination of theI2C slave device 202 illustrated inFIG. 2 , the 304, 314 or 316 illustrated indevices FIG. 3 , and/or other devices described herein. Atstep 1402, the device may decode primary data received from an I2C signal in accordance with I2C bus protocols. - At
step 1404, the device may decode secondary data from the I2C signal. The secondary data may be decoded using a protocol other than the I2C bus protocol. The I2C signal complies with the I2C bus protocols. - In one example, decoding secondary data includes receiving a differential pair of signals from the SDA and the SCL of the I2C bus, where the SDA and the SCL carry different ones of the differential pair of signals, and decoding the secondary data from the differential pair of signals. The differential pair of signals may be received from the I2C bus when both the SDA and the SCL are at the high logic level. The SDA and the SCL may have voltage levels that are greater than a minimum voltage specified by the I2C bus protocols for a high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the differential pair of signals is received from the I2C bus. The differential pair of signals may be received during a period of time when the I2C bus is idle.
- In another example, decoding the secondary data includes receiving an FM signal at least one of the SDA and SCL of the I2C bus, and decoding the secondary data from the FM signal. The FM signal may have an amplitude that is less than a minimum hysteresis voltage level for Schmitt trigger inputs in a receiver of an I2C compatible device as defined in the I2C bus protocols. The voltages of the SDA and the SCL may be greater than a minimum voltage specified by the I2C bus protocols for a high logic level and less than a maximum voltage specified by the I2C bus protocols for the high logic level while the FM signal is being received.
- In another example, decoding the secondary data includes determining presence or absence of short pulses in a signal received from SDA and the SCL of the I2C bus, and decoding the secondary data based on the presence or absence of the short pulses. Each of the short pulses may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored.
- In another example, decoding the secondary data includes determining presence or absence of short pulses in a plurality of half cycles of a clock signal received from the SCL of the I2C bus, and decoding the secondary data based on the presence or absence of the short pulses. Each of the short pulses may have a duration that is less than a maximum duration specified by the I2C bus protocols for a spike that is to be ignored.
- In another example, decoding the secondary data includes decoding secondary data in a pulse-width modulated clock signal received from the SCL of the I2C bus. Each high period of the pulse-width modulated clock signal has a duration that exceeds a minimum high period for an SCL clock specified by the I2C bus protocols and each low period of the pulse-width modulated clock signal has a duration that exceeds a minimum low period for an SCL clock specified by the I2C bus protocols.
- In another example, decoding the secondary data includes determining a first value for a bit of secondary data when a stop condition and a start condition is received between consecutive frames carrying the primary data on the SDA of the I2C bus, and determining a second value for the bit of secondary data when a repeated start condition is received between the consecutive frames.
- In another example, decoding the secondary data includes determining a first value for a bit of secondary data when a repeated start condition received between consecutive frames carrying the primary data on the SDA of the I2C bus has a first duration, and determining a second value for the bit of secondary data when the repeated start condition has a second duration.
-
FIG. 15 is a diagram illustrating a simplified example of a hardware implementation for an apparatus 1500 employing aprocessing circuit 1502. The processing circuit typically has aprocessor 1516 that may include one or more of a microprocessor, microcontroller, digital signal processor, a sequencer and a state machine. Theprocessing circuit 1502 may be implemented with a bus architecture, represented generally by thebus 1520. Thebus 1520 may include any number of interconnecting buses and bridges depending on the specific application of theprocessing circuit 1502 and the overall design constraints. Thebus 1520 links together various circuits including one or more processors and/or hardware modules, represented by theprocessor 1516, the modules or 1504, 1506 and 1508,circuits line interface circuits 1512 configurable to communicate over anI2C bus 1514 that includes a plurality of connectors or wires, and the computer-readable storage medium 1518. Thebus 1520 may also link various other circuits such as timing sources, peripherals, voltage regulators, and power management circuits, which are well known in the art, and therefore, will not be described any further. - The
processor 1516 is responsible for general processing, including the execution of software stored on the computer-readable storage medium 1518. The software, when executed by theprocessor 1516, causes theprocessing circuit 1502 to perform the various functions described supra for any particular apparatus. The computer-readable storage medium 1518 may also be used for storing data that is manipulated by theprocessor 1516 when executing software, including data decoded from symbols transmitted over theI2C bus 1514. Theprocessing circuit 1502 further includes at least one of the 1504, 1506 and 1508. Themodules 1504, 1506 and 1508 may be software modules running in themodules processor 1516, resident/stored in the computer-readable storage medium 1518, one or more hardware modules coupled to theprocessor 1516, or some combination thereof. The 1504, 1506 and 1508 may include microcontroller instructions, state machine configuration parameters, or some combination thereof.modules - In one configuration, the apparatus 1500 for wireless communication includes a module and/or
circuit 1504 that is configured to decode primary data received from an I2C signal in accordance with I2C bus protocols, a module and/or circuit 1506 that is configured to decode secondary data from the I2C signal, and a module and/orcircuit 1508 that is configured to receive the I2C signal from theI2C bus 1514 and to separate and/or demodulate signaling associated with the encoded primary and secondary data I2C signal. - It is understood that the specific order or hierarchy of steps in the processes disclosed is an illustration of exemplary approaches. Based upon design preferences, it is understood that the specific order or hierarchy of steps in the processes may be rearranged. The accompanying method claims present elements of the various steps in a sample order, and are not meant to be limited to the specific order or hierarchy presented.
- The previous description is provided to enable any person skilled in the art to practice the various aspects described herein. Various modifications to these aspects will be readily apparent to those skilled in the art, and the generic principles defined herein may be applied to other aspects. Thus, the claims are not intended to be limited to the aspects shown herein, but is to be accorded the full scope consistent with the language claims, wherein reference to an element in the singular is not intended to mean “one and only one” unless specifically so stated, but rather “one or more.” Unless specifically stated otherwise, the term “some” refers to one or more. All structural and functional equivalents to the elements of the various aspects described throughout this disclosure that are known or later come to be known to those of ordinary skill in the art are expressly incorporated herein by reference and are intended to be encompassed by the claims. Moreover, nothing disclosed herein is intended to be dedicated to the public regardless of whether such disclosure is explicitly recited in the claims. No claim element is to be construed as a means plus function unless the element is expressly recited using the phrase “means for.”
Claims (30)
1. A method of data communication on a serial bus, comprising:
transmitting or receiving data through a first line of a serial bus in accordance with timing provided by a clock signal transmitted on a second line of the serial bus; and
communicating one or more bits of information over the second line of the serial bus encoded in differences in timing of pulses provided in the clock signal.
2. The method of claim 1 , wherein a bit of information that has a first value is communicated over the clock signal in a pulse that has a first duration and a bit of information that has a second value is communicated over the clock signal in a pulse that has a second duration, the first duration being greater than the second duration.
3. The method of claim 2 , and further comprising:
operating the serial bus in accordance with an Inter-Integrated Circuit (I2C) protocol while communicating the one or more bits of information over the second line of the serial bus,
wherein the first duration exceeds a minimum high period for an SCL clock specified by the I2C protocol and the second duration exceeds a minimum low period for an SCL clock specified by the I2C protocol.
4. The method of claim 1 , wherein the one or more bits of information are communicated in pulses that have a duration that is less than a maximum duration specified by the I2C protocol for a spike that is to be ignored by a receiving device.
5. The method of claim 4 , wherein the maximum duration specified by the I2C protocol for the spike is 50 nanoseconds.
6. The method of claim 1 , wherein an input filter of a receiver is configured to suppress pulses that have a duration that is less than 50 nanoseconds.
7. The method of claim 1 , wherein the one or more bits of information are communicated over the second line of the serial bus while a first byte of data is transmitted or received through the first line of the serial bus.
8. The method of claim 7 , wherein the one or more bits of information communicated over the second line of the serial bus includes a second byte of data.
9. The method of claim 1 , wherein the one or more bits of information communicated over the second line of the serial bus includes a control bit.
10. The method of claim 1 , wherein the one or more bits of information are communicated over the second line of the serial bus between frames of data exchanged over the first line of a serial bus.
11. An apparatus, comprising:
an interface circuit that couples the apparatus to a serial bus and that is configured to transmit or receive data through a first line of a serial bus in accordance with timing provided by a clock signal transmitted on a second line of the serial bus; and
a pulse-width modulation encoder configured to provide one or more bits of information to be transmitted by the interface circuit over the second line of the serial bus encoded in differences in timing of pulses provided in the clock signal.
12. The apparatus of claim 11 , wherein a bit of information that has a first value is communicated over the clock signal in a pulse that has a first duration and a bit of information that has a second value is communicated over the clock signal in a pulse that has a second duration, the first duration being greater than the second duration.
13. The apparatus of claim 12 , and further comprising a controller configured to:
operate the serial bus in accordance with an Inter-Integrated Circuit (I2C) protocol while communicating the one or more bits of information over the second line of the serial bus,
wherein the first duration exceeds a minimum high period for an SCL clock specified by the I2C protocol and the second duration exceeds a minimum low period for an SCL clock specified by the I2C protocol.
14. The apparatus of claim 11 , wherein the one or more bits of information are communicated in pulses that have a duration that is less than a maximum duration specified by the I2C protocol for a spike that is to be ignored by a receiving device.
15. The apparatus of claim 14 , wherein the maximum duration specified by the I2C protocol for the spike is 50 nanoseconds.
16. The apparatus of claim 11 , wherein an input filter of a receiver is configured to suppress pulses that have a duration that is less than 50 nanoseconds.
17. The apparatus of claim 11 , wherein the one or more bits of information are communicated over the second line of the serial bus while a first byte of data is transmitted or received over the first line of the serial bus.
18. The apparatus of claim 17 , wherein the one or more bits of information communicated over the second line of the serial bus includes a second byte of data.
19. The apparatus of claim 11 , wherein the one or more bits of information communicated over the second line of the serial bus includes a control bit.
20. The apparatus of claim 11 , wherein the one or more bits of information are communicated over the second line of the serial bus between frames of data exchanged over the first line of the serial bus.
21. A method of data communication on a serial bus, comprising:
transmitting or receiving data through a first line of a serial bus in accordance with timing provided by a clock signal received on a second line of the serial bus; and
decoding one or more bits of information from the clock signal, wherein the one or more bits of information are encoded in differences in timing of pulses provided in the clock signal.
22. The method of claim 21 , wherein a bit of information that has a first value is communicated over the clock signal in a pulse that has a first duration and a bit of information that has a second value is communicated over the clock signal in a pulse that has a second duration, the first duration being greater than the second duration.
23. The method of claim 22 , and further comprising:
operating the serial bus in accordance with an Inter-Integrated Circuit (I2C) protocol while communicating the one or more bits of information over the second line of the serial bus,
wherein the first duration exceeds a minimum high period for an SCL clock specified by the I2C protocol and the second duration exceeds a minimum low period for an SCL clock specified by the I2C protocol.
24. The method of claim 21 , wherein the one or more bits of information are communicated over the second line of the serial bus while a first byte of data is transmitted or received through the first line of the serial bus, and wherein the one or more bits of information communicated over the second line of the serial bus includes a second byte of data.
25. The method of claim 21 , wherein the one or more bits of information communicated over the second line of the serial bus includes a control bit.
26. An apparatus, comprising:
an interface circuit configured to transmit or receive data through a first line of a serial bus in accordance with timing provided by a clock signal transmitted on a second line of the serial bus; and
a pulse-width modulation decoder configured to decode one or more bits of information from the clock signal, wherein the one or more bits of information are encoded in differences in timing of pulses provided in the clock signal.
27. The apparatus of claim 26 , wherein a bit of information that has a first value is communicated over the clock signal in a pulse that has a first duration and a bit of information that has a second value is communicated over the clock signal in a pulse that has a second duration, the first duration being greater than the second duration.
28. The apparatus of claim 27 , and further comprising a controller configured to:
operate the interface circuit in accordance with an Inter-Integrated Circuit (I2C) protocol while communicating the one or more bits of information over the second line of the serial bus,
wherein the first duration exceeds a minimum high period for an SCL clock specified by the I2C protocol and the second duration exceeds a minimum low period for an SCL clock specified by the I2C protocol.
29. The apparatus of claim 26 , wherein the one or more bits of information are communicated over the second line of the serial bus while a first byte of data is transmitted or received through the first line of the serial bus, and wherein the one or more bits of information communicated over the second line of the serial bus includes a second byte of data.
30. The apparatus of claim 26 , wherein the one or more bits of information communicated over the second line of the serial bus includes a control bit.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US15/917,507 US20180196777A1 (en) | 2014-04-02 | 2018-03-09 | Methods to send extra information in-band on inter-integrated circuit (i2c) bus |
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US14/243,459 US9710423B2 (en) | 2014-04-02 | 2014-04-02 | Methods to send extra information in-band on inter-integrated circuit (I2C) bus |
| US14/700,860 US9928208B2 (en) | 2014-04-02 | 2015-04-30 | Methods to send extra information in-band on inter-integrated circuit (I2C) bus |
| US15/917,507 US20180196777A1 (en) | 2014-04-02 | 2018-03-09 | Methods to send extra information in-band on inter-integrated circuit (i2c) bus |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/700,860 Continuation US9928208B2 (en) | 2014-04-02 | 2015-04-30 | Methods to send extra information in-band on inter-integrated circuit (I2C) bus |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| US20180196777A1 true US20180196777A1 (en) | 2018-07-12 |
Family
ID=52997557
Family Applications (3)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/243,459 Expired - Fee Related US9710423B2 (en) | 2014-04-02 | 2014-04-02 | Methods to send extra information in-band on inter-integrated circuit (I2C) bus |
| US14/700,860 Expired - Fee Related US9928208B2 (en) | 2014-04-02 | 2015-04-30 | Methods to send extra information in-band on inter-integrated circuit (I2C) bus |
| US15/917,507 Abandoned US20180196777A1 (en) | 2014-04-02 | 2018-03-09 | Methods to send extra information in-band on inter-integrated circuit (i2c) bus |
Family Applications Before (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US14/243,459 Expired - Fee Related US9710423B2 (en) | 2014-04-02 | 2014-04-02 | Methods to send extra information in-band on inter-integrated circuit (I2C) bus |
| US14/700,860 Expired - Fee Related US9928208B2 (en) | 2014-04-02 | 2015-04-30 | Methods to send extra information in-band on inter-integrated circuit (I2C) bus |
Country Status (6)
| Country | Link |
|---|---|
| US (3) | US9710423B2 (en) |
| EP (2) | EP3333717A1 (en) |
| JP (1) | JP2017516353A (en) |
| KR (1) | KR20160140847A (en) |
| CN (1) | CN106170781A (en) |
| WO (1) | WO2015153773A1 (en) |
Families Citing this family (37)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2015126983A1 (en) * | 2014-02-18 | 2015-08-27 | Qualcomm Incorporated | Technique to avoid metastability condition and avoid unintentional state changes of legacy i2c devices on a multi-mode bus |
| US9710423B2 (en) | 2014-04-02 | 2017-07-18 | Qualcomm Incorporated | Methods to send extra information in-band on inter-integrated circuit (I2C) bus |
| ES2668463T3 (en) * | 2014-08-15 | 2018-05-18 | Vtech Electronics, Ltd. | Electronic toy with independent radial connector and associated communication protocol |
| US9397871B2 (en) | 2014-09-30 | 2016-07-19 | Infineon Technologies Ag | Communication devices |
| US9665528B2 (en) | 2014-11-20 | 2017-05-30 | International Business Machines Corporation | Bus serialization for devices without multi-device support |
| GB2537856A (en) * | 2015-04-28 | 2016-11-02 | Nordic Semiconductor Asa | Communication between intergrated circuits |
| US9628255B1 (en) * | 2015-12-18 | 2017-04-18 | Integrated Device Technology, Inc. | Methods and apparatus for transmitting data over a clock signal |
| US9479182B1 (en) | 2015-07-02 | 2016-10-25 | Integrated Device Technology, Inc. | Methods and apparatus for synchronizing operations using separate asynchronous signals |
| US20170104607A1 (en) * | 2015-10-13 | 2017-04-13 | Qualcomm Incorporated | Methods to avoid i2c void message in i3c |
| US10229086B2 (en) * | 2015-12-26 | 2019-03-12 | Intel Corporation | Technologies for automatic timing calibration in an inter-integrated circuit data bus |
| US10872055B2 (en) * | 2016-08-02 | 2020-12-22 | Qualcomm Incorporated | Triple-data-rate technique for a synchronous link |
| CN106937070B (en) * | 2017-03-10 | 2020-03-10 | 成都振芯科技股份有限公司 | Bidirectional control method in FPD-LINK low-voltage differential signal video transmission |
| CN107239430A (en) * | 2017-06-05 | 2017-10-10 | 上海爱信诺航芯电子科技有限公司 | Communication means, apparatus and system |
| JP6927766B2 (en) * | 2017-06-29 | 2021-09-01 | 矢崎総業株式会社 | Information setting device |
| US10372663B2 (en) * | 2017-07-25 | 2019-08-06 | Qualcomm Incorporated | Short address mode for communicating waveform |
| US10423551B2 (en) | 2017-09-07 | 2019-09-24 | Qualcomm Incorporated | Ultra-short RFFE datagrams for latency sensitive radio frequency front-end |
| US20190171611A1 (en) * | 2017-12-05 | 2019-06-06 | Qualcomm Incorporated | Protocol-framed clock line driving for device communication over master-originated clock line |
| US10545886B2 (en) * | 2017-12-05 | 2020-01-28 | Qualcomm Incorporated | Clock line driving for single-cycle data over clock signaling and pre-emption request in a multi-drop bus |
| US11126218B2 (en) * | 2018-07-25 | 2021-09-21 | Integrated Device Technology, Inc. | Fast protection switching in distributed systems |
| US11119966B2 (en) * | 2018-09-07 | 2021-09-14 | Qualcomm Incorporated | Mixed-mode radio frequency front-end interface |
| US20200097434A1 (en) * | 2018-09-26 | 2020-03-26 | Qualcomm Incorporated | Enhanced high data rate technique for i3c |
| US11188493B2 (en) * | 2019-01-18 | 2021-11-30 | Tektronix, Inc. | Bus decode and triggering on digital down converted data in a test and measurement instrument |
| FR3093198B1 (en) * | 2019-02-22 | 2021-02-12 | St Microelectronics Grenoble 2 | Transmission of linked data on I2C bus |
| WO2020239944A1 (en) | 2019-05-31 | 2020-12-03 | Ams International Ag | An inter-integrated circuit (i2c) apparatus |
| WO2022056793A1 (en) * | 2020-09-17 | 2022-03-24 | 华为技术有限公司 | Communication method and apparatus employing inter-integrated circuit |
| US11567882B2 (en) * | 2020-11-03 | 2023-01-31 | Himax Imaging Limited | Method and apparatus for delivering multiple commands through virtual burst-mode transmission and initialization of image sensor |
| KR20220098947A (en) * | 2021-01-05 | 2022-07-12 | 삼성전자주식회사 | Semiconductor device and electronic device including the same |
| JP2022117196A (en) * | 2021-01-29 | 2022-08-10 | ソニーセミコンダクタソリューションズ株式会社 | Transmitter and communication system |
| CN113114550B (en) * | 2021-04-07 | 2022-06-21 | 中国科学院苏州生物医学工程技术研究所 | I2C communication control method, device and storage medium |
| US11927546B2 (en) * | 2021-04-30 | 2024-03-12 | Baker Hughes Holdings Llc | Systems and methods for operating non-destructive testing devices |
| CN113992470B (en) * | 2021-10-14 | 2023-06-16 | 上海艾为电子技术股份有限公司 | Data transmitting method, data receiving method, master device, slave device and electronic device |
| KR102454640B1 (en) | 2022-01-04 | 2022-10-14 | (주)파인디어칩 | Integrated circuit having adaptive uart serial interface |
| US11948486B2 (en) | 2022-01-04 | 2024-04-02 | FINDEACHIP Inc. | Integrated circuit having universal asynchronous receiver/transmitter for data communication stability in noise environment |
| KR102468986B1 (en) * | 2022-01-04 | 2022-11-22 | (주)파인디어칩 | Integrated circuit with data communication stability in noisy environment |
| US12523739B2 (en) | 2023-01-31 | 2026-01-13 | Hewlett Packard Enterprise Development Lp | System with access point and directional antenna |
| US12373357B2 (en) * | 2023-09-27 | 2025-07-29 | Advanced Micro Devices, Inc. | Systems and methods for data communication bus address sharing |
| CN117215983B (en) * | 2023-11-09 | 2024-03-22 | 辉芒微电子(深圳)股份有限公司 | Circuit structure and method for avoiding error starting and stopping conditions of I2C interface |
Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20130034676A1 (en) * | 2011-08-04 | 2013-02-07 | Apple Inc. | Adhesive stack with a central shear layer |
| US9037892B2 (en) * | 2011-04-13 | 2015-05-19 | International Business Machines Corporation | System-wide power management control via clock distribution network |
| US9098645B2 (en) * | 2012-06-22 | 2015-08-04 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Increasing data transmission rate in an inter-integrated circuit (‘I2C’) system |
| US9319178B2 (en) * | 2014-03-14 | 2016-04-19 | Qualcomm Incorporated | Method for using error correction codes with N factorial or CCI extension |
| US9582457B2 (en) * | 2013-06-12 | 2017-02-28 | Qualcomm Incorporated | Camera control interface extension bus |
| US9852104B2 (en) * | 2014-02-20 | 2017-12-26 | Qualcomm Incorporated | Coexistence of legacy and next generation devices over a shared multi-mode bus |
Family Cites Families (31)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5341131A (en) * | 1991-03-29 | 1994-08-23 | Hitachi, Ltd. | Communications system and a system control method |
| US5559502A (en) * | 1993-01-14 | 1996-09-24 | Schutte; Herman | Two-wire bus system comprising a clock wire and a data wire for interconnecting a number of stations and allowing both long-format and short-format slave addresses |
| JPH08316973A (en) * | 1995-05-23 | 1996-11-29 | Hitachi Ltd | Communication processing means |
| US6078192A (en) * | 1997-09-18 | 2000-06-20 | Ericsson, Inc. | Circuit and method for using the I2 C serial protocol with multiple voltages |
| DE19833693C2 (en) * | 1998-07-27 | 2002-11-07 | Wolf Gmbh Richard | Interface for I · 2 · C-Bus |
| US6253268B1 (en) * | 1999-01-15 | 2001-06-26 | Telefonaktiebolaget L M Ericsson (Publ) | Method and system for multiplexing a second interface on an I2C interface |
| US6876400B2 (en) * | 2001-12-19 | 2005-04-05 | Thomson Licensing S.A. | Apparatus and method for protecting a memory sharing signal control lines with other circuitry |
| US7793005B1 (en) * | 2003-04-11 | 2010-09-07 | Zilker Labs, Inc. | Power management system using a multi-master multi-slave bus and multi-function point-of-load regulators |
| US7088137B2 (en) * | 2004-05-04 | 2006-08-08 | International Business Machines Corporation | System, method and program product for extending range of a bidirectional data communication bus |
| CN100426274C (en) * | 2005-08-08 | 2008-10-15 | 中兴通讯股份有限公司 | Method and device for preventing I2C bus locked |
| US7514962B2 (en) * | 2006-04-28 | 2009-04-07 | Stmicroelectronics Pvt. Ltd. | Configurable I2C interface |
| JP2007325156A (en) * | 2006-06-05 | 2007-12-13 | Seiko Epson Corp | Reception device and transmission / reception system |
| US7953162B2 (en) * | 2006-11-17 | 2011-05-31 | Intersil Americas Inc. | Use of differential pair as single-ended data paths to transport low speed data |
| DE602008004447D1 (en) * | 2007-02-19 | 2011-02-24 | Nxp Bv | Integrated circuit and electronic device |
| US7692450B2 (en) * | 2007-12-17 | 2010-04-06 | Intersil Americas Inc. | Bi-directional buffer with level shifting |
| US7882282B2 (en) * | 2008-05-21 | 2011-02-01 | Silicon Laboratories Inc. | Controlling passthrough of communications between multiple buses |
| FR2939926B1 (en) | 2008-12-17 | 2010-12-10 | St Microelectronics Rousset | TRANSMISSION ON I2C BUS |
| US7944245B2 (en) * | 2008-12-18 | 2011-05-17 | Stmicroelectronics Pvt. Ltd. | Pulse filtering module circuit, system, and method |
| US7999596B2 (en) * | 2009-03-26 | 2011-08-16 | Texas Instruments Incorporated | Digital suppression of spikes on an 12C bus |
| US20100255560A1 (en) | 2009-04-03 | 2010-10-07 | Mesosystems Technology, Inc. | Method and apparatus for capturing viable biological particles over an extended period of time |
| DE102010041368A1 (en) * | 2010-09-24 | 2012-04-19 | Robert Bosch Gmbh | Method and subscriber station for the optimized transmission of data between subscriber stations of a bus system |
| AU2011313404B2 (en) | 2010-10-06 | 2015-02-12 | Sharp Kabushiki Kaisha | Electronic device and serial data communication method |
| JP5655562B2 (en) * | 2010-12-28 | 2015-01-21 | ソニー株式会社 | Electronic device, control method of electronic device, transmission device, and reception device |
| JP5025839B1 (en) * | 2011-02-23 | 2012-09-12 | パナソニック株式会社 | Signal transmission device |
| JP5758661B2 (en) * | 2011-03-22 | 2015-08-05 | 富士通コンポーネント株式会社 | Signal transmission system, signal transmission method, transmitter and receiver |
| US8558577B1 (en) * | 2012-07-31 | 2013-10-15 | Hewlett-Packard Development Company, L.P. | Systems and methods for bidirectional signal separation |
| DE102012110732B3 (en) * | 2012-11-09 | 2013-06-13 | R.Stahl Schaltgeräte GmbH | Bus communication apparatus e.g. all-digital, serial, two-way communications system, has coupling device and/or subscriber units formed to perform coupling device current modulation, where gradient of currents is limited to maximum value |
| US9684624B2 (en) * | 2014-01-14 | 2017-06-20 | Qualcomm Incorporated | Receive clock calibration for a serial bus |
| US9710423B2 (en) | 2014-04-02 | 2017-07-18 | Qualcomm Incorporated | Methods to send extra information in-band on inter-integrated circuit (I2C) bus |
| US10108511B2 (en) * | 2015-06-15 | 2018-10-23 | Qualcomm Incorporated | Test for 50 nanosecond spike filter |
| US20170104607A1 (en) * | 2015-10-13 | 2017-04-13 | Qualcomm Incorporated | Methods to avoid i2c void message in i3c |
-
2014
- 2014-04-02 US US14/243,459 patent/US9710423B2/en not_active Expired - Fee Related
-
2015
- 2015-04-01 EP EP18153206.0A patent/EP3333717A1/en not_active Withdrawn
- 2015-04-01 JP JP2016559318A patent/JP2017516353A/en active Pending
- 2015-04-01 WO PCT/US2015/023898 patent/WO2015153773A1/en not_active Ceased
- 2015-04-01 KR KR1020167030324A patent/KR20160140847A/en not_active Withdrawn
- 2015-04-01 EP EP15718038.1A patent/EP3126994B1/en not_active Not-in-force
- 2015-04-01 CN CN201580016468.2A patent/CN106170781A/en active Pending
- 2015-04-30 US US14/700,860 patent/US9928208B2/en not_active Expired - Fee Related
-
2018
- 2018-03-09 US US15/917,507 patent/US20180196777A1/en not_active Abandoned
Patent Citations (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9037892B2 (en) * | 2011-04-13 | 2015-05-19 | International Business Machines Corporation | System-wide power management control via clock distribution network |
| US20130034676A1 (en) * | 2011-08-04 | 2013-02-07 | Apple Inc. | Adhesive stack with a central shear layer |
| US9098645B2 (en) * | 2012-06-22 | 2015-08-04 | Lenovo Enterprise Solutions (Singapore) Pte. Ltd. | Increasing data transmission rate in an inter-integrated circuit (‘I2C’) system |
| US9582457B2 (en) * | 2013-06-12 | 2017-02-28 | Qualcomm Incorporated | Camera control interface extension bus |
| US9852104B2 (en) * | 2014-02-20 | 2017-12-26 | Qualcomm Incorporated | Coexistence of legacy and next generation devices over a shared multi-mode bus |
| US9319178B2 (en) * | 2014-03-14 | 2016-04-19 | Qualcomm Incorporated | Method for using error correction codes with N factorial or CCI extension |
Non-Patent Citations (2)
| Title |
|---|
| "The I2C-Bus Specification - Version 2.1" - 46 pages, Dated January 2000 (Year: 2000) * |
| International Journal of Advancements in Research & Technology, Volume 1, Issue 7 - "A New subset I2C protocol for interfacing Camera module with baseband processor"; 8 pages, Dated December 2012 (Year: 2012) * |
Also Published As
| Publication number | Publication date |
|---|---|
| US20150286606A1 (en) | 2015-10-08 |
| EP3126994A1 (en) | 2017-02-08 |
| EP3333717A1 (en) | 2018-06-13 |
| WO2015153773A1 (en) | 2015-10-08 |
| JP2017516353A (en) | 2017-06-15 |
| US20150286608A1 (en) | 2015-10-08 |
| KR20160140847A (en) | 2016-12-07 |
| CN106170781A (en) | 2016-11-30 |
| EP3126994B1 (en) | 2018-09-12 |
| US9928208B2 (en) | 2018-03-27 |
| US9710423B2 (en) | 2017-07-18 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US9928208B2 (en) | Methods to send extra information in-band on inter-integrated circuit (I2C) bus | |
| US10872055B2 (en) | Triple-data-rate technique for a synchronous link | |
| US9811499B2 (en) | Transcoding and transmission over a serial bus | |
| JP6059404B2 (en) | N factorial dual data rate clock data recovery | |
| WO2018017232A1 (en) | Signaling camera configuration changes using metadata defined for a camera command set | |
| EP2868047A2 (en) | N-phase polarity output pin mode multiplexer | |
| US10218492B2 (en) | Clock and data recovery for pulse based multi-wire link | |
| US20170104607A1 (en) | Methods to avoid i2c void message in i3c | |
| US11463233B2 (en) | Unit interval jitter improvement in a C-PHY interface | |
| US9990330B2 (en) | Simultaneous edge toggling immunity circuit for multi-mode bus | |
| US9319178B2 (en) | Method for using error correction codes with N factorial or CCI extension | |
| US9490964B2 (en) | Symbol transition clocking clock and data recovery to suppress excess clock caused by symbol glitch during stable symbol period |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: QUALCOMM INCORPORATED, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:SENGOKU, SHOICHIRO;REEL/FRAME:045174/0402 Effective date: 20150520 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |