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
busMcp23xxx.BusAdapterThe bus the device is connected to.
resetintThe output pin number that is connected to the hardware reset.
interruptAintThe input pin number that is connected to the interrupt for Port A (INTA).
interruptBintThe input pin number that is connected to the interrupt for Port B (INTB).
gpioControllerGpioControllerThe controller for the reset and interrupt pins. If not specified, the default controller will be used.
bankStyleBankStyleThe 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.
shouldDisposeboolTrue 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
pinNumberintThe pin number in the driver's logical numbering scheme.
eventTypesPinEventTypesThe event types to wait for.
callbackPinChangeEventHandlerDelegate 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
pinNumberintThe 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
pinNumberintThe 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
disposingboolTrue 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
pinNumberintThe 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
registerRegisterThe register to read from.
bufferSpanByteThe buffer to read bytes into.
portPortThe 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
portPortPort 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
registerRegisterRegister 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
registerRegisterThe register address to write to.
dataSpanByteThe data to write to the registers.
portPortThe 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
registerRegisterRegister to write the value to
valuebyteValue to be written to the
registerportPortPort related with the
register
InternalWriteUInt16(Register, ushort)
Writes 16-bit unsigned integer to the device register
protected void InternalWriteUInt16(Register register, ushort value)
Parameters
registerRegisterRegister to write
valuetovalueushort16-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
pinNumberintThe pin number in the driver's logical numbering scheme.
modePinModeThe 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
pinNumberintThe 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
pinValuePairsPinValuePair[]
Read(int)
Reads the value of a pin.
protected override PinValue Read(int pinNumber)
Parameters
pinNumberintThe pin number.
Returns
- PinValue
High or low pin value.
ReadByte(Register)
Read a byte from the given register.
public byte ReadByte(Register register)
Parameters
registerRegister
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
pinNumberintThe pin number in the driver's logical numbering scheme.
callbackPinChangeEventHandlerDelegate 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
pinValuePairsPinValuePair[]
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.