Class Mcp23xxx
Base class for Mcp23xxx GPIO expanders
public abstract class Mcp23xxx : GpioDriver
- Inheritance
-
GpioDriverMcp23xxx
- Derived
Constructors
Mcp23xxx(BusAdapter, int, int, int, GpioController?, BankStyle, bool)
A general purpose parallel I/O expansion for I2C or SPI applications.
protected Mcp23xxx(Mcp23xxx.BusAdapter bus, int reset = -1, int interruptA = -1, int interruptB = -1, GpioController? gpioController = null, BankStyle bankStyle = BankStyle.Sequential, bool shouldDispose = true)
Parameters
bus
Mcp23xxx.BusAdapterThe bus the device is connected to.
reset
intThe output pin number that is connected to the hardware reset.
interruptA
intThe input pin number that is connected to the interrupt for Port A (INTA).
interruptB
intThe input pin number that is connected to the interrupt for Port B (INTB).
gpioController
GpioControllerThe controller for the reset and interrupt pins. If not specified, the default controller will be used.
bankStyle
BankStyleThe current bank style of the ports. This does not set the bank style- it tells us what the bank style is. It is highly recommended not to change the bank style from the default as there is no direct way to detect what style the chip is in and most apps will fail if the chip is not set to defaults. This setting has no impact on 8-bit expanders.
shouldDispose
boolTrue to dispose the Gpio Controller
Fields
_bus
Bus adapter (I2C/SPI) used to communicate with the device
protected Mcp23xxx.BusAdapter _bus
Field Value
Methods
AddCallbackForPinValueChangedEvent(int, PinEventTypes, PinChangeEventHandler)
Adds a handler for a pin value changed event.
protected override void AddCallbackForPinValueChangedEvent(int pinNumber, PinEventTypes eventTypes, PinChangeEventHandler callback)
Parameters
pinNumber
intThe pin number in the driver's logical numbering scheme.
eventTypes
PinEventTypesThe event types to wait for.
callback
PinChangeEventHandlerDelegate that defines the structure for callbacks when a pin value changed event occurs.
ClosePin(int)
Closes an open pin.
protected override void ClosePin(int pinNumber)
Parameters
pinNumber
intThe pin number in the driver's logical numbering scheme.
ConvertPinNumberToLogicalNumberingScheme(int)
Converts a board pin number to the driver's logical numbering scheme.
protected override int ConvertPinNumberToLogicalNumberingScheme(int pinNumber)
Parameters
pinNumber
intThe board pin number to convert.
Returns
- int
The pin number in the driver's logical numbering scheme.
Disable()
Disables the device by setting the reset pin low.
public void Disable()
Dispose(bool)
Disposes this instance
protected override void Dispose(bool disposing)
Parameters
disposing
boolTrue if explicitly disposing, false if in finalizer
Enable()
Enables the device by setting the reset pin high.
public void Enable()
GetPinMode(int)
Gets the mode of a pin.
protected override PinMode GetPinMode(int pinNumber)
Parameters
pinNumber
intThe pin number in the driver's logical numbering scheme.
Returns
- PinMode
The mode of the pin.
InternalRead(Register, SpanByte, Port)
Reads a number of bytes from registers.
protected void InternalRead(Register register, SpanByte buffer, Port port)
Parameters
register
RegisterThe register to read from.
buffer
SpanByteThe buffer to read bytes into.
port
PortThe I/O port used with the register.
InternalReadByte(Register, Port)
Reads byte from the device register
protected byte InternalReadByte(Register register, Port port)
Parameters
Returns
- byte
Byte read from the device register
InternalReadInterrupt(Port)
Reads interrupt value
protected PinValue InternalReadInterrupt(Port port)
Parameters
port
PortPort to read interrupt on
Returns
- PinValue
Value of intterupt pin
InternalReadUInt16(Register)
Read 16-bit unsigned integer from the device register
protected ushort InternalReadUInt16(Register register)
Parameters
register
RegisterRegister to read the value from
Returns
- ushort
16-bit unsigned integer read from the device
InternalWrite(Register, SpanByte, Port)
Writes a number of bytes to registers.
protected void InternalWrite(Register register, SpanByte data, Port port)
Parameters
register
RegisterThe register address to write to.
data
SpanByteThe data to write to the registers.
port
PortThe I/O port used with the registers.
InternalWriteByte(Register, byte, Port)
Write byte to device register
protected void InternalWriteByte(Register register, byte value, Port port)
Parameters
register
RegisterRegister to write the value to
value
byteValue to be written to the
register
port
PortPort related with the
register
InternalWriteUInt16(Register, ushort)
Writes 16-bit unsigned integer to the device register
protected void InternalWriteUInt16(Register register, ushort value)
Parameters
register
RegisterRegister to write
value
tovalue
ushort16-bit unsigned integer to write to the
register
IsPinModeSupported(int, PinMode)
Checks if a pin supports a specific mode.
protected override bool IsPinModeSupported(int pinNumber, PinMode mode)
Parameters
pinNumber
intThe pin number in the driver's logical numbering scheme.
mode
PinModeThe mode to check.
Returns
- bool
The status if the pin supports the mode.
OpenPin(int)
Opens a pin in order for it to be ready to use. The driver attempts to open the pin without changing its mode or value.
protected override void OpenPin(int pinNumber)
Parameters
pinNumber
intThe pin number in the driver's logical numbering scheme.
Read(PinValuePair[])
Reads the value of a set of pins
protected void Read(PinValuePair[] pinValuePairs)
Parameters
pinValuePairs
PinValuePair[]
Read(int)
Reads the value of a pin.
protected override PinValue Read(int pinNumber)
Parameters
pinNumber
intThe pin number.
Returns
- PinValue
High or low pin value.
ReadByte(Register)
Read a byte from the given register.
public byte ReadByte(Register register)
Parameters
register
Register
Returns
Remarks
Writes to the A port registers on 16 bit devices.
ReadInterrupt()
Returns the value of the interrupt pin if configured.
public PinValue ReadInterrupt()
Returns
- PinValue
Returns the interrupt for port A on 16 bit devices.
RemoveCallbackForPinValueChangedEvent(int, PinChangeEventHandler)
Removes a handler for a pin value changed event.
protected override void RemoveCallbackForPinValueChangedEvent(int pinNumber, PinChangeEventHandler callback)
Parameters
pinNumber
intThe pin number in the driver's logical numbering scheme.
callback
PinChangeEventHandlerDelegate that defines the structure for callbacks when a pin value changed event occurs.
SetPinMode(int, PinMode)
Sets a mode to a pin.
protected override void SetPinMode(int pinNumber, PinMode mode)
Parameters
Write(PinValuePair[])
Writes values to a set of pins
protected void Write(PinValuePair[] pinValuePairs)
Parameters
pinValuePairs
PinValuePair[]
Write(int, PinValue)
Writes a value to a pin.
protected override void Write(int pinNumber, PinValue value)
Parameters
WriteByte(Register, byte)
Write a byte to the given register.
public void WriteByte(Register register, byte value)
Parameters
Remarks
Writes to the A port registers on 16 bit devices.