nanoFramework.Iot.Device.Mbi5027 1.2.907

Prefix Reserved
dotnet add package nanoFramework.Iot.Device.Mbi5027 --version 1.2.907
                    
NuGet\Install-Package nanoFramework.Iot.Device.Mbi5027 -Version 1.2.907
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="nanoFramework.Iot.Device.Mbi5027" Version="1.2.907" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="nanoFramework.Iot.Device.Mbi5027" Version="1.2.907" />
                    
Directory.Packages.props
<PackageReference Include="nanoFramework.Iot.Device.Mbi5027" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add nanoFramework.Iot.Device.Mbi5027 --version 1.2.907
                    
#r "nuget: nanoFramework.Iot.Device.Mbi5027, 1.2.907"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package nanoFramework.Iot.Device.Mbi5027@1.2.907
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=nanoFramework.Iot.Device.Mbi5027&version=1.2.907
                    
Install as a Cake Addin
#tool nuget:?package=nanoFramework.Iot.Device.Mbi5027&version=1.2.907
                    
Install as a Cake Tool

MBI5027 -- 16-bit shift register with error detection

MBI5027 is a 16-bit shift register. Per the datasheet, the MBI5027 is a "16-bit Constant Current LED Sink Driver with Open/Short Circuit Detection". The Mbi5027 binding is based on and is compatible with the more general ShiftRegister binding. The Mbi5027 binding adds error detection functionality. Either binding can be used to control the MBI5027.

MBI5027

The MBI5027 is similar to the commonly used SN74HC595 shift register, with some key differences.

  • The MBI5027 has 16 inputs (and can control 16 LEDs) while the SN74HC595 has 8 outputs.
  • The MBI5027 is a current sink, which means you connect the cathode (ground), not anode (power) legs, to its pins. The current comes towards the sink, not away from it. The SN74HC595 is a current source and requires the opposite wiring due to the opposite direction of current.
  • The MBI5027 provides a configurable constant current, which means that resistors are not needed per input. A single resistor is used, connected to R-EXT, to configure the current.
  • The MBI5027 provides the ability to detect errors, per input.
  • The SN74HC595 provides a storage register clear capability, which the MBI5027 lacks.
  • The MBI5027 and SN74HC595 can be controlled by the same API for their basic operations; they are protocol compatible.

Note: The MBI5168 is an 8-bit constant current sink without error detection, making it a more direct comparison to the SN74HC595.

The MBI5027 sample demonstrates how to use the shift register. The generic shift register sample is more extensive and is compatible with the MBI5027.

Documentation

  • You can find the datasheet here
  • Purchase: Not widely available. aliexpress.com/ was used to purchase the unit used to write this binding.

Usage

The following example code demonstrates how to use the MBI5027 with its most basic functions.

Mbi5027 sr = new(Mbi5027PinMapping.Minimal);

// Light up three of first four LEDs
sr.ShiftBit(1);
sr.ShiftBit(1);
sr.ShiftBit(0);
sr.ShiftBit(1);
sr.Latch();

// Display for 1s
Thread.Sleep(1000);

// Clear register
sr.ShiftClear();

// Write to all 16 registers with two byte values
// The `false` parameter avoids latching the storage register after the first call to `ShiftByte`
sr.ShiftByte(0b_1101_1010, false);
sr.ShiftByte(0b_1010_1101);

If you want to use SPI, see the ShiftRegister binding, which includes more information on SPI.

The following image demonstrate a binary clock counting example.

binary clock counting example

Example circuit

The following breadboard circuit demonstrates the correct wiring pattern, including error detection.

MBI5027_BB_topview

It is easy to mis-wire the MBI5027. The following image captures the most basic aspects for correct configuration.

MBI5027 basic wiring

The following are key aspects to ensure are correct:

  • Pin 24 (VDD) must be wired to 5v for error correction to work correctly.
  • Pin 23 (R-EXT) must be connected to ground with a resistor, which configures the constant current.
  • Loads must connect to the MBI5027 with their cathode legs. In this example, the LED is connected to the ground rail via its anode leg and to a MBI5027 input pin via its cathode leg.

Error detection

The MBI5027 provides the ability to detect errors, per output. This is very useful for remote deployments, to determine if repairs are required (for a traffic sign, for example). The MBI5027 requires transitioning to an error detection mode to detect errors and then back to normal mode for normal operation.

The following example code demonstrates how to detect output errors with the MBI5027.

var sr = new Mbi5027(Mbi5027PinMapping.Complete);

// switch to error detection mode
sr.EnableDetectionMode();

// read error states, per output
var index = sr.BitLength - 1;
foreach (var value in sr.ReadOutputErrorStatus())
{
    Debug.WriteLine($"Bit {index--}: {value}");
}

// switch back to normal mode
sr.EnableNormalMode();

Per the datasheet, data can be shifted into the storage register while reading the output error status and before re-entering normal mode.

When all 16 outputs are in use, and no errors are detected, you will see the following output given this code. A Low state would be shown if the output is unused, is misconfigured or other error condition. You can create this situation by disconnecting one of the input connections on the MBI5027.

Bit 15: High
Bit 14: High
Bit 13: High
Bit 12: High
Bit 11: High
Bit 10: High
Bit 9: High
Bit 8: High
Bit 7: High
Bit 6: High
Bit 5: High
Bit 4: High
Bit 3: High
Bit 2: High
Bit 1: High
Bit 0: High

Note: Error detection was found to work only with 5v power. When 3.3v power was used, error detection did not work correctly.

Product Compatible and additional computed target framework versions.
.NET Framework net is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.2.907 167 10/2/2025
1.2.869 270 4/2/2025
1.2.864 267 4/2/2025
1.2.852 258 3/11/2025
1.2.835 189 2/27/2025
1.2.833 207 2/27/2025
1.2.829 217 2/27/2025
1.2.822 202 2/26/2025
1.2.785 226 2/4/2025
1.2.775 239 2/4/2025
1.2.772 204 2/4/2025
1.2.767 226 2/3/2025
1.2.762 189 2/1/2025
1.2.759 199 1/31/2025
1.2.755 206 1/31/2025
1.2.737 159 1/13/2025
1.2.718 185 12/30/2024
1.2.704 195 12/18/2024
1.2.696 187 12/16/2024
1.2.673 216 10/23/2024
1.2.635 224 8/30/2024
1.2.631 200 8/28/2024
1.2.590 225 7/17/2024
1.2.570 204 6/14/2024
1.2.560 216 5/29/2024
1.2.548 198 5/15/2024
1.2.436 325 11/10/2023
1.2.416 178 11/8/2023
1.2.329 275 5/26/2023
1.2.313 244 5/12/2023
1.2.302 270 5/10/2023
1.2.297 271 5/3/2023
1.2.273 324 3/17/2023
1.2.203 391 12/28/2022
1.2.159 476 11/14/2022
1.2.153 510 11/5/2022
1.2.141 516 10/25/2022
1.2.122 559 10/12/2022
1.2.114 519 10/8/2022
1.2.104 532 9/24/2022
1.2.95 580 9/22/2022
1.2.87 594 9/15/2022
1.2.73 535 9/8/2022
1.2.5 604 7/13/2022
1.1.141.41205 556 7/6/2022
1.1.116.8772 541 6/24/2022
1.1.113.2032 563 6/23/2022
1.1.58.10097 568 5/23/2022
1.1.27 603 4/26/2022
1.1.20 571 4/21/2022
1.1.3 571 4/15/2022
1.1.1 552 4/14/2022
1.0.300 581 3/31/2022
1.0.277-preview.128 241 3/26/2022
1.0.277-preview.126 219 3/25/2022
1.0.277-preview.125 229 3/25/2022
1.0.277-preview.113 229 3/20/2022
1.0.277-preview.112 211 3/19/2022
1.0.277-preview.110 230 3/18/2022
1.0.277-preview.105 214 3/15/2022
1.0.277-preview.103 218 3/14/2022
1.0.277-preview.102 206 3/11/2022
1.0.277-preview.99 229 3/10/2022
1.0.277-preview.98 244 3/8/2022
1.0.277-preview.85 240 2/25/2022
1.0.277-preview.77 211 2/18/2022
1.0.277-preview.60 250 2/4/2022
1.0.277-preview.41 232 1/28/2022
1.0.277-preview.32 231 1/27/2022
1.0.277-preview.17 237 1/24/2022
1.0.277-preview.13 247 1/21/2022
1.0.277-preview.1 247 1/11/2022
1.0.259 477 12/9/2021
1.0.221 264 10/19/2021
1.0.219 270 10/19/2021
1.0.218 294 10/18/2021
1.0.156 272 9/1/2021
1.0.155 261 8/31/2021
1.0.150 304 7/23/2021
1.0.148 269 7/22/2021
1.0.125 296 7/5/2021
1.0.119 333 6/28/2021
1.0.112 325 6/16/2021
1.0.79 306 5/26/2021