The present invention is related to serial communications buses, and more particularly, to an electronic device for performing communication with a master device via a serial communications bus and a method for performing assignment of an identifier on the electronic device.
When a master device is connected to multiple slave devices via a serial communications bus, each of these slave devices typically needs to determine its own device identifier according to a voltage level of a selection pin, in order to allow the master device to determine which slave device is to be accessed by an instruction when sending the instruction with the aid of these device identifiers. For a chip product with a fewer number of pins, as the selection pin mentioned above occupies one pin of the chip product, some functions will be sacrificed and unable to be implemented. If implementing all functions is desired, the number of package pins will need to be increased to solve the aforementioned problems, but costs will be increased.
Thus, there is a need for a novel method and associated architecture to make the master device communicate with the slave devices via the serial communications bus without the aid of the selection pin, thereby solving the problem of the related art.
An objective of the present invention is to provide an electronic device for performing communication with a master device via a serial communications bus, and a method for performing assignment of an identifier on the electronic device, which can solve the problem of the related art without introducing any side effect or in a way that is less likely to introduce side effects.
At least one embodiment of the present invention provides an electronic device for performing communication with a master device via a serial communications bus. The electronic device comprises a clock terminal, a data terminal and a determination circuit, wherein the determination circuit is coupled to the clock terminal and the data terminal. The clock terminal is configured to receive a first signal from the master device, and the data terminal is configured to receive a second signal from the master device. In addition, the determination circuit is configured to determine whether a time point of pulling down the first signal is earlier than a time point of pulling down the second signal, in order to generate a determination result. More particularly, the master device is coupled to multiple slave devices via the serial communications bus, the multiple slave devices comprise the electronic device, and assignment of an identifier of the electronic device is controlled according to the determination result.
At least one embodiment of the present invention provides a method for performing assignment of an identifier on an electronic device. The master device is coupled to multiple slave devices via a serial communications bus, wherein the multiple slave devices comprise the electronic device. The method comprises: utilizing a clock terminal of the electronic device to receive a first signal from the master device; utilizing a data terminal of the electronic device to receive a second signal from the master device; utilizing a determination circuit of the electronic device to determine whether a time point of pulling down the first signal is earlier than a time point of pulling down the second signal, in order to generate a determination result; and controlling assignment of an identifier of the electronic device according to the determination result.
The electronic device and the method provided by the embodiments of the present invention can make a data terminal and a clock terminal of a certain slave device be reversely connected, thereby making a detected start condition (e.g. timing of signals being pulled down) of this slave device different from other slave devices. When this slave device detects that the data terminal and the clock terminal thereof are reversely connected, a corresponding identifier assignment mechanism can be triggered. Thus, this slave device can complete the identifier assignment without using an additional selection pin.
These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment that is illustrated in the various figures and drawings.
In this embodiment, the slave device 100 may further comprise a determination circuit 110, a switching circuit 120 and a processing circuit 130 in addition to the clock terminal SCL_S2 and the data terminal SDA_S2. The determination circuit 110 may be coupled to the clock terminal SCL_S2 and the data terminal SDA_S2, the switching circuit 120 may be coupled to the determination circuit 110, and the processing circuit 130 may be coupled to the switching circuit 120. In this embodiment, the clock terminal SCL_S2 of the slave device 100 may receive a data signal transmitted via the data channel VDA from the master device 20, and the data terminal SDA_S2 of the slave device 100 may receive a clock signal transmitted via the clock channel VCL from the master device 20. The determination circuit 110 is configured to determine whether a time point of pulling down the data signal is earlier than a time point of pulling down the clock signal, in order to generate a determination result, where assignment of an identifier (ID) such as a device ID of the slave device 100 is controlled according to the determination result. In addition, the switching circuit 120 is configured to selectively switch utilization of a signal received by the clock terminal SCL_S2 and a signal received by the data terminal SDA_S2. For example, the switching circuit 120 may take one of the signal received by the clock terminal SCL_S2 and the signal received by the data terminal SDA_S2 as a clock signal for being utilized by the processing circuit 130, and take the other signal as a data signal for being utilized by the processing circuit 130. In some embodiments, the architecture of the slave device 50 may be the same as or different from the slave device 100 (e.g. the slave device 50 may comprise circuits that are the same or similar to the determination circuit 110, the switching circuit 120 and the processing circuit 130 for performing corresponding operations), but the present invention is not limited thereto.
In comparison with the slave device 50, as the clock terminal SCL_S2 of the slave device 100 is coupled to the data terminal SDA of the master device 20 and the data terminal SDA_S2 of the slave device 100 is coupled to the clock terminal SCL of the master device 20, the slave device 100 may detect that a time point of pulling down a signal transmitted from the data terminal SDA to the clock terminal SCL_S2 is earlier than a time point of pulling down a signal transmitted from the clock terminal SCL to the data terminal SDA_S2, and the slave device 100 may accordingly select the ID 0x58 to be the ID of the slave device 100. In addition, as the time point of pulling down the signal transmitted from the data terminal SDA to the clock terminal SCL_S2 is earlier than the time point of pulling down the signal transmitted from the clock terminal SCL to the data terminal SDA_S2, the slave device 100 (e.g. the switching circuit 120 therein) may switch utilization of the signal received by the clock terminal SCL_S2 and the signal received by the data terminal SDA_S2, in order to take the signal received by the clock terminal SCL_S2 as a data signal and take the signal received by the data terminal SDA_S2 as a clock signal.
In Step S400, the slave device 100 may determine whether the I2C bus is powered on (e.g. whether the supply voltage VDD is turned on). If the determination result shows “Yes”, the working flow proceeds with Step S410. If the determination result shows “No”, the working flow proceeds with Step S400.
In Step S410, the slave device 100 may determine whether a time point of pulling down a voltage level of the data terminal SDA_S2 is earlier than a time point of pulling down a voltage level of the clock terminal SCL_S2 (labeled “SDA_S2 pulled down first, SCL_S2 pulled down later?” in
In Step S420, the slave device 100 may determine whether a signal pattern from the I2C bus is complete (labeled “I2C pattern complete?” in
In Step S430, the slave device 100 may utilize the ID 0x5A to be the ID of the slave device 100 (labeled “Utilize 0x5A as ID” in
In Step S440, the slave device 100 may determine whether a time period starting from detecting the start condition has expired (labeled “Expired?” in
In Step S450, the slave device 100 may determine whether the time point of pulling down the voltage level of the clock terminal SCL_S2 is earlier than the time point of pulling down the voltage level of the data terminal SDA_S2 (labeled “SCL_S2 pulled down first, SDA_S2 pulled down later?” in
In Step S460, the slave device 100 may determine whether the signal pattern from the I2C bus is complete (labeled “I2C pattern complete?” in
In Step S470, the slave device 100 may utilize the ID 0x58 to be the ID of the slave device 100 (labeled “Utilize 0x58 as ID” in
In Step S480, the slave device 100 may determine whether the time period starting from detecting the start condition has expired (labeled “Expired?” in
In Step S490, the slave device 100 may release the control of the I2C bus (labeled “Release I2C bus” in
In comparison with the slave device 50, as the clock terminal SCL_S2 of the slave device 100 is coupled to the data terminal SDA of the master device 20 and the data terminal SDA_S2 of the slave device 100 is coupled to the clock terminal SCL of the master device 20, the slave device 100 may detect that the time point of pulling down the signal transmitted from the data terminal SDA to the clock terminal SCL_S2 is earlier than the time point of pulling down the signal transmitted from the clock terminal SCL to the data terminal SDA_S2, and the slave device 100 may utilize the assigned ID sent from the master device 20 (more particularly, an ID carried by a first instruction sent from the master device 20 after the system 10 is powered on) to be the ID of the slave device 100. In addition, as the time point of pulling down the signal transmitted from the data terminal SDA to the clock terminal SCL_S2 is earlier than the time point of pulling down the signal transmitted from the clock terminal SCL to the data terminal SDA_S2, the slave device 100 (e.g. the switching circuit 120 therein) may switch the utilization of the signal received by the clock terminal SCL_S2 and the signal received by the data terminal SDA_S2, in order to take the signal received by the clock terminal SCL_S2 as a data signal and take the signal received by the data terminal SDA_S2 as a clock signal.
In Step S610, the slave device 100 may determine whether the I2C bus is powered on (e.g. whether the supply voltage VDD is turned on). If the determination result shows “Yes”, the working flow proceeds with Step S620. If the determination result shows “No”, the working flow proceeds with Step S610.
In Step S620, the slave device 100 may receive a first I2C bus instruction sent from the master device 20, and the I2C bus instruction carries an ID which is not utilized (labeled “Master sends first I2C instruction which carries ID without being utilized” in
In Step S630, the slave device 100 may determine whether the time point of pulling down the voltage level of the clock terminal SCL_S2 is earlier than the time point of pulling down the voltage level of the data terminal SDA_S2 (labeled “SCL_S2 pulled down first, SDA_S2 pulled down later?” in
In Step S640, the slave device may determine whether the signal pattern from the I2C bus is complete (labeled “I2C pattern complete?” in
In Step S650, the slave device 100 may utilize the ID sent from the master device 20 to be the ID of the slave device 100 (labeled “Slave utilizes ID sent from master” in
In Step S660, the slave device 100 is ready to be accessed by the master device 20 (labeled “Ready to be accessed by master” in
In Step S670, the slave device 100 may determine whether the time period starting from detecting the start condition has expired (labeled “Expired?” in
In Step S680, the slave device 100 may release the control of the I2C bus (labeled “Release I2C bus” in
In Step S710, the electronic device may utilize a clock terminal thereof to receive a first signal from the master device.
In Step S720, the electronic device may utilize a data terminal thereof to receive a second signal from the master device.
In Step S730, the electronic device may utilize a determination circuit thereof to determine whether a time point of pulling down the first signal is earlier than a time point of pulling down the second signal, in order to generate a determination result.
In Step S740, the electronic device may control assignment of an identifier of the electronic device according to the determination result.
To summarize, the embodiments of the present invention can control the assignment of the ID according to whether the clock terminal and the data terminal of the slave device are reversely connected or not, and more particularly, may utilize the default candidate ID or the ID sent from the master device to determine the ID of the slave device. Thus, the ID of the slave device can be set without using any additional selection pin. In addition, the embodiments of the present invention will not greatly increase additional costs. Thus, the present invention can solve the problem without introducing any side effect or in a way that is less likely to introduce side effects.
Those skilled in the art will readily observe that numerous modifications and alterations of the device and method may be made while retaining the teachings of the invention. Accordingly, the above disclosure should be construed as limited only by the metes and bounds of the appended claims.
Number | Date | Country | Kind |
---|---|---|---|
112113443 | Apr 2023 | TW | national |