Jump to content
 







Main menu
   


Navigation  



Main page
Contents
Current events
Random article
About Wikipedia
Contact us
Donate
 




Contribute  



Help
Learn to edit
Community portal
Recent changes
Upload file
 








Search  

































Create account

Log in
 









Create account
 Log in
 




Pages for logged out editors learn more  



Contributions
Talk
 



















Contents

   



(Top)
 


1 Interface  





2 Data encoding  



2.1  Bit encoding  





2.2  Data words  



2.2.1  Acknowledge sequence  









3 Command structure  



3.1  Standby pulse  





3.2  Start header  





3.3  Device address  



3.3.1  8-bit addressing  





3.3.2  12-bit addressing  







3.4  Command byte  







4 Bus Parasitic Power  





5 References  





6 External links  














UNI/O







Add links
 









Article
Talk
 

















Read
Edit
View history
 








Tools
   


Actions  



Read
Edit
View history
 




General  



What links here
Related changes
Upload file
Special pages
Permanent link
Page information
Cite this page
Get shortened URL
Download QR code
Wikidata item
 




Print/export  



Download as PDF
Printable version
 




In other projects  



Wikimedia Commons
 
















Appearance
   

 






From Wikipedia, the free encyclopedia
 


UNI/O bus example: single master and four slaves
Example UNI/O devices in SOT-23 and wafer level chip scale packages sitting on the face of a U.S. penny

The UNI/O bus /ˌjuːniˈ/ is an asynchronous serial bus created by Microchip Technology for low speed communication in embedded systems.[1] The bus uses a master/slave configuration, requiring one signal to pass data between devices. The first devices supporting the UNI/O bus were released in May 2008.

Interface

[edit]

The UNI/O bus requires one logic signal:

Only one master device is allowed per bus, but multiple slave devices can be connected to a single UNI/O bus. Individual slaves are selected through an 8-bit to 12-bit address included in the command overhead.

Both master and slave devices use a tri-stateable, push-pull I/O pin to connect to SCIO, with the pin being placed in a high impedance state when not driving the bus. Because push-pull outputs are used, the output driver on slave devices is current-limited to prevent high system currents from occurring during bus collisions.

The idle state of the UNI/O bus is logic high. A pull-up resistor can be used to ensure the bus remains idle when no device is driving SCIO, but is not required for operation.[3]

Data encoding

[edit]

Bit encoding

[edit]
UNI/O bit encoding examples

Clock and data signals are combined and communicated on the bus through Manchester encoding. This means that each data bit is transmitted in a fixed amount of time (called the "bit period").

The UNI/O specification places certain rules on the bit period:

In accordance with Manchester encoding, the bit value is defined by a signal transition in the middle of the bit period. UNI/O uses the IEEE 802.3 convention for defining 0 and 1 values:

Bit periods occur back-to-back, with no delay between bit periods allowed.

Data words

[edit]
UNI/O data byte and acknowledge sequence

UNI/O uses 8-bit data words for communication. Bytes are transmitted msb first.

Acknowledge sequence

[edit]

To facilitate error detection, a 2-bit wide "acknowledge sequence" is appended to the end of every data byte transmitted. The first bit is called the "master acknowledge" (shortened to "MAK") and is always generated by the master. The second bit, called the "slave acknowledge" (shortened to "SAK"), is always generated by the slave.

The MAK bit is used in the following manner:

The SAK bit is used in the following manner:

Command structure

[edit]

Standby pulse

[edit]

UNI/O defines a signal pulse, called the "standby pulse", that can be generated by the master to force slave devices into a reset state (referred to as "standby mode"). To generate a standby pulse, the master must drive the bus to a logic high for a minimum of 600 μs.

A standby pulse is required to be generated under certain conditions:

If a command is completed without error, a new command to the same device can be initiated without generating a standby pulse.

Start header

[edit]
UNI/O start header

The start header is a special byte sequence defined by the UNI/O specification, and is used to initiate a new command. The start header consists of the following elements:

Device address

[edit]

After the start header has been transmitted, the master must transmit a device address to select the desired slave device for the current operation. Once the device address has been sent, any slave device with an address different from that specified is required to shut down and ignore all further communication until a standby pulse is received.

UNI/O allows for both 8-bit and 12-bit device addresses. 8-bit addressing offers better data throughput due to less command overhead, while 12-bit addressing allows for more slaves with a common family code to exist on a single bus. When a slave device is designed, the designer must choose which addressing scheme to use.

8-bit addressing

[edit]

For 8-bit addressing, the entire device address is transmitted in a single byte. The most significant 4 bits indicate the "family code", which is defined by Microchip in the UNI/O bus specification. The least significant 4 bits indicate the device code. The device code allows multiple slave devices with a common family code to be used on the same bus. The device code can be fixed for a given slave or customizable by the user. Choosing a device code and how it can be customized (if necessary) are the responsibilities of the slave device designer.

The current family codes for 8-bit devices, as of November 22, 2009,[1] are as follows:

Family Code Description
0000 Reserved
0011 Display Controllers
0100 I/O port expanders
1000 Frequency/Quadrature/PWM encoders, real-time clocks
1001 Temperature sensors
1010 EEPROMs
1011 Encryption/Authentication Devices
1100 DC/DC Converters
1101 A/D converters
1111 12-bit addressable devices

12-bit addressing

[edit]

For 12-bit addressing, the device address is sent in two bytes. The most significant 4 bits of the first byte (which would correspond to the family code in 8-bit addressing), are set to ′1111′. The next 4 bits are the family code for the 12-bit address, and the second byte of the address is an 8-bit wide device code. The device code follows the same guidelines for definition as with 8-bit addressing.

Because the specified slave device is not selected until both bytes of the device address have been received, a NoSAK will occur during the acknowledge sequence following the first device address byte.

The current family codes for 12-bit devices, as of November 22, 2009,[1] are as follows:

Family Code Description
0000 Reserved
1111 Reserved

Command byte

[edit]

After the master has transmitted the device address and selected an individual slave, the master must transmit the 8-bit value for the specific command to be executed by the slave. The available commands are determined by the designer of each slave device, and will vary from slave to slave, e.g. a serial EEPROM will likely have different commands than a temperature sensor. The slave device designer will also determine if and how many data bytes are necessary for the execution of a command. If any data bytes are necessary, they are transmitted by either the master or the slave (dictated by the command type) after the command byte.

Communication will continue until either the master transmits a 0 (NoMAK) during the acknowledge sequence, or an error occurs. Assuming no errors occur, this means that commands can continue indefinitely if the master chooses.


Bus Parasitic Power

[edit]

Some UNI/O Parts can be powered from the bus, eliminating the need for a dedicated supply voltage/wire.[4][5][6]

References

[edit]
  1. ^ a b c UNI/O Bus Specification (PDF), retrieved 2009-11-22
  • ^ 1K-16K UNI/O Serial EEPROM Family Data Sheet (PDF), retrieved 2009-10-21
  • ^ AN1194, Recommended Usage of Microchip UNI/O Bus-Compatible Serial EEPROMs (PDF), retrieved 2009-10-21
  • ^ Single-Wire and UNI/O® Bus Serial EEPROMs
  • ^ "Powering a UNI/O® Bus Device Through SCIO" (PDF). Retrieved 2024-01-27.
  • ^ "UNI/O® Bus Parasitic Power Demo Board" (PDF). Retrieved 2024-01-27.
  • [edit]
    Retrieved from "https://en.wikipedia.org/w/index.php?title=UNI/O&oldid=1224419149"

    Category: 
    Serial buses
    Hidden categories: 
    Articles lacking in-text citations from October 2009
    All articles lacking in-text citations
    Articles needing additional references from October 2009
    All articles needing additional references
    Articles with multiple maintenance issues
     



    This page was last edited on 18 May 2024, at 08:51 (UTC).

    Text is available under the Creative Commons Attribution-ShareAlike License 4.0; additional terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy. Wikipedia® is a registered trademark of the Wikimedia Foundation, Inc., a non-profit organization.



    Privacy policy

    About Wikipedia

    Disclaimers

    Contact Wikipedia

    Code of Conduct

    Developers

    Statistics

    Cookie statement

    Mobile view



    Wikimedia Foundation
    Powered by MediaWiki