Dynamic addressing systems and methods in digital communication interfaces
Patent Information
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Filing Date
- 2022-04-11
- Publication Date
- 2026-08-14
AI Technical Summary
[0013]此外,根据例如用于设备地址标识的引脚或可编程位的数目,该已知的解决方案通常对唯一可寻址的从设备的数目有限制
Smart Images

Figure CN115203093B_ABST
Abstract
Description
Technical Field
[0001] This disclosure relates to dynamic addressing systems and methods operating in digital communication interfaces, particularly in serial interfaces, and even more particularly according to the I3C (Modified Inter-Integrated Circuits) protocol defined by the MIPI (Mobile Industrial Processor Interface) consortium. Background Technology
[0002] For example, in embedded systems, digital communication interfaces are typically used to enable digital communication between at least one master device or host device (e.g., a digital processor or controller) and several slave devices (e.g., sensor devices). The slave devices are coupled to the same digital communication bus or line and can be individually addressed by the master device.
[0003] Each slave device must be provided with a unique address to allow the master device to correctly address data communication with the same slave device.
[0004] Specifically, in known solutions, the master device is configured to assign a unique address to each slave device during an address allocation initialization step prior to data communication.
[0005] Problems can arise when multiple identical slave devices are coupled to the same communication bus (e.g., the I3C bus); in such cases, it can be difficult to distinguish the individual slave devices during initialization to allow the master device to assign a corresponding unique address.
[0006] For example, multiple identical slave devices can be the same sensor devices coupled to the same communication bus (i.e., sensors of the same type and manufacturer), redundant sensors, or sensors specifically designed for different functions. Typically, these sensors will have the same static address, necessitating a solution that allows them to be distinguished by the master device.
[0007] In known possible solutions, dedicated GPIO (General Purpose Input / Output) pins for each slave device are used to distinguish their static addresses. This is a simple but costly solution in terms of GPIO pins and PCB traces, and it is not scalable; the more slave devices there are, the more GPIO pins are required. For example, based on the availability of dedicated GPIO pins for each device, slave devices in an I2C protocol communication bus can have the same static address and up to 128 variations of that static address.
[0008] According to another known solution, one-time programmable (OTP) address change bits are used to define address changes for various slave devices during the design or manufacturing phase. This solution allows for the definition of some address changes, but incurs associated costs because each slave device requires dedicated address change bits and dedicated programming.
[0009] The I3C protocol provides a Dynamic Address Allocation (DAA) procedure that allows a slave device to be assigned a dynamic address by a master device and to modify the slave device's static address to an address chosen by the same master device.
[0010] According to the first solution of the I3C protocol, the dynamic address of each slave device is set based on the static address (usually an I2C static address) of the same slave device. However, as mentioned earlier, this static address is fixed, and especially when multiple identical devices are coupled to the same communication bus, it is difficult to make it different from one device to another.
[0011] According to the second solution of the I3C protocol, dynamic addressing is based on the slave device winning the address allocation round by arbitrating on the bus in open-drain mode, where the slave device arbitrates the PID (temporary identifier) value (e.g., a 48-bit value).
[0012] The PID value is a unique ID that allows the master device to distinguish various slave devices. This temporary ID can be randomly generated (using a random number generator) or fixed for each slave device, and includes the manufacturer ID, part ID, and instance ID (INSTID); the instance ID portion can be used to distinguish identical slave devices and can be defined using OTP programming or based on PIN variations.
[0013] Furthermore, the known solutions typically limit the number of uniquely addressable slave devices, depending on the number of pins or programmable bits used for device address identification, for example. Additionally, random number generators are generally not true generators and will be identical for devices from the same manufacturer, as true random number generators used to distinguish identical devices from a single manufacturer are both expensive and complex for small devices such as sensor devices. Summary of the Invention
[0014] In one embodiment, the digital communication system includes: a master device; and a plurality of slave devices, which are communicatively coupled to the master device via a shared data communication bus during operation. The slave devices are coupled together in a daisy-chain configuration during address allocation, wherein each slave device has a daisy-chain input and a daisy-chain output. The daisy-chain input of the first slave device is coupled to the daisy-chain enable output of the master device, and the daisy-chain inputs of subsequent slave devices are coupled to the daisy-chain outputs of previous slave devices in the daisy-chain configuration. The master device, during operation, assigns a corresponding dynamic address to each slave device from a list of different available dynamic addresses. In one embodiment, during the address allocation process, the slave devices are assigned different temporary identifier values based on the daisy-chain configuration, and the master device assigns different dynamic addresses based on these different temporary identifier values during operation. In one embodiment, the slave device has a cyclically incrementing internal counter and determines a corresponding temporary identifier value at the end of the address allocation process; and wherein a high value of the daisy chain input is designed to block the internal counter and is cyclically allocated to slave devices in the daisy chain configuration from the first slave device to the last slave device, the remaining slave devices having a low value of the daisy chain input, the low value being designed to enable the corresponding internal counter.
[0015] In one embodiment, the method includes: coupling a master device and a plurality of slave devices together via a shared communication bus; coupling the plurality of slave devices together in a daisy-chain configuration, each slave device having a daisy-chain input and a daisy-chain output, wherein the daisy-chain input of the first slave device of the plurality of slave devices is coupled to the daisy-chain enable output of the master device, and the daisy-chain inputs of subsequent slave devices of the plurality of slave devices are coupled to the daisy-chain output of the previous slave device in the daisy-chain configuration; and assigning a corresponding dynamic address to the slave device by the master device based on the slave device's position in the daisy-chain configuration. In one embodiment, the method includes assigning a corresponding different temporary identifier value to the slave device based on the slave device's position in the daisy-chain configuration, wherein the master device assigns the corresponding dynamic address based on the different temporary identifier value of the slave device.
[0016] In one embodiment, the master device includes: an interface that, in operation, couples the master device to a plurality of slave devices via a communication bus, the slave devices being coupled together in a daisy-chain configuration; a daisy-chain enable output that, in operation, couples the master device to a daisy-chain input of the first slave device in the daisy-chain configuration; a daisy-chain feedback input that, in operation, couples the master device to a daisy-chain output of the last slave device in the daisy-chain configuration; and control circuitry coupled to the interface, the daisy-chain enable output, and the daisy-chain feedback input, wherein, in operation, the control circuitry assigns a corresponding dynamic address to a slave device among the plurality of slave devices based on the slave device's corresponding position in the daisy-chain configuration. Attached Figure Description
[0017] To better understand this disclosure, exemplary embodiments thereof are now described only by way of non-limiting examples and with reference to the accompanying drawings, in which:
[0018] Figure 1 A schematic block diagram of a digital communication system configured for dynamic addressing according to one aspect of this disclosure is shown;
[0019] Figures 2A-2C The diagram illustrates the initial, intermediate, and final dynamic addressing operation states according to the first embodiment of this disclosure. Figure 1 Digital communication systems;
[0020] Figure 3 A first embodiment according to the present disclosure is shown. Figure 1 A flowchart of dynamic addressing operations performed by slave devices in a digital communication system;
[0021] Figure 4 A first embodiment according to the present invention is shown. Figure 1 A flowchart of dynamic addressing operations performed by the master device in a digital communication system;
[0022] Figures 5A-5C The diagram illustrates the initial, intermediate, and final dynamic addressing operation states according to a second embodiment of the present disclosure. Figure 1 Digital communication systems;
[0023] Figure 6 A second embodiment according to the present disclosure is shown. Figure 1 A flowchart of dynamic addressing operations performed by a slave device in a digital communication system; and
[0024] Figure 7 A second embodiment according to the present disclosure is shown. Figure 1 The flowchart shows the dynamic addressing operation performed by the master device in a digital communication system. Detailed Implementation
[0025] As will be discussed in detail, this disclosure provides a method for addressing multiple (even identical) slave devices on the same communication bus differently based on the master device’s definition of the daisy chain arrangement during the dynamic addressing initialization phase (preparation for data communication).
[0026] like Figure 1As shown, digital system 1 includes a master (or host) device 2, which communicates with several slave devices 4 via a digital communication bus 5 (in an example operating according to the I3C protocol). The digital communication bus 5 includes a data communication line DATA (for bidirectional data communication between slave devices and the master device) and a clock line CLK (carrying a clock signal for synchronization). As shown, the master device 2 includes an interface 22 that couples one or more processing cores 28, one or more memories 30, and one or more state machines 32 to the communication bus 5 during operation.
[0027] According to one aspect of this disclosure, during the dynamic addressing initialization phase, slave devices 4 are arranged by master devices 2 according to a dedicated daisy chain (or serial) arrangement, each slave device 4 having a daisy chain input DC_IN and a daisy chain output DC_OUT.
[0028] The daisy-chain input DC_IN of device 4 is typically coupled to the daisy-chain output DC_OUT of the previous device in the daisy-chain arrangement, except that the first daisy-chain input DC_IN of device 4 (device 0 in the example) is coupled to the daisy-chain enable output DC_EN24 of master device 2, and the last daisy-chain output DC_OUT of device 4 (device N in the example) is coupled to the daisy-chain feedback input FB_IN26 of the same master device 2. In other words, the daisy-chain input is provided by master device 2, and the last daisy-chain output is sent back to the same master device 2 as feedback.
[0029] Note that the daisy-chain input DC_IN of slave device 4 can correspond to the normally available set address (SA) input opin, which is used in known solutions to provide the setting of the same static address of slave device 4 (e.g., the most significant bit setting of the same static address); in addition, the daisy-chain output DC_OUT of slave device 4 can correspond to the interrupt output, which is used in normal operation to communicate interrupts from slave device 4 to master device 2 and / or other slave devices 4.
[0030] As will be discussed in detail, the daisy-chain output DC_OUT from device 4 will be used to allow setting the dynamic address of subsequent slave devices 4 in the daisy-chain arrangement.
[0031] In the first embodiment, the dynamic addressing solution utilizes the static address of device 4 to allocate the corresponding dynamic address, thereby providing an option to optimize the method for addressing multiple devices (even for the same device) with minimal modification and use of a single static address.
[0032] In the initial steps (such as) Figure 2AAs shown, the daisy-chain enable output DC_EN of master device 2 is set to "1" (digital high) or a fixed value connected to the internal power supply voltage (VDD). This causes the first slave device 4 (device 0) in the chain to have a daisy-chain input DC_IN connected to the daisy-chain enable output DC_EN, with a static address having a first configuration "SA1" and its set address bit (SA) having a high value.
[0033] All other daisy-chain inputs DC_IN of slave device 4 are connected to the daisy-chain output DC_OUT of the previous slave device, which drives a low value "0" (digital low), so their static addresses will have a second different configuration "SA0", with the set address bits having low values.
[0034] Master device 2 is then configured to assign a dynamic address to the first slave device 4 that is different from SA0 / SA1 (this dynamic address is obtained, for example, from the address list available to master device 2) (typically assigned to the only slave device 4 in the daisy chain arrangement that has a static address SA1 and has not yet been assigned a dynamic address).
[0035] It should be noted that the command "SETDASA" (used by the master device to assign a dynamic address to a slave device with a known static address) provided by the I3C protocol can be used by master device 2 to set a dynamic address starting from a known static address.
[0036] This operation allows the same static address SA1 to be reused to assign a dynamic address to the next slave device 4 in a daisy-chain arrangement.
[0037] In fact, such as Figure 2B As shown, once the dynamic address of the first slave device 0 is allocated, the daisy chain output DC_OUT of the same first slave device is driven to a high value "1" (digital high), causing the next slave device 4 in the chain (in this case the second slave device, device 1) to set its static address to "SA1".
[0038] like Figure 2B As shown, master device 2 has assigned a different dynamic address (also based on static address SA1) to the second slave device 1, causing the daisy-chain output DC_OUT of the same second slave device to be driven to a high value "1". This has shifted the static address SA1 to the third slave device 2 in the daisy-chain arrangement, and the third slave device 2 is then assigned its corresponding different dynamic address by the same master device 2.
[0039] Master device 2 checks the value of the daisy chain feedback input FB_IN to determine whether the dynamic addressing process is complete: if the value is "0", then the same master device 2 will continue the dynamic address allocation process (as mentioned earlier, in the iterative loop, the next slave device in the chain with static address SA1 is assigned a correspondingly different dynamic address); if the value is "1" (as... Figure 2C As shown in the figure, the master device 2 will determine that the dynamic address allocation process is complete and all slave devices 4 in the chain have received the corresponding different dynamic addresses.
[0040] Note that master device 2 can also use an internal incremental counter to verify the end of the dynamic addressing process by cross-checking the counter value with a known number of slave devices 4 coupled to digital communication bus 5; this may be useful for checking the correct connection of all slave devices 4 in a daisy chain arrangement and / or the presence of unknown devices inserted in the chain.
[0041] Figure 3 A schematic flowchart of the dynamic address allocation operation performed by slave device 4, which was discussed earlier, is shown.
[0042] As mentioned earlier, device 4 checks the value of the corresponding daisy chain input DC_IN in the first step 10.
[0043] If the value of this bit is "0", then as shown in step 11, the address bit is set to a low value (determining the static address as the second configuration "SA0"); if the value of this bit is "1", then as shown in step 12, the address bit is set to a high value (determining the first configuration "SA1" for the static address).
[0044] As shown in step 13, check from device 4 whether the corresponding dynamic address has been allocated.
[0045] If it has been assigned, in step 14, the corresponding daisy chain output DC_OUT is set to a high value "1"; if it has not been assigned, in step 15, the corresponding daisy chain output DC_OUT is set to a low value "0".
[0046] Therefore, the dynamic addressing solution discussed allows slave device 4 to send a dynamic address set flag or token to the output port coupled to the next slave device in the chain (via daisy-chain output DC_OUT); this flag is then used as the set address input for the static address of the next slave device in the chain. By doing this in an iterative loop, all slave devices 4 can be assigned different dynamic addresses using a single static address (determined by the set address bit SA1).
[0047] Figure 4 A schematic flowchart of the dynamic address allocation operation performed by the master device 2, which was discussed earlier, is shown.
[0048] In the first step 20, the master device 2 establishes a daisy chain arrangement for the slave device 4 and connects the first slave device's daisy chain input DC_IN to VDD (or a high logic level).
[0049] Then, as shown in iteration step 21, master device 2 initiates a loop of setting the dynamic address of slave device 4 in the chain using the “SETDASA” command provided by the I3C protocol, whereby slave device 4 has a static address set to the first configuration “SA1” in each iteration.
[0050] As mentioned earlier, master device 1 can have M lists (M is any suitable number, greater than or equal to the number N of slave devices 4 connected to digital communication bus 5) of different dynamic addresses D_ADD[m] available to be assigned to the corresponding slave device 4, where m is an index that is incremented in each loop iteration.
[0051] As shown in step 22, in each iteration, after allocating the dynamic address of slave device 4, master device 2 checks the daisy chain feedback input FB_IN to determine the status of the dynamic addressing process: if the value is "0", then the same master device 2 will continue the dynamic address allocation process (as mentioned before, using static address SA1 to allocate the corresponding different dynamic address of the next device in the chain), and return to step 21; if the value is "1", then master device 2 determines that the dynamic address allocation process is complete, as shown in step 24, all slave devices 4 in the chain have received the corresponding different dynamic address.
[0052] The second embodiment of the dynamic addressing solution envisions using the temporary ID (PID) value of the slave device 4 to assign correspondingly different dynamic addresses, especially when the same slave device is coupled to the digital communication bus 5, providing a simple and efficient method for setting variable parts (e.g., instance ID, INSTID, component) that distinguish the PID values.
[0053] Similarly, for this second embodiment, as Figure 5A As shown, master device 2 starts with the same daisy chain arrangement as slave device 4, and further connects the daisy chain input DC_IN of the first slave device device 0 to VDD (or a high logic level).
[0054] In this case, the high value of the daisy chain input DC_IN determines the counter inside the same slave device 4 for the first slave device device 0; the counter (starting from a count value of zero) determines the instance ID portion of the PID value of the same slave device 4, which will later be used for dynamic address configuration (e.g., according to the ENTDAA command provided by the I3C protocol, which will not be discussed in detail here).
[0055] Conversely, a low value for the daisy chain input DC_IN (because the daisy chain output DC_OUT of all previous devices is low or logic "0") enables the internal counter for all other slave devices 4 in the daisy chain arrangement, allowing the counter to increment its count value.
[0056] Master device 2 then sends a custom command on digital communication bus 5 to set the instance ID for slave device 4. If the number of slave devices 4 on digital communication bus 5 is less than or equal to 16 (alternatively, more bytes could be considered), the instance ID comprises, for example, two data bytes. These data bytes are useless (having "irrelevant" values), but the clock pulses sent during this data transmission are used to re-latch the daisy-chain input DC_IN to the daisy-chain output DC_OUT of slave device 4 and, if enabled, increment the same internal counter of slave device 4.
[0057] Therefore, after each clock cycle, the number of slave devices 4 with daisy-chain output DC_OUT "1" (and the internal counter paused) increases, as... Figure 5B The diagram illustrates an intermediate state during the dynamic address allocation process. These internal counters of device 4 will therefore stop at their respective increment counter values.
[0058] Once the last daisy-chain output DC_OUT from device 4 is "1", such as Figure 5C As shown, master device 2 then sends a command (e.g., the ENTDAA command according to the I3C protocol) to assign a dynamic address to slave device 4, which can be distinguished based on their temporary ID (PID) values.
[0059] Specifically, according to this solution, the instance ID field of the PID will differ for various slave devices based on the different increment values of the corresponding internal counters.
[0060] Note that if the instance ID field has 4 bits, then for this embodiment, up to 16 slave devices 4 can be provided with different dynamic addresses. If there are more slave devices 4, the internal counter will overflow, and devices after the 16th device will have the same instance ID field; in this case, according to one aspect of the invention, regardless of the value of the daisy chain input DC_IN, the daisy chain output DC_OUT will also be forced to "1" to forcibly interrupt the dynamic address allocation process (even before the full counter value is reached).
[0061] However, it is clear that, if needed, a higher number of bits could be used for the instance ID field of the internal counter and PID value, based on the number of slave devices 4.
[0062] Figure 6A schematic flowchart of the previously discussed operations for dynamic address allocation performed by slave device 4 according to the second embodiment is shown.
[0063] In the first step 30, each slave device 4 checks the digital communication bus 5 for the presence of a SETINSTID command (CCC) provided by the master device 2.
[0064] If the above command exists, then as shown in step 31, slave device 4 checks the value of the daisy chain input DC_IN; otherwise, the same slave device 4 waits for the instance ID command.
[0065] If the value of the daisy chain input DC_IN is high ("1"), the internal counter that determines the instance ID value is stopped (therefore, the same instance ID value will remain unchanged in all subsequent clock cycles) and the daisy chain output DC_OUT is set to high, step 32.
[0066] Conversely, if the value of the daisy chain input DC_IN is low, then check if the instance ID internal counter is full from device 4, step 33.
[0067] If the counter is full, the internal counter stops again, and at step 32 above, the daisy chain output DC_OUT is set to a high value.
[0068] Conversely, if the instance ID counter is not full, the same counter increments at step 34, and the value of the daisy chain output DC_OUT is driven low.
[0069] Figure 7 A schematic flowchart of the dynamic address allocation operation performed by the master device 2 in this case, as previously discussed, is shown.
[0070] In the first step 40, the master device 2 establishes a daisy chain arrangement for the slave device 4 and connects the daisy chain input DC_IN of the first slave device device 0 to VDD (or a high logic level).
[0071] Then, at step 41, the master device 2 sends a custom setup instance ID command (SETINSTID CCC) on the digital communication bus 5. In this example, the custom setup instance ID command has a maximum of two bytes of data (however, it is emphasized again that different amounts of data can be provided; for example, if there are a maximum of eight slave devices 4, only one byte is provided, or if more than a number of slave devices 4 are coupled to the digital communication bus 5, more than two bytes can be provided).
[0072] When the daisy chain output DC_OUT of the last slave device N is "1", the master device 2 then waits for the daisy chain feedback input FB_IN to have a high value, as shown in step 42. After that, the master device 2 sends a command to allocate a dynamic address using a previously determined temporary ID (PID) value (e.g., the standard ENTDAA command according to the I3C protocol) to distinguish and differentiate the slave device 4.
[0073] Since each slave device 4 has a different PID value (because each slave device 4 has a different instance ID, which is the result of different internal counter increments), the master device 2 will be able to allocate all the different dynamic addresses during the dynamic address allocation process.
[0074] The advantages of the proposed solution are clearly evident from the preceding description.
[0075] In any case, it is emphasized again that the disclosed dynamic addressing system and method allow even devices with the same characteristics to be assigned different dynamic addresses and used on the same digital communication bus, providing improved efficiency and flexibility compared to known solutions.
[0076] The proposed embodiments also allow slave devices to be numbered and identified based on their distance from the master device, which may help, for example, verify which device has blocked the connection in IoT applications.
[0077] The uniquely assigned dynamic address can also be used to determine the location of a device, based on the fact that the daisy chain sequence is known, and can be used to collect multiple data from different locations and uniquely identify the device based on their dynamic addresses.
[0078] Specifically, each instance ID in the solution according to the second embodiment can also be used as a location ID for IoT, industrial, and automotive applications.
[0079] In addition, the feedback line at the master device input can also be used as a security check for the master device to verify that dynamic addresses have been correctly assigned to all slave devices.
[0080] Specifically, in the first embodiment, the master device can verify that the expected number of devices programmed during the initialization phase has been reached.
[0081] In the second embodiment, the master device receives feedback several clock cycles after the instance ID setting command; by counting the clock and comparing the value with the number of slave devices with assigned dynamic addresses (e.g., using the ENTDAA procedure), the master device can verify that the correct number of devices are present on the bus, and that, for example, no device is secretly disrupting communication on the bus.
[0082] The ability to allocate dynamic addresses in the I3C protocol, combined with its speed and flexibility, makes this embodiment applicable to multiple application areas; to achieve this feature, the master device can use multiple devices with minimal programming and customization.
[0083] Furthermore, it is clear that modifications and changes may be made to the content described and illustrated herein without departing from the scope of this disclosure.
[0084] Specifically, it should be emphasized that embodiments of this disclosure can also advantageously implement other digital interface protocols (different from the I3C protocol) for which dynamic addresses need to be assigned to several (or even identical) slave devices coupled to the same digital communication bus.
[0085] A digital communication system (1) can be summarized as including: a master device (2) and a plurality of slave devices (4) communicatively coupled to the master device (2) via a shared data communication bus (5), wherein during the address allocation process, the master device (2) is configured to assign different corresponding dynamic addresses to the slave devices (4) to address the slave devices (4) for data communication, characterized in that the slave devices (4) are designed to be arranged in a daisy-chain configuration during the address allocation process, wherein each slave device (4) has a daisy-chain input (DC_IN) and a daisy-chain output (DC_OUT), the daisy-chain input of the slave device is coupled to the daisy-chain output of the previous slave device in the daisy-chain configuration, the daisy-chain input of the first slave device is coupled to the daisy-chain enable output (DC_EN) of the master device (2), and the master device (2) is configured to assign corresponding dynamic addresses to the slave devices (4) based on the arrangement of the slave devices in the daisy-chain configuration.
[0086] The daisy chain input (DC_IN) can be designed to set the static address (SA) of the slave device (4); and the master device (2) can be configured to allocate the corresponding dynamic address based on the static address of the slave device (4).
[0087] The high value of the daisy chain input (DC_IN) can be designed to set a first static address (SA1) for the corresponding slave device (4), and can be cyclically assigned to slave devices in a daisy chain configuration from the first slave device to the last slave device. The remaining slave devices (4) have a low value of the daisy chain input (DC_IN), which can be designed to set a second different static address (SA0). The master device (2) can be configured to assign a correspondingly different dynamic address to the slave device (4) in each cycle of the assumed first static address (SA1), the dynamic address being different from the first and second static addresses.
[0088] The master device (2) can be configured to set the daisy chain input (DC_IN) of the first slave device (4) to a high value by driving the daisy chain enable output (DC_EN) in the initial step of the address allocation process; and the slave device (4) assigned a dynamic address can be configured to drive the corresponding daisy chain output (DC_OUT) to a high level, thereby setting the daisy chain input (DC_IN) of the subsequent slave devices (4) in the daisy chain arrangement to a high value.
[0089] The master device (2) can be configured to assign a corresponding dynamic address to each slave device (4) from a list of different available dynamic addresses.
[0090] During the address allocation process, the slave device (4) can be assigned different temporary identifier values (PIDs) based on the arrangement in the daisy chain configuration; and the master device (2) can be configured to assign different dynamic addresses based on different temporary identifier values.
[0091] The slave device (4) may have a cyclically incrementing internal counter and determine the corresponding temporary identifier value at the end of the address allocation process; and the high value of the daisy chain input (DC_IN) may be designed to block the internal counter and may be cyclically allocated to the slave device (4) in a daisy chain configuration from the first slave device to the last slave device, while the remaining slave devices (4) have a low value of the daisy chain input (DC_IN), which may be designed to enable the corresponding internal counter.
[0092] The master device (2) can be configured to set the daisy chain input (DC_IN) of the first slave device (4) to a high value by driving the daisy chain enable output (DC_EN) in the initial step of the address allocation process; and the slave device (4) with a high daisy chain input can be configured to drive the corresponding daisy chain output (DC_OUT) to a high level, thereby setting the daisy chain input (DC_IN) of the subsequent slave devices (4) in the daisy chain arrangement to a high value.
[0093] The internal counter of the slave device (4) can be designed to determine the instance ID portion of the temporary identifier value (PID) of the slave device (4); and the master device (2) can be configured to use the ENTDAA command provided by the I3C protocol to determine the corresponding dynamic address based on different temporary identifier values.
[0094] According to the daisy-chain layout of the system, the daisy-chain output (DC_OUT) of the last slave device (4) can be coupled to the daisy-chain feedback input (FB_IN) of the master device (2); and the master device (2) can be configured to check the value of the daisy-chain feedback input (FB_IN) to determine whether the dynamic addressing process is complete.
[0095] The master device (2) can be configured to check the value of the daisy chain feedback input (FB_IN) to further verify that the dynamic address has been correctly assigned to all slave devices (4) coupled to the digital communication bus (5).
[0096] The assigned dynamic addresses can be designed to provide location information of the slave device (4) based on their arrangement in the daisy chain configuration.
[0097] The digital communication bus (5) can be configured to operate according to the I3C protocol.
[0098] The dynamic addressing method in the digital communication system (1) can be summarized as including a master device (2) and multiple slave devices (4) that are coupled to the master device (2) through a shared data communication bus (5).
[0099] The method includes, during the address allocation process, the master device (2) assigns different corresponding dynamic addresses to the slave device (4) to address the slave device (4) for data communication.
[0100] The feature is that, during the address allocation process, the slave devices (4) are arranged in a daisy-chain configuration, wherein each slave device (4) has a daisy-chain input (DC_IN) and a daisy-chain output (DC_OUT), the daisy-chain input of the slave device is coupled to the daisy-chain output of the previous slave device in the daisy-chain configuration, and the daisy-chain input of the first slave device is coupled to the daisy-chain enable output (DC_EN) of the master device (2).
[0101] In this case, the master device (2) assigns the corresponding dynamic address to the slave device (4) based on their arrangement in the daisy chain configuration.
[0102] The daisy-chain input (DC_IN) can be designed to set the static address (SA) of the slave device (4); and the corresponding dynamic address assigned by the master device (2) can be based on the static address of the slave device (4).
[0103] During the address allocation process, different temporary identifier values (PIDs) are assigned to slave devices (4) based on the arrangement in the daisy chain configuration; and different dynamic addresses can be assigned by master devices (2) based on different temporary identifier values.
[0104] In one embodiment, the digital communication system includes: a master device; and a plurality of slave devices, which are communicatively coupled to the master device via a shared data communication bus during operation. During an address allocation process, the slave devices are coupled together in a daisy-chain configuration, wherein each slave device has a daisy-chain input and a daisy-chain output. The daisy-chain input of the first slave device is coupled to the daisy-chain enable output of the master device, and the daisy-chain inputs of subsequent slave devices are coupled to the daisy-chain outputs of previous slave devices in the daisy-chain configuration. The master device, during operation, assigns a corresponding dynamic address to each slave device based on the arrangement of the slave devices in the daisy-chain configuration. In one embodiment, the daisy-chain inputs of the plurality of slave devices are static address set bits of the slave devices, and the master device assigns a corresponding dynamic address based on the static address of the slave device during operation. In one embodiment, a high value of the daisy-chain input sets a first static address for the corresponding slave device, and slave devices are cyclically assigned in a daisy-chain configuration starting from the first slave device and ending with the last slave device, while the remaining slave devices have low values of the daisy-chain input that set a second, different static address; and wherein the master device, in operation, assigns a corresponding, different dynamic address to the slave device in each cycle assuming the first static address, the dynamic address being different from the first and second static addresses. In one embodiment, the master device, in operation, sets the daisy-chain input of the first slave device high in the initial step of the address allocation process by driving the daisy-chain enable output; and wherein the first slave device, having been assigned a dynamic address, drives the daisy-chain output of the first slave device high, thereby setting the daisy-chain inputs of subsequent slave devices in the daisy-chain configuration high. In one embodiment, the master device, in operation, assigns a corresponding dynamic address to each slave device from a list of different available dynamic addresses. In one embodiment, during the address allocation process, slave devices are assigned correspondingly different temporary identifier values based on the arrangement of the daisy-chain configuration, and the master device, in operation, assigns different dynamic addresses based on different temporary identifier values. In one embodiment, the slave device has a cyclically incrementing internal counter that determines a corresponding temporary identifier value at the end of the address allocation process; and wherein a high value of the daisy-chain input is designed to block the internal counter and is cyclically allocated to slave devices in a daisy-chain configuration starting from the first slave device and ending with the last slave device, while the remaining slave devices have low values of the daisy-chain input, which are designed to enable the corresponding internal counter. In another embodiment, the master device sets the daisy-chain input of the first slave device high in the initial step of the address allocation process by driving a daisy-chain enable output, and wherein a slave device with a high daisy-chain input drives the corresponding daisy-chain output high in operation, thereby setting the daisy-chain inputs of subsequent slave devices in the daisy-chain configuration high.In one embodiment, the slave device's internal counter is designed to determine the instance ID portion of the slave device's temporary identifier value; and the master device is configured to utilize the ENTDAA command provided by the I3C protocol to determine the corresponding different dynamic addresses based on different temporary identifier values. In one embodiment, according to the daisy-chain arrangement, the daisy-chain output of the last slave device is coupled to the master device's daisy-chain feedback input; and the master device checks the value of the daisy-chain feedback input during operation to determine whether the dynamic addressing process is complete. In one embodiment, the master device checks the value of the daisy-chain feedback input during operation to verify that the dynamic address has been correctly assigned to all slave devices coupled to the digital communication bus. In one embodiment, the assigned dynamic address provides slave device location information based on the slave devices' arrangement in the daisy-chain configuration. In one embodiment, the digital communication bus operates according to the I3C protocol during operation.
[0105] In one embodiment, the method includes: coupling a master device and a plurality of slave devices together via a shared communication bus; coupling the plurality of slave devices together in a daisy-chain configuration, each slave device having a daisy-chain input and a daisy-chain output, wherein the daisy-chain input of the first slave device of the plurality of slave devices is coupled to the daisy-chain enable output of the master device, and the daisy-chain inputs of subsequent slave devices of the plurality of slave devices are coupled to the daisy-chain outputs of previous slave devices in the daisy-chain configuration; and assigning a corresponding dynamic address to the slave device by the master device based on the slave device's position in the daisy-chain configuration. In one embodiment, the daisy-chain input is a static address setting input of the slave device, and the corresponding dynamic address is assigned by the master device based on the slave device's static address. In another embodiment, the method includes assigning a corresponding different temporary identifier value to the slave device based on the slave device's position in the daisy-chain configuration, wherein the corresponding dynamic address is assigned by the master device based on the different temporary identifier value of the slave device.
[0106] In one embodiment, the master device includes: an interface that, in operation, couples the master device to a plurality of slave devices via a communication bus, the slave devices being coupled together in a daisy-chain configuration; a daisy-chain enable output that, in operation, couples the master device to a daisy-chain input of the first slave device in the daisy-chain configuration; a daisy-chain feedback input that, in operation, couples the master device to a daisy-chain output of the last slave device in the daisy-chain configuration; and control circuitry coupled to the interface, the daisy-chain enable output, and the daisy-chain feedback input, wherein, in operation, the control circuitry assigns a corresponding dynamic address to a slave device among the plurality of slave devices based on the slave device's corresponding position in the daisy-chain configuration. In one embodiment, the daisy-chain input of the first slave device is a static address setting input of the first slave device, the daisy-chain input of the second slave device is a static address setting input of the second slave device and is coupled to the daisy-chain output of the first slave device, and the assignment of the corresponding dynamic address is based on the static address of the slave device. In one embodiment, allocating a corresponding dynamic address includes: assigning a corresponding temporary identifier value to a slave device among a plurality of slave devices based on the slave device's position in the daisy-chain configuration; and allocating a corresponding dynamic address based on the corresponding temporary identifier value of the slave device. In one embodiment, assigning a corresponding temporary identifier value to a slave device among a plurality of slave devices includes sequentially disabling counters of the plurality of slave devices. In one embodiment, allocating a corresponding dynamic address based on the corresponding temporary identifier value of a slave device includes allocating a corresponding dynamic address in response to an indication received via a daisy-chain feedback input that the allocation of a corresponding temporary identifier value to a slave device has been completed.
[0107] Some embodiments may take the form of or include a computer program product. For example, according to one embodiment, a computer-readable medium is provided, which includes a computer program adapted to perform one or more of the methods or functions described above. The medium may be a physical storage medium that is read by a suitable driving device or via a suitable connection, such as, for example, a read-only memory (ROM) chip, or a disk, such as a digital multifunction disc (DVD-ROM), a compact disc (CD-ROM), a hard disk, a memory, a network, or a portable media article, including encoding with one or more barcodes or other related codes stored on one or more such computer-readable media and readable by a suitable reader device.
[0108] Furthermore, in some embodiments, some or all of the methods and / or functions may be implemented or provided in other ways, such as at least in part in firmware and / or hardware, including but not limited to one or more application-specific integrated circuits (ASICs), digital signal processors, discrete circuits, logic gates, standard integrated circuits, controllers (e.g., by executing appropriate instructions, and including microcontrollers and / or embedded controllers), field-programmable gate arrays (FPGAs), complex programmable logic devices (CPLDs), and devices employing RFID technology and various combinations thereof.
[0109] The various embodiments described above can be combined to provide further embodiments. If desired, aspects of the embodiments can be modified to incorporate concepts from various patents, applications, and publications to provide even more advanced embodiments.
[0110] These and other changes can be made to the embodiments based on the detailed description above. Generally, the terminology used in the appended claims should not be construed as limiting the claims to the specific embodiments disclosed in the specification and claims, but should be interpreted to include all possible embodiments and the full scope of equivalents claimed in the claims. Therefore, the claims are not limited by this disclosure.
Claims
1. A digital communication system, comprising: Main equipment; as well as Multiple slave devices, which are communicatively coupled to the master device via a shared data communication bus during operation, are coupled together in a daisy-chain configuration during the address allocation process. Each slave device has a daisy-chain input and a daisy-chain output. The daisy-chain input of the first slave device is coupled to the daisy-chain enable output of the master device, and the daisy-chain inputs of subsequent slave devices are coupled to the daisy-chain outputs of previous slave devices in the daisy-chain configuration. The master device, in operation, assigns a corresponding dynamic address to the slave device based on the arrangement of the slave devices in the daisy-chain configuration, and the assignment of the corresponding dynamic address to the slave device includes selectively disabling the slave device counter among the plurality of slave devices.
2. The system according to claim 1, wherein the daisy-chain input of the plurality of slave devices is a static address setting bit of the slave device, and the master device allocates the corresponding dynamic address based on the static address of the slave device during operation.
3. The system of claim 2, wherein in operation, the high value of the daisy-chain input sets a first static address for the corresponding slave device, and in the daisy-chain configuration from the first slave device to the last slave device among the plurality of slave devices, the high value is cyclically assigned to the slave devices, the remaining slave devices among the plurality of slave devices having low values of the daisy-chain input, the low values setting different second static addresses; and wherein the master device, in operation, assigns a correspondingly different dynamic address to the slave device in each cycle assuming the first static address, the dynamic address being different from the first static address and the second static address.
4. The system of claim 3, wherein the master device, in operation, sets the daisy-chain input of the first slave device to the high value in the initial step of the address allocation process by driving the daisy-chain enable output; and wherein the first slave device, having been assigned a dynamic address, drives the daisy-chain output of the first slave device to a high level in operation, thereby setting the daisy-chain input of the subsequent slave devices in the daisy-chain configuration to the high value.
5. The system of claim 3, wherein the master device assigns a corresponding dynamic address to each slave device from a list of different available dynamic addresses during operation.
6. The system of claim 1, wherein during the address allocation process, the slave device is assigned a different temporary identifier value based on the arrangement of the daisy chain configuration, and the master device allocates different dynamic addresses based on the different temporary identifier values during operation.
7. The system of claim 1, wherein, according to the daisy-chain arrangement, the daisy-chain output of the last slave device is coupled to the daisy-chain feedback input of the master device; and wherein the master device checks the value of the daisy-chain feedback input during operation to determine whether the address allocation process is complete.
8. The system of claim 7, wherein the master device checks the value of the daisy-chain feedback input during operation to verify that the dynamic address has been correctly assigned to all slave devices coupled to the data communication bus.
9. The system of claim 1, wherein the assigned dynamic address provides the location information of the slave device based on the arrangement of the slave device in the daisy-chain configuration.
10. The system of claim 1, wherein the data communication bus operates in accordance with the I3C protocol during operation.
11. A digital communication system, comprising: Main equipment; as well as Multiple slave devices, which are communicatively coupled to the master device via a shared data communication bus during operation, are coupled together in a daisy-chain configuration during the address allocation process. Each slave device has a daisy-chain input and a daisy-chain output. The daisy-chain input of the first slave device is coupled to the daisy-chain enable output of the master device, and the daisy-chain inputs of subsequent slave devices are coupled to the daisy-chain outputs of previous slave devices in the daisy-chain configuration. The master device, during operation, assigns a corresponding dynamic address to the slave device based on the arrangement of the slave devices in the daisy-chain configuration; During the address allocation process, the slave device is assigned a different temporary identifier value based on the daisy-chain configuration, and the master device allocates different dynamic addresses based on the different temporary identifier values during operation. The slave device has a cyclically incrementing internal counter, and the internal counter determines the corresponding temporary identifier value at the end of the address allocation process; and the high value of the daisy chain input is designed to block the internal counter and is cyclically allocated to the slave device in the daisy chain configuration from the first slave device to the last slave device, the remaining slave devices having low values of the daisy chain input, the low values being designed to enable the corresponding internal counter.
12. The system of claim 11, wherein the master device, in operation, sets the daisy-chain input of the first slave device to the high value in the initial step of the address allocation process by driving the daisy-chain enable output, and wherein the slave device having the high value of the daisy-chain input drives the corresponding daisy-chain output to a high level in operation, thereby setting the daisy-chain input of the subsequent slave devices in the daisy-chain configuration to the high value.
13. The system of claim 11, wherein the internal counter of the slave device is designed to determine the instance ID portion of the temporary identifier value of the slave device; and wherein the master device is configured to determine different dynamic addresses based on different temporary identifier values using the ENTDAA command provided by the I3C protocol.
14. A method for digital communication, comprising: The master device and multiple slave devices are coupled together by sharing a communication bus; The plurality of slave devices are coupled together in a daisy-chain configuration, each slave device having a daisy-chain input and a daisy-chain output, the daisy-chain input of the first slave device of the plurality of slave devices being coupled to the daisy-chain enable output of the master device, and the daisy-chain inputs of subsequent slave devices of the plurality of slave devices being coupled to the daisy-chain output of the previous slave device in the daisy-chain configuration; The master device assigns a corresponding dynamic address to the slave device based on the slave device's position in the daisy chain configuration, wherein assigning the corresponding dynamic address to the slave device includes selectively disabling the slave device's counter among the plurality of slave devices.
15. The method of claim 14, wherein the daisy-chain input is a static address setting input of the slave device, and the allocation of the corresponding dynamic address by the master device is based on the static address of the slave device.
16. The method of claim 14, comprising: Based on the position of the slave device in the daisy chain configuration, corresponding different temporary identifier values are assigned to the slave device, wherein the master device assigns the corresponding dynamic address based on the different temporary identifier values of the slave device.
17. A master device for digital communication, comprising: An interface that, during operation, couples the master device to a plurality of slave devices via a communication bus, the plurality of slave devices being coupled together in a daisy-chain configuration; A daisy-chain enable output that, during operation, couples the master device to the daisy-chain input of the first slave device in the daisy-chain configuration; A daisy-chain feedback input that, during operation, couples the master device to the daisy-chain output of the last slave device in the daisy-chain configuration; as well as A control circuit device coupled to the interface, the daisy-chain enable output, and the daisy-chain feedback input, wherein the control circuit device, in operation, assigns a corresponding dynamic address to one of the plurality of slave devices based on the corresponding position of the slave device in the daisy-chain configuration, wherein assigning a corresponding dynamic address to the slave device includes selectively disabling the counters of the slave devices among the plurality of slave devices.
18. The main equipment according to claim 17, wherein: The daisy-chain input of the first slave device is the static address setting input of the first slave device, the daisy-chain input of the second slave device is the static address setting input of the second slave device and is coupled to the daisy-chain output of the first slave device, and the allocation of the corresponding dynamic address is based on the static address of the slave device.
19. The master device of claim 17, wherein allocating the corresponding dynamic address comprises: Based on the position of the slave device in the daisy-chain configuration, a corresponding temporary identifier value is assigned to the slave device among the plurality of slave devices; as well as Based on the corresponding temporary identifier value of the slave device, a corresponding dynamic address is allocated.
20. The master device of claim 19, wherein assigning a corresponding temporary identifier value to one of the plurality of slave devices comprises sequentially disabling the counters of the plurality of slave devices.
21. The master device of claim 20, wherein allocating a corresponding dynamic address based on the corresponding temporary identifier value of the slave device includes allocating the corresponding dynamic address in response to an instruction received via the daisy-chain feedback input to complete the allocation of the corresponding temporary identifier value to the slave device.
Citation Information
Patent Citations
Identifying and configuring multiple smart devices on a CAN bus
CN107592211A
Synchronization, Re-Synchronization, Addressing, and Serialized Signal Processing for Daisy-Chained Communication Devices
US20120243559A1