Method and apparatus for providing an inter integrated circuit interface with an expanded address range and efficient priority-based data throughput
A method and apparatus implementing an enhanced protocol between an I2C master and an I2C slave. In various embodiments the invention permits greater addressability space and high priority access to the slave device. The enhanced protocol is implemented by the addition of command code data being transmitted which is recognized through an interface circuit inside the slave device. The invention provides an I2C solution for accessing high priority address space with one command byte, medium priority space with two command bytes and low priority space with three command bytes.
Latest Agere Systems Inc. Patents:
- Systems and methods for low latency media defect detection
- Methods and apparatus for determining threshold of one or more DFE transition latches based on incoming data eye
- Method of identifying and/or programming an integrated circuit
- Semiconductor device and a method of manufacture therefor
- Systems and methods for low latency media defect detection
The present invention relates to Inter Integrated Circuit (I2C) interface addressing for communication between connected devices. In particular, the invention provides implementation of a larger address space. Additionally, the invention permits efficient high priority accesses.
BACKGROUND OF THE INVENTIONAs is well known in the prior art, an I2C (Inter-IC) bus is a bi-directional two-wire serial bus that provides a communication link between devices connected to the bus. Devices are typically considered as masters or slaves when data transfers are being performed. The master is the device which initiates a data transfer on the bus and generates the clock signals to permit that transfer. At that time, any device addressed is considered a slave.
Not illustrated in
Both these 7-bit and 10-bit prior art addressing protocols permit an additional data byte 108 to contain additional addressing information, such as an internal register address of the slave device.
Although widely used, the I2C bus suffers from several drawbacks, one of which is the limited addressability/time inefficiencies inherent in its protocol. Prior art attempts at remedying this problem have chiefly involved adding external pins to the slave device. While this method does permit the I2C master to control a larger word addressing space, it requires larger package pin counts for any I2C slave devices to be so addressed.
The current invention provides access to a large address space without requiring additional external pins on the device addressed. Further, the invention provides an interface that is efficient for high priority accesses.
SUMMARY OF THE INVENTIONThis invention relates to an enhanced protocol between an I2C master device and an I2C slave device. In various embodiments, the invention permits greater addressable space and high priority access to the slave device. The enhanced protocol is implemented by the addition of command code data being transmitted immediately following the 7-bit slave address (+1 bit read/write indicator) used in the conventional 7-bit addressing protocol.
The addressed slave device would recognize the command code through an interface circuit inside the slave device. A large system, of which the master and slave are components, would be configured such that devices seeking to address that slave device would know to do so in the enhanced protocol format. Configuring of system components as to required communication protocols in this manner is well-known in the prior art.
Various embodiments of the invention permit alternative addressing schemes to be implemented by this command code structure. In particular, the invention provides an I2C solution for accessing high priority address space with one command byte, medium priority space with two command bytes and low priority space with three command bytes.
Various embodiments of the present invention will now be described in detail in conjunction with the annexed drawings, in which:
The present invention describes an enhanced priority access data protocol between an I2C master device and an I2C slave device.
In this embodiment of the invention, an enhanced I2C protocol is implemented through an interface circuit 210 contained in the slave device. This interface circuit 210 not only communicates with the bus but with various internal memories 212, internal registers 214, and internal devices (e.g., PLL 216) of the slave device 204.
In an embodiment of the invention to be discussed now in greater detail, the enhanced protocol is implemented by augmenting the prior art I2C 7-bit addressing protocol illustrated in
As illustrated in
Next, and as is conventional in I2C protocol, upon receipt of an 8-bit byte of information, an acknowledgment (ACK 110) is sent by the slave device 204. The interface circuit 210 then receives the additional byte of address information—the lower 8 bits [7:0] of the 14-bit internal address. As before, an ACK 110 signal is sent to acknowledge receipt of this byte of information. Communication then occurs in accordance with conventional I2C protocol. That is, the master device 202 starts writing data bytes 108 one byte at a time with the slave device 204 sending an ACK 110 indicator as they are received. As is well-known in the prior art, the word internal address registers or word internal memories are automatically incremented by one after each data byte transfer. Thus, by way of example, a write operation in which a plurality of data bytes is to be written to a slave device's internal memory requires only the address of a starting memory location need be supplied. Also as is well-known in the prior art, the slave device 204 will remain addressed until it receives a STOP condition 112.
Both the 14-bit address illustrated in
The enhanced protocol also can be used to support a high priority write operation to selected registers contained in the slave device, as illustrated in
This high priority write operation would speed up writing data to selected registers or devices inside the slave device. An example of a useful application of this feature would be the resetting of a specific device contained in the slave device. In particular, the feature would enable selection of different frequency ranges of a PLL inside the slave device or switching of an internal multiplexing clock. Implementation of these examples is attained in an embodiment of the invention in which the command code 402 contains the low order 6 bits as indicated in Table 1:
It will be understood that the forgoing description of the invention is by way of example only, and variations will be evident to those skilled in the art without departing from the scope of the invention, which is as set out in the appended claims.
Claims
1. A method for a master device to communicate with a slave device connected to said master device via an inter-integrated circuit bus (I2C bus); said method comprising the steps of:
- generating an array of addressing parameters comprising an address of said slave device followed by a command code comprising at least one indicator bit indicating the format of an internal address portion of the array, and at least a portion of said internal address followed by at least one array entry corresponding to said internal address;
- wherein said at least one indicator bit is in either a first state or a second state; when said at least one indicator bit is in said first state, utilizing some of the command code as part of said internal address, and utilizing an additional portion of said array as the remainder of said internal address; and when said at least one indicator bit is in said second state, utilizing some of the command code as all of said internal address; and transmitting said array over said I2C bus.
2. The method of claim 1 wherein said communication is selected from the group consisting of writing data to a location within said slave device and reading data from a location within said slave device and wherein, when said communication is a writing, said method further comprising the step of transmitting data over said I2C bus.
3. The method of claim 1 wherein;
- said command code comprises 8 bits;
- the at least one indicator bit comprises the 2 high order bits of said command code;
- when said 2 high order bits are in said first state, the 6 low order bits of said command code comprise part of a 14-bit internal address, and an additional 8 bits of data in said array comprise the remainder of the 14-bit internal address; and
- when said 2 high order bits are in said second state, the 6low order bits of said command code comprise all of a 6-bit internal address.
4. The method of claim 3 wherein;
- said 2 high order bits of said command code have a third state; and
- when said 2 high order bits are in said third state, the 6 low order bits of said command code comprises an internal address associated with a particular register in said slave device that, when accessed, will cause the loading of predetermined data into said register via a hard-coded internal write operation.
5. A method for communicating between a master device and a slave device connected via an inter-integrated circuit bus (I2C bus), said slave device comprising at least one internal device having an internal address, said method comprising the steps of:
- sending a message from said master device to said slave device over said I2C bus;
- said message comprising a command code to said addressed slave device, said command code comprising 8 bits, a 2-bit subset of said 8 bits functioning as an indicator of a type of supplemental address that is being provided, wherein a particular state of said 2-bit indicator indicates that the supplemental address contains 6 bits of a 14-bit internal address that is being provided;
- said slave device determining whether the 2-bit indicator is in said particular state, and, if said 2-bit indicator is in said particular state, said slave device utilizing the 6 low order bits of the command code as part of the 14-bit internal address and an additional 8 bits of data as the remainder of the 14-bit internal address.
6. The method of claim 5 wherein said communicating is selected from the group consisting of writing data to a location within said slave device and reading data from a location within said slave device.
7. A method for communicating between a master device and a slave device connected via an inter-integrated circuit bus (I2C bus), said slave device comprising at least one internal device having an internal address, said method comprising the steps of:
- sending a message from said master device to said slave device over said I2C bus;
- said message comprising a command code to said addressed slave device, said command code comprising 8 bits, a 2-bit subset of said 8 bits functioning as an indicator of a type of supplemental address that is being provided, wherein a particular state of said 2-bit indicator indicates that the supplemental address contains 6 bits of a 6-bit internal address that is being provided:
- said slave device determining whether the 2-bit indicator is in said particular state, and, if said 2-bit indicator is in said particular state, said slave device utilizing the 6 low order bits of the command code as the 6-bit internal address.
8. The method of claim 7 wherein said communicating is selected from the group consisting of writing data to a location within said slave device and reading data from a location within said slave device.
9. The method of claim 7 wherein said communicating comprises a write operation being performed from said master device to said slave device, said method further comprising the steps of:
- transitioning to a receive state responsive to receipt of said command code;
- receiving data transmitted from said master device; and,
- writing said data to the slave device at a location therein identified by said 6-bit internal address.
10. A method for communicating between a master device and a slave device connected via an inter-integrated circuit bus (I2C bus), said slave device comprising at least one internal device having an internal address, said method comprising the steps of:
- sending a message from said master device to said slave device over said I2C bus;
- said message comprising a command code to said addressed slave device, said command code comprising 8 bits, a 2-bit subset of said 8bits functioning as an indicator of a type of supplemental address that is being provided, wherein a particular state of said 2-bit indicator indicates that a direct write operation of data is being performed to a particular register in the slave device;
- said slave device, responsive to said 2-bit indicator being in said particular state, parsing the 6 low order bits of the command code to obtain said internal address which, when accessed, will cause the loading of predetermined data into said register via a hard-coded internal write operation.
11. The method of claim 10 wherein said communicating is selected from the group consisting of writing data to a location within said slave device and reading data from a location within said slave device.
12. A method for communicating between a master device and a slave device connected via an inter-integrated circuit bus (I2C bus), said slave device comprising at least one internal device having an internal address, said method comprising the steps of:
- sending a message from said master device to said slave device over said I2C bus;
- said message comprising a command code to said addressed slave device, said command code comprising 8bits, a 2-bit subset of said 8 bits functioning as an indicator of a type of supplemental address that is being provided, wherein said 2-bit indicator being in a first state indicates that one of a 6-bit supplemental address that is used as part of a communicated 14-bit internal address is being provided and said 2-bit indicator being in a second state indicates that a 6-bit supplemental address that is used as a 6-bit internal address is being provided;
- said slave device interpreting said supplemental address contained in said command code in accordance with said state of said two bit indicator; and
- said slave device determining an internal address for said slave device using said supplemental address.
13. The method of claim 12 wherein said communicating is selected from the group consisting of writing data to a location within said slave device and reading data from a location within said slave device.
14. A method for communicating between a master device and a slave device connected via an inter-integrated circuit bus (I2C bus), said slave device comprising at least one internal device having an internal address, said method comprising the steps of:
- sending a message from said master device to said slave device over said I2C bus;
- said message comprising a command code to said addressed slave device, said command code comprising 8 bits, a 2-bit subset of said 8bits functioning as an indicator of a type of supplemental address that is being provided, wherein said 2-bit indicator being in a first state indicates that a 6-bit supplemental address that is used as part of a communicated 14-bit internal address is being provided and said 2-bit indicator being in a second state indicates that a 6-bit supplemental address that is used as a 6-bit internal address for a direct command access operation is being provided;
- said slave device interpreting said supplemental address contained in said command code in accordance with said state of said two bit indicator; and
- said slave device determining an internal address for said slave device using said supplemental address.
15. The method of claim 14 wherein said communicating is selected from the group consisting of writing data to a location within said slave device and reading data from a location within said slave device.
16. A method for communicating between a master device and a slave device connected via an inter-integrated circuit bus (I2C bus), said slave device comprising at least one internal device having an internal address, said method comprising the steps of:
- sending a message from said master device to said slave device over said I2C bus;
- said message comprising a command code to said addressed slave device, said command code comprising 8 bits, a 2 -bit subset of said 8 bits functioning as an indicator of a type of supplemental address that is being provided, wherein said 2-bit indicator being in a first state indicates that a 6-bit supplemental address that is used as a 6-bit internal address is being provided and said 2-bit indicator being in a second state indicates that a 6-bit supplemental address that is used as a 6-bit internal address for a direct command access operation is being provided;
- said slave device interpreting said supplemental address contained in said command code in accordance with said state of said two bit indicator; and
- said slave device determining an internal address for said slave device using said supplemental address.
17. The method of claim 16 wherein said communicating is selected from the group consisting of writing data to a location within said slave device and reading data from a location within said slave device.
18. A method for communicating between a master device and a slave device connected via an inter-integrated circuit bus (I2C bus), said slave device comprising at least one internal device having an internal address, said method comprising the steps of:
- sending a message from said master device to said slave device over said I2C bus;
- said message comprising a command code to said addressed slave device, said command code comprising 8 bits, a 2-bit subset of said 8 bits functioning as an indicator of a type of supplemental address that is being provided, wherein said 2-bit indicator being in a first state indicates that a 6-bit supplemental address that is used as part of a communicated 14-bit internal address is being provided, said 2-bit indicator being in a second state indicates that a 6-bit supplemental address that is used as a 6-bit internal address is being provided, and said 2-bit indicator being in a third state indicates that a 6-bit supplemental address that is used as a 6-bit internal address for a direct command access operation is being provided;
- said slave device interpreting said supplemental address contained in said command code in accordance with said state of said two bit indicator; and
- said slave device determining an internal address for said slave device using said supplemental address.
19. The method of claim 18 wherein said communicating is selected from the group consisting of writing data to a location within said slave device and reading data from a location within said slave device.
4209838 | June 24, 1980 | Alcorn et al. |
4715031 | December 22, 1987 | Crawford et al. |
5444847 | August 22, 1995 | Iitsuka |
5524253 | June 4, 1996 | Pham et al. |
5530436 | June 25, 1996 | Tabib et al. |
5559502 | September 24, 1996 | Schutte |
6260127 | July 10, 2001 | Olarig et al. |
6353908 | March 5, 2002 | Heinrich |
6356951 | March 12, 2002 | Gentry, Jr. |
6427216 | July 30, 2002 | El-Kik et al. |
6449289 | September 10, 2002 | Quicksall |
6467065 | October 15, 2002 | Mendez et al. |
6510484 | January 21, 2003 | Kim et al. |
6553439 | April 22, 2003 | Greger et al. |
6622188 | September 16, 2003 | Goodwin et al. |
6625124 | September 23, 2003 | Fan et al. |
6643269 | November 4, 2003 | Fan et al. |
6717956 | April 6, 2004 | Fan et al. |
6779046 | August 17, 2004 | Osuga |
6842806 | January 11, 2005 | Ervin |
20030126413 | July 3, 2003 | El-Kik et al. |
20040213274 | October 28, 2004 | Fan et al. |
20050172064 | August 4, 2005 | Krygier |
WO 2097642 | December 2002 | WO |
- 16K 12C Serial EEPROM (24AA16/24LC16B) from Microchip Technology Inc., 2002.
- 12C Facts from NXP founded by Philips Semiconductors, undated.
- PCA8581/PCA8581C 128×8 Bit EEPROM With 12C Bus Interface from Philips Semiconductors, Apr. 1997.
- The 12C Bus and How to Use It (Including Specifications), Philips Semiconductors, Apr. 1995.
- The 12 C-Bus Specification, Version 2.1, Jan. 2000, pp. 1-46.
Type: Grant
Filed: Nov 17, 2003
Date of Patent: Jun 12, 2007
Patent Publication Number: 20050108454
Assignee: Agere Systems Inc. (Allentown, PA)
Inventors: Thomas E. Baker (Wernersville, PA), Laurence Edward Bays (Allentown, PA), Tony S. El-Kik (Allentown, PA)
Primary Examiner: Khanh Dang
Attorney: Synnestvedt & Lechner LLP
Application Number: 10/715,746
International Classification: G06F 3/00 (20060101);