nxp_periph package

Submodules

nxp_periph.GPIO module

class nxp_periph.GPIO.GPIO_base[source]

Bases: object

An abstraction class to make user interface.

property config
config_0(*args)[source]

set/read configuration

Parameters:

list (int or) – When this method takes 1 argument, the value is set in register It takes an integer value if 8 bit GPIO. Takes a list if the GPIO has multiple ports. First value is for port-0

Returns:

int or list – When this method takes no argument, the value is read from register It returns an integer value if 8 bit GPIO. Returns a list if the GPIO has multiple ports. First value is for port-0

Return type:

port value

dump()[source]
input()[source]

read input

Returns:

int or list – It returns an integer value if 8 bit GPIO. Returns a list if the GPIO has multiple ports. First value is for port-0

Return type:

port value

output(v)[source]

set output

Parameters:

list (int or) – It takes an integer value if 8 bit GPIO. Takes a list if the GPIO has multiple ports. First value is for port-0

polarity(*args)[source]

set/read polarity

Parameters:

list (int or) – When this method takes 1 argument, the value is set in register It takes an integer value if 8 bit GPIO. Takes a list if the GPIO has multiple ports. First value is for port-0

Returns:

int or list – When this method takes no argument, the value is read from register It returns an integer value if 8 bit GPIO. Returns a list if the GPIO has multiple ports. First value is for port-0

Return type:

port value

property value

Read port

Returns:

list or int

Return type:

port read value

class nxp_periph.GPIO.PCA9554(i2c, address=32)[source]

Bases: GPIO_base, I2C_target

PCA9554: 8 bit GPIO expander

A device class for an industry standard 8 bit GPIO expander This class can operate its family devices of PCA9554A, PCA9554B, PCA954C and PCA9538

DEFAULT_ADDR = 32
N_BITS = 8
N_PORTS = 1
REG_NAME = ('Input Port', 'Output PortPolarity Inversion', 'Configuration')
class nxp_periph.GPIO.PCA9555(i2c, address=32)[source]

Bases: GPIO_base, I2C_target

PCA9555: 16 bit GPIO expander

A device class for an industry standard 16 bit GPIO expander This class can operate its family devices of PCA9555A and PCA9539

DEFAULT_ADDR = 32
N_BITS = 16
N_PORTS = 2
REG_NAME = ('Input port 0', 'Input port 1', 'Output port 0', 'Output port 1', 'Polarity Inversion port 0', 'Polarity Inversion port 1', 'Configuration port 0', 'Configuration port 1')
class nxp_periph.GPIO.PCAL6408(i2c, address=32, setup_EVB=False)[source]

Bases: PCAL6xxx_base

PCAL6408: 8 bit GPIO expander

ADDR_BIT = 0
DEFAULT_ADDR = 32
N_BITS = 8
N_PORTS = 1
REG_NAME = ['Input Port', 'Output Port', 'Polarity Inversion', 'Configuration', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'Output drive strength 0', 'Output drive strength 1', 'Input latch', 'Pull-up/pull-down enable', 'Pull-up/pull-down selection', 'Interrupt mask', 'Interrupt status', 'Output port configuration']
REG_NAME_0x00 = ['Input Port', 'Output Port', 'Polarity Inversion', 'Configuration']
REG_NAME_0x40 = ['Output drive strength 0', 'Output drive strength 1', 'Input latch', 'Pull-up/pull-down enable', 'Pull-up/pull-down selection', 'Interrupt mask', 'Interrupt status', 'Output port configuration']
class nxp_periph.GPIO.PCAL6416(i2c, address=32, setup_EVB=False)[source]

Bases: PCAL6xxx_base

PCAL6416: 16 bit GPIO expander

ADDR_BIT = 0
DEFAULT_ADDR = 32
N_BITS = 16
N_PORTS = 2
REG_NAME = ['Input Port 0', 'Input Port 1', 'Output Port 0', 'Output Port 1', 'Polarity Inversion port 0', 'Polarity Inversion port 1', 'Configuration port 0', 'Configuration port 1', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'Output drive strength register 0', 'Output drive strength register 0B', 'Output drive strength register 1', 'Output drive strength register 1B', 'Input latch register 0', 'Input latch register 1', 'Pull-up/pull-down enable register 0', 'Pull-up/pull-down enable register 1', 'Pull-up/pull-down selection register 0', 'Pull-up/pull-down selection register 1', 'Interrupt mask register 0', 'Interrupt mask register 1', 'Interrupt status register 0', 'Interrupt status register 1', 'Output port configuration register']
REG_NAME_0x00 = ['Input Port 0', 'Input Port 1', 'Output Port 0', 'Output Port 1', 'Polarity Inversion port 0', 'Polarity Inversion port 1', 'Configuration port 0', 'Configuration port 1']
REG_NAME_0x40 = ['Output drive strength register 0', 'Output drive strength register 0B', 'Output drive strength register 1', 'Output drive strength register 1B', 'Input latch register 0', 'Input latch register 1', 'Pull-up/pull-down enable register 0', 'Pull-up/pull-down enable register 1', 'Pull-up/pull-down selection register 0', 'Pull-up/pull-down selection register 1', 'Interrupt mask register 0', 'Interrupt mask register 1', 'Interrupt status register 0', 'Interrupt status register 1', 'Output port configuration register']
class nxp_periph.GPIO.PCAL6524(i2c, address=34, setup_EVB=False)[source]

Bases: PCAL65xx_base

PCAL6524: 24 bit GPIO expander

ADDR_BIT = 0
DEFAULT_ADDR = 34
N_BITS = 24
N_PORTS = 3
REG_NAME = ['Input Port 0', 'Input Port 1', 'Input Port 2', 'reserved', 'Output Port 0', 'Output Port 1', 'Output Port 2', 'reserved', 'Polarity Inversion port 0', 'Polarity Inversion port 1', 'Polarity Inversion port 2', 'reserved', 'Configuration port 0', 'Configuration port 1', 'Configuration port 2', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'Output drive strength register port 0A', 'Output drive strength register port 0B', 'Output drive strength register port 1A', 'Output drive strength register port 1B', 'Output drive strength register port 2A', 'Output drive strength register port 2B', 'reserved', 'reserved', 'Input latch register port 0', 'Input latch register port 1', 'Input latch register port 2', 'reserved', 'Pull-up/pull-down enable register port 0', 'Pull-up/pull-down enable register port 1', 'Pull-up/pull-down enable register port 2', 'reserved', 'Pull-up/pull-down selection register port 0', 'Pull-up/pull-down selection register port 1', 'Pull-up/pull-down selection register port 2', 'reserved', 'Interrupt mask register port 0', 'Interrupt mask register port 1', 'Interrupt mask register port 2', 'reserved', 'Interrupt status register port 0', 'Interrupt status register port 1', 'Interrupt status register port 2', 'reserved', 'Output port configuration register', 'reserved', 'reserved', 'reserved', 'Interrupt edge register port 0A', 'Interrupt edge register port 0B', 'Interrupt edge register port 1A', 'Interrupt edge register port 1B', 'Interrupt edge register port 2A', 'Interrupt edge register port 2B', 'reserved', 'reserved', 'Interrupt clear register port 0', 'Interrupt clear register port 1', 'Interrupt clear register port 2', 'reserved', 'Input status port 0', 'Input status port 1', 'Input status port 2', 'reserved', 'Individual pin output port 0 configuration register', 'Individual pin output port 1 configuration register', 'Individual pin output port 2 configuration register', 'reserved', 'Switch debounce enable 0', 'Switch debounce enable 1', 'Switch debounce count']
REG_NAME_0x00 = ['Input Port 0', 'Input Port 1', 'Input Port 2', 'reserved', 'Output Port 0', 'Output Port 1', 'Output Port 2', 'reserved', 'Polarity Inversion port 0', 'Polarity Inversion port 1', 'Polarity Inversion port 2', 'reserved', 'Configuration port 0', 'Configuration port 1', 'Configuration port 2']
REG_NAME_0x40 = ['Output drive strength register port 0A', 'Output drive strength register port 0B', 'Output drive strength register port 1A', 'Output drive strength register port 1B', 'Output drive strength register port 2A', 'Output drive strength register port 2B', 'reserved', 'reserved', 'Input latch register port 0', 'Input latch register port 1', 'Input latch register port 2', 'reserved', 'Pull-up/pull-down enable register port 0', 'Pull-up/pull-down enable register port 1', 'Pull-up/pull-down enable register port 2', 'reserved', 'Pull-up/pull-down selection register port 0', 'Pull-up/pull-down selection register port 1', 'Pull-up/pull-down selection register port 2', 'reserved', 'Interrupt mask register port 0', 'Interrupt mask register port 1', 'Interrupt mask register port 2', 'reserved', 'Interrupt status register port 0', 'Interrupt status register port 1', 'Interrupt status register port 2', 'reserved', 'Output port configuration register', 'reserved', 'reserved', 'reserved', 'Interrupt edge register port 0A', 'Interrupt edge register port 0B', 'Interrupt edge register port 1A', 'Interrupt edge register port 1B', 'Interrupt edge register port 2A', 'Interrupt edge register port 2B', 'reserved', 'reserved', 'Interrupt clear register port 0', 'Interrupt clear register port 1', 'Interrupt clear register port 2', 'reserved', 'Input status port 0', 'Input status port 1', 'Input status port 2', 'reserved', 'Individual pin output port 0 configuration register', 'Individual pin output port 1 configuration register', 'Individual pin output port 2 configuration register', 'reserved', 'Switch debounce enable 0', 'Switch debounce enable 1', 'Switch debounce count']
class nxp_periph.GPIO.PCAL6534(i2c, address=34, setup_EVB=False)[source]

Bases: PCAL65xx_base

PCAL6534: 34 bit GPIO expander

ADDR_BIT = 0
DEFAULT_ADDR = 34
N_BITS = 34
N_PORTS = 5
REG_NAME = ['Input Port 0', 'Input Port 1', 'Input Port 2', 'Input Port 3', 'Input Port 4', 'Output Port 0', 'Output Port 1', 'Output Port 2', 'Output Port 3', 'Output Port 4', 'Polarity Inversion port 0', 'Polarity Inversion port 1', 'Polarity Inversion port 2', 'Polarity Inversion port 3', 'Polarity Inversion port 4', 'Configuration port 0', 'Configuration port 1', 'Configuration port 2', 'Configuration port 3', 'Configuration port 4', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'Output drive strength register port 0A', 'Output drive strength register port 0B', 'Output drive strength register port 1A', 'Output drive strength register port 1B', 'Output drive strength register port 2A', 'Output drive strength register port 2B', 'Output drive strength register port 3A', 'Output drive strength register port 3B', 'Output drive strength register port 4A', 'reserved', 'Input latch register port 0', 'Input latch register port 1', 'Input latch register port 2', 'Input latch register port 3', 'Input latch register port 4', 'Pull-up/pull-down enable register port 0', 'Pull-up/pull-down enable register port 1', 'Pull-up/pull-down enable register port 2', 'Pull-up/pull-down enable register port 3', 'Pull-up/pull-down enable register port 4', 'Pull-up/pull-down selection register port 0', 'Pull-up/pull-down selection register port 1', 'Pull-up/pull-down selection register port 2', 'Pull-up/pull-down selection register port 3', 'Pull-up/pull-down selection register port 4', 'Interrupt mask register port 0', 'Interrupt mask register port 1', 'Interrupt mask register port 2', 'Interrupt mask register port 3', 'Interrupt mask register port 4', 'Interrupt status register port 0', 'Interrupt status register port 1', 'Interrupt status register port 2', 'Interrupt status register port 3', 'Interrupt status register port 4', 'Output port configuration register', 'Interrupt edge register port 0A', 'Interrupt edge register port 0B', 'Interrupt edge register port 1A', 'Interrupt edge register port 1B', 'Interrupt edge register port 2A', 'Interrupt edge register port 2B', 'Interrupt edge register port 3A', 'Interrupt edge register port 3B', 'Interrupt edge register port 4A', 'reserved', 'Interrupt clear register port 0', 'Interrupt clear register port 1', 'Interrupt clear register port 2', 'Interrupt clear register port 3', 'Interrupt clear register port 4', 'Input status port 0', 'Input status port 1', 'Input status port 2', 'Input status port 3', 'Input status port 4', 'Individual pin output port 0 configuration register', 'Individual pin output port 1 configuration register', 'Individual pin output port 2 configuration register', 'Individual pin output port 3 configuration register', 'Individual pin output port 4 configuration register', 'Switch debounce enable 0', 'Switch debounce enable 1', 'Switch debounce count']
REG_NAME_0x00 = ['Input Port 0', 'Input Port 1', 'Input Port 2', 'Input Port 3', 'Input Port 4', 'Output Port 0', 'Output Port 1', 'Output Port 2', 'Output Port 3', 'Output Port 4', 'Polarity Inversion port 0', 'Polarity Inversion port 1', 'Polarity Inversion port 2', 'Polarity Inversion port 3', 'Polarity Inversion port 4', 'Configuration port 0', 'Configuration port 1', 'Configuration port 2', 'Configuration port 3', 'Configuration port 4']
REG_NAME_0x30 = ['Output drive strength register port 0A', 'Output drive strength register port 0B', 'Output drive strength register port 1A', 'Output drive strength register port 1B', 'Output drive strength register port 2A', 'Output drive strength register port 2B', 'Output drive strength register port 3A', 'Output drive strength register port 3B', 'Output drive strength register port 4A', 'reserved', 'Input latch register port 0', 'Input latch register port 1', 'Input latch register port 2', 'Input latch register port 3', 'Input latch register port 4', 'Pull-up/pull-down enable register port 0', 'Pull-up/pull-down enable register port 1', 'Pull-up/pull-down enable register port 2', 'Pull-up/pull-down enable register port 3', 'Pull-up/pull-down enable register port 4', 'Pull-up/pull-down selection register port 0', 'Pull-up/pull-down selection register port 1', 'Pull-up/pull-down selection register port 2', 'Pull-up/pull-down selection register port 3', 'Pull-up/pull-down selection register port 4', 'Interrupt mask register port 0', 'Interrupt mask register port 1', 'Interrupt mask register port 2', 'Interrupt mask register port 3', 'Interrupt mask register port 4', 'Interrupt status register port 0', 'Interrupt status register port 1', 'Interrupt status register port 2', 'Interrupt status register port 3', 'Interrupt status register port 4', 'Output port configuration register', 'Interrupt edge register port 0A', 'Interrupt edge register port 0B', 'Interrupt edge register port 1A', 'Interrupt edge register port 1B', 'Interrupt edge register port 2A', 'Interrupt edge register port 2B', 'Interrupt edge register port 3A', 'Interrupt edge register port 3B', 'Interrupt edge register port 4A', 'reserved', 'Interrupt clear register port 0', 'Interrupt clear register port 1', 'Interrupt clear register port 2', 'Interrupt clear register port 3', 'Interrupt clear register port 4', 'Input status port 0', 'Input status port 1', 'Input status port 2', 'Input status port 3', 'Input status port 4', 'Individual pin output port 0 configuration register', 'Individual pin output port 1 configuration register', 'Individual pin output port 2 configuration register', 'Individual pin output port 3 configuration register', 'Individual pin output port 4 configuration register', 'Switch debounce enable 0', 'Switch debounce enable 1', 'Switch debounce count']
class nxp_periph.GPIO.PCAL65xx_base(i2c, address)[source]

Bases: PCAL6xxx_base

AUTO_INCREMENT = 128
dump()[source]

dump register values

Returns:

list – List of integers

Return type:

register data

class nxp_periph.GPIO.PCAL6xxx_base(i2c, address, auto_increment_flag=0)[source]

Bases: GPIO_base, I2C_target

dump_reg()[source]

showing all register name, address/pointer and value

property mask
property pull_en
property pull_up
property status
class nxp_periph.GPIO.PCAL9722(spi, cs=None, *, address=32, setup_EVB=False)[source]

Bases: PCAL97xx_base

PCAL9722: 22 bit GPIO expander

ADDR_BIT = 0
DEFAULT_ADDR = 32
N_BITS = 22
N_PORTS = 3
REG_NAME = ['Input Port 0', 'Input Port 1', 'Input Port 2', 'reserved', 'Output Port 0', 'Output Port 1', 'Output Port 2', 'reserved', 'Polarity Inversion port 0', 'Polarity Inversion port 1', 'Polarity Inversion port 2', 'reserved', 'Configuration port 0', 'Configuration port 1', 'Configuration port 2', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'reserved', 'Output drive strength register port 0A', 'Output drive strength register port 0B', 'Output drive strength register port 1A', 'Output drive strength register port 1B', 'Output drive strength register port 2A', 'Output drive strength register port 2B', 'reserved', 'reserved', 'Input latch register port 0', 'Input latch register port 1', 'Input latch register port 2', 'reserved', 'Pull-up/pull-down enable register port 0', 'Pull-up/pull-down enable register port 1', 'Pull-up/pull-down enable register port 2', 'reserved', 'Pull-up/pull-down selection register port 0', 'Pull-up/pull-down selection register port 1', 'Pull-up/pull-down selection register port 2', 'reserved', 'Interrupt mask register port 0', 'Interrupt mask register port 1', 'Interrupt mask register port 2', 'reserved', 'Interrupt status register port 0', 'Interrupt status register port 1', 'Interrupt status register port 2', 'reserved', 'Output port configuration register', 'reserved', 'reserved', 'reserved', 'Interrupt edge register port 0A', 'Interrupt edge register port 0B', 'Interrupt edge register port 1A', 'Interrupt edge register port 1B', 'Interrupt edge register port 2A', 'Interrupt edge register port 2B', 'reserved', 'reserved', 'Interrupt clear register port 0', 'Interrupt clear register port 1', 'Interrupt clear register port 2', 'reserved', 'Input status port 0', 'Input status port 1', 'Input status port 2', 'reserved', 'Individual pin output port 0 configuration register', 'Individual pin output port 1 configuration register', 'Individual pin output port 2 configuration register', 'reserved', 'Switch debounce enable 0', 'Switch debounce enable 1', 'Switch debounce count']
REG_NAME_0x00 = ['Input Port 0', 'Input Port 1', 'Input Port 2', 'reserved', 'Output Port 0', 'Output Port 1', 'Output Port 2', 'reserved', 'Polarity Inversion port 0', 'Polarity Inversion port 1', 'Polarity Inversion port 2', 'reserved', 'Configuration port 0', 'Configuration port 1', 'Configuration port 2']
REG_NAME_0x40 = ['Output drive strength register port 0A', 'Output drive strength register port 0B', 'Output drive strength register port 1A', 'Output drive strength register port 1B', 'Output drive strength register port 2A', 'Output drive strength register port 2B', 'reserved', 'reserved', 'Input latch register port 0', 'Input latch register port 1', 'Input latch register port 2', 'reserved', 'Pull-up/pull-down enable register port 0', 'Pull-up/pull-down enable register port 1', 'Pull-up/pull-down enable register port 2', 'reserved', 'Pull-up/pull-down selection register port 0', 'Pull-up/pull-down selection register port 1', 'Pull-up/pull-down selection register port 2', 'reserved', 'Interrupt mask register port 0', 'Interrupt mask register port 1', 'Interrupt mask register port 2', 'reserved', 'Interrupt status register port 0', 'Interrupt status register port 1', 'Interrupt status register port 2', 'reserved', 'Output port configuration register', 'reserved', 'reserved', 'reserved', 'Interrupt edge register port 0A', 'Interrupt edge register port 0B', 'Interrupt edge register port 1A', 'Interrupt edge register port 1B', 'Interrupt edge register port 2A', 'Interrupt edge register port 2B', 'reserved', 'reserved', 'Interrupt clear register port 0', 'Interrupt clear register port 1', 'Interrupt clear register port 2', 'reserved', 'Input status port 0', 'Input status port 1', 'Input status port 2', 'reserved', 'Individual pin output port 0 configuration register', 'Individual pin output port 1 configuration register', 'Individual pin output port 2 configuration register', 'reserved', 'Switch debounce enable 0', 'Switch debounce enable 1', 'Switch debounce count']
class nxp_periph.GPIO.PCAL97xx_base(spi, cs, *, address=32)[source]

Bases: GPIO_base, SPI_target

property mask
property pull_en
property pull_up
read_registers(reg, length)[source]

reading registers

Parameters:
  • reg (string or int) – Register name or register address/pointer.

  • length (int) – Number of bytes for receiveing.

property status
write_registers(reg, data)[source]

writing registers

Parameters:
  • reg (string or int) – Register name or register address/pointer.

  • data (list or int) – Data for sending. List for multibyte sending. List is converted to bytearray before sending. If the data is integer, single byte will be sent.

nxp_periph.GPIO.main()[source]
nxp_periph.GPIO.main_test_PCAL65xx()[source]
nxp_periph.GPIO.main_test_PCAL9722()[source]

nxp_periph.LCD_driver module

class nxp_periph.LCD_driver.PCA8561(i2c, address=56)[source]

Bases: I2C_target

PCA8561: LCD driver

CHAR_PATTERN = {' ': 0, "'": 16385, '*': 10920, '+': 33410, '-': 640, '.': 16384, '/': 2080, '0': 7540, '1': 1088, '2': 5060, '3': 5828, '4': 1744, '5': 5780, '6': 6036, '7': 1092, '8': 6100, '9': 5844, 'A': 2004, 'B': 6068, 'C': 4372, 'D': 37958, 'E': 5012, 'F': 916, 'G': 5908, 'H': 2000, 'I': 36870, 'J': 5440, 'K': 8624, 'L': 4368, 'M': 1400, 'N': 9560, 'O': 5460, 'P': 980, 'Q': 13652, 'R': 9172, 'S': 5780, 'T': 32774, 'U': 5456, 'V': 2352, 'W': 11600, 'X': 10280, 'Y': 32808, 'Z': 6180, '\\': 8200, '|': 32770}
DEFAULT_ADDR = 56
REG_NAME = ['Software_reset', 'Device_ctrl', 'Display_ctrl_1', 'Display_ctrl_2', 'COM0_07_00', 'COM0_15_08', 'COM0_17_16', 'COM1_07_00', 'COM1_15_08', 'COM1_17_16', 'COM2_07_00', 'COM2_15_08', 'COM2_17_16', 'COM3_07_00', 'COM3_15_08', 'COM3_17_16']
char2seg(pos, c)[source]

Character converted to segment pattern.

Generated pattern is stored in reg_buffer. To show the result on the LCD, call PCA8561.flush()

Parameters:
  • pos (int) – Character position (0 to 3 from left)

  • c (str) – A character

clear()[source]

Clear LCD

com_seg(com, seg, v)[source]
flush()[source]

Flash register buffer contents to LCD

putchar(c, buffer_update_only=False)[source]

Print a character on LCD

If the string contains more than 4 characters, the last 4 characters will be shown unless char_per_sec is given.

Parameters:
  • c (str) – A character to print

  • buffer_update_only (bool, default = False) – Character is not shoun in LCD. Just fills str_buffer

puts(s, char_per_sec=0)[source]

Print a string on LCD

If the string contains more than 4 characters, the last 4 characters will be shown unless char_per_sec is given.

Parameters:
  • s (string) – A string to print

  • char_per_sec (float, default = 0) – Character scroll speed

nxp_periph.LCD_driver.main()[source]

nxp_periph.LED_controller module

class nxp_periph.LED_controller.LED(controller, channel)[source]

Bases: object

A class for abstructing LEDs in the system

Using this class, every LED output channels in all LED controllers can be managed as single list. See examples in “examples/LED_demo.py” and “LED_demo_dual_om13321.py”.

property b
property i
property v
class nxp_periph.LED_controller.LED_controller_base(init_val=0)[source]

Bases: object

An abstraction class to make user interface.

buf(ch, val)[source]

Writing PWM setting value into buffer

To improve I2C bandwidth efficiency, buffer&flash operation provided. The buf() method has same interface as pwm() but it doesn’t initiate I2C transfer. It just keeps the setting value in a buffer. The flash() method can be called to initiate I2C transfer when the LED controller need to be updated.

Examples

for i in range( 24 ): self.buf( i, i / 24 ) # LED brightness doesn’t change self.flash() # LED controller updated in this timing

Parameters:
  • ch (int) – Channel number

  • val (int or float) – PWM value stored in buffer. Need to flush to refrect device behavior.

See also

pwm

PWM setting

flash

Flash buffer contents into the LED controller

flush()[source]

Flash buffer contents into the LED controller

See also

buff

Writing PWM setting value into buffer

pwm(*args, alt=False)[source]

PWM setting

Takes 1 or 2 arguments.

If 2 arguments are geven, it takes as register-name/address and PWM setting value.

If only 1 argument is geven, it takes the agrgument as list. The list may need to contain the number of LED controller channels (self.CHANNELS) elements.

I2C transfer will be done each time of this method call. So pwm() method call will change brightness of LED immediately. However, the I2C bandwidth will be wasted if there are too many calls for single output channel operations. To improve bandwidth efficiency, buffer&flash operation can be done. See buf() method description.

Parameters (if 2 arguments given)

args[0]int

Channel number

args[1]int or float

PWM ratio in range of 0~255 or 0.0~1.0

Parameters (if 1 argument given)

args[0]list

The list may need to contain the number of LED controller channels (self.CHANNELS) elements. Values are PWM ratio should be in range of 0~255 or 0.0~1.0

Examples

self.pwm( 2, 0x80 ) # set PWM output channel 2 to 0x80 self.pwm( 2, 0.5 ) # set PWM output channel 2 to 50% self.pwm( [0.2, 0.4, 0.6, 0.8] ) # set PWM output channels (from channel 0)

See also

buff

Writing PWM setting value into buffer

flash

Flash buffer contents into the LED controller

class nxp_periph.LED_controller.PCA9632(i2c, address=98, pwm=0)[source]

Bases: PCA96xx_base

PCA9632 class

For constructing an instance, following parameters can be used.

Parameters:
  • i2c (machine.I2C instance) –

  • address (int) – I2C target (device) address

  • pwm (int, option) – Initial PWM value

  • iref (int, option) – Initial IREF (current setting) value

  • current_control (bool, default False) – Brightness control switch PWM or current.

Examples

>>> i2c   = I2C( 0, freq = (400 * 1000) ) # I2C with 400kHz setting
>>> led_c = PCA9632( i2c )                    # PCA9632 is connected the I2C
>>> led_c.pwm( 0, 0.5 )                   # set PWM = 50% for output channel 0
CHANNELS = 4
DEFAULT_ADDR = 98
PWM_INIT = 0
REG_NAME = ('MODE1', 'MODE2', 'PWM0', 'PWM1', 'PWM2', 'PWM3', 'GRPPWM', 'GRPFREQ', 'LEDOUT', 'SUBADR1', 'SUBADR2', 'SUBADR3', 'ALLCALLADR')
class nxp_periph.LED_controller.PCA96xx_base(i2c, address=98, pwm=0)[source]

Bases: LED_controller_base, I2C_target

An abstraction class for PCA995x family

AUTO_INCREMENT = 128
DEFAULT_ADDR = 98
PWM_INIT = 0
class nxp_periph.LED_controller.PCA9955B(i2c, address=112, pwm=0, iref=16, current_control=False, setup_EVB=False)[source]

Bases: PCA995xB_base, gradation_control

PCA9955B class

For constructing an instance, following parameters can be used.

Parameters:
  • i2c (machine.I2C instance) –

  • address (int) – I2C target (device) address

  • pwm (int, option) – Initial PWM value

  • iref (int, option) – Initial IREF (current setting) value

  • current_control (bool, default False) – Brightness control switch PWM or current.

Examples

>>> i2c   = I2C( 0, freq = (400 * 1000) ) # I2C with 400kHz setting
>>> led_c = PCA9955B( i2c )                   # PCA9955B is connected the I2C
>>> led_c.pwm( 0, 0.5 )                   # set PWM = 50% for output channel 0
CHANNELS = 16
GRAD_GRPS = 4
REG_NAME = ('MODE1', 'MODE2', 'LEDOUT0', 'LEDOUT1', 'LEDOUT2', 'LEDOUT3', 'GRPPWM', 'GRPFREQ', 'PWM0', 'PWM1', 'PWM2', 'PWM3', 'PWM4', 'PWM5', 'PWM6', 'PWM7', 'PWM8', 'PWM9', 'PWM10', 'PWM11', 'PWM12', 'PWM13', 'PWM14', 'PWM15', 'IREF0', 'IREF1', 'IREF2', 'IREF3', 'IREF4', 'IREF5', 'IREF6', 'IREF7', 'IREF8', 'IREF9', 'IREF10', 'IREF11', 'IREF12', 'IREF13', 'IREF14', 'IREF15', 'RAMP_RATE_GRP0', 'STEP_TIME_GRP0', 'HOLD_CNTL_GRP0', 'IREF_GRP0', 'RAMP_RATE_GRP1', 'STEP_TIME_GRP1', 'HOLD_CNTL_GRP1', 'IREF_GRP1', 'RAMP_RATE_GRP2', 'STEP_TIME_GRP2', 'HOLD_CNTL_GRP2', 'IREF_GRP2', 'RAMP_RATE_GRP3', 'STEP_TIME_GRP3', 'HOLD_CNTL_GRP3', 'IREF_GRP3', 'GRAD_MODE_SEL0', 'GRAD_MODE_SEL1', 'GRAD_GRP_SEL0', 'GRAD_GRP_SEL1', 'GRAD_GRP_SEL2', 'GRAD_GRP_SEL3', 'GRAD_CNTL', 'OFFSET', 'SUBADR1', 'SUBADR2', 'SUBADR3', 'ALLCALLADR', 'PWMALL', 'IREFALL', 'EFLAG0', 'EFLAG1', 'EFLAG2', 'EFLAG3')
class nxp_periph.LED_controller.PCA9956B(i2c, address=112, pwm=0, iref=16, current_control=False, setup_EVB=False)[source]

Bases: PCA995xB_base

PCA9956B class

For constructing an instance, following parameters can be used.

Parameters:
  • i2c (machine.I2C instance) –

  • address (int) – I2C target (device) address

  • pwm (int, option) – Initial PWM value

  • iref (int, option) – Initial IREF (current setting) value

  • current_control (bool, default False) – Brightness control switch PWM or current.

Examples

>>> i2c   = I2C( 0, freq = (400 * 1000) ) # I2C with 400kHz setting
>>> led_c = PCA9956B( i2c )                   # PCA9956B is connected the I2C
>>> led_c.pwm( 0, 0.5 )                   # set PWM = 50% for output channel 0
CHANNELS = 24
REG_NAME = ('MODE1', 'MODE2', 'LEDOUT0', 'LEDOUT1', 'LEDOUT2', 'LEDOUT3', 'LEDOUT4', 'LEDOUT5', 'GRPPWM', 'GRPFREQ', 'PWM0', 'PWM1', 'PWM2', 'PWM3', 'PWM4', 'PWM5', 'PWM6', 'PWM7', 'PWM8', 'PWM9', 'PWM10', 'PWM11', 'PWM12', 'PWM13', 'PWM14', 'PWM15', 'PWM16', 'PWM17', 'PWM18', 'PWM19', 'PWM20', 'PWM21', 'PWM22', 'PWM23', 'IREF0', 'IREF1', 'IREF2', 'IREF3', 'IREF4', 'IREF5', 'IREF6', 'IREF7', 'IREF8', 'IREF9', 'IREF10', 'IREF11', 'IREF12', 'IREF13', 'IREF14', 'IREF15', 'IREF16', 'IREF17', 'IREF18', 'IREF19', 'IREF20', 'IREF21', 'IREF22', 'IREF23', 'OFFSET', 'SUBADR1', 'SUBADR2', 'SUBADR3', 'ALLCALLADR', 'PWMALL', 'IREFALL', 'EFLAG0', 'EFLAG1', 'EFLAG2', 'EFLAG3', 'EFLAG4', 'EFLAG5')
class nxp_periph.LED_controller.PCA9957(spi, cs=None, pwm=0, iref=16, current_control=False, setup_EVB=False)[source]

Bases: PCA9957_base

PCA9957 class

For constructing an instance, following parameters can be used.

Parameters:
  • i2c (machine.I2C instance) –

  • address (int) – I2C target (device) address

  • pwm (int, option) – Initial PWM value

  • iref (int, option) – Initial IREF (current setting) value

  • current_control (bool, default False) – Brightness control switch PWM or current.

Examples

>>> spi         = SPI( 0, 1000 * 1000, cs = 0 )    # I2C with 1MHz setting
>>> led_c       = PCA9957( spi, setup_EVB = True ) # PCA9957 is connected the SPI, PCA9957HN-ARD option used
>>> led_c.pwm( 0, 0.5 )                        # set PWM = 50% for output channel 0
CHANNELS = 24
GRAD_GRPS = 6
REG_NAME = ('MODE1', 'MODE2', 'EFLAG0', 'EFLAG1', 'EFLAG2', 'EFLAG3', 'EFLAG4', 'EFLAG5', 'LEDOUT0', 'LEDOUT1', 'LEDOUT2', 'LEDOUT3', 'LEDOUT4', 'LEDOUT5', 'GRPPWM', 'GRPFREQ', 'PWM0', 'PWM1', 'PWM2', 'PWM3', 'PWM4', 'PWM5', 'PWM6', 'PWM7', 'PWM8', 'PWM9', 'PWM10', 'PWM11', 'PWM12', 'PWM13', 'PWM14', 'PWM15', 'PWM16', 'PWM17', 'PWM18', 'PWM19', 'PWM20', 'PWM21', 'PWM22', 'PWM23', 'IREF0', 'IREF1', 'IREF2', 'IREF3', 'IREF4', 'IREF5', 'IREF6', 'IREF7', 'IREF8', 'IREF9', 'IREF10', 'IREF11', 'IREF12', 'IREF13', 'IREF14', 'IREF15', 'IREF16', 'IREF17', 'IREF18', 'IREF19', 'IREF20', 'IREF21', 'IREF22', 'IREF23', 'RAMP_RATE_GRP0', 'STEP_TIME_GRP0', 'HOLD_CNTL_GRP0', 'IREF_GRP0', 'RAMP_RATE_GRP1', 'STEP_TIME_GRP1', 'HOLD_CNTL_GRP1', 'IREF_GRP1', 'RAMP_RATE_GRP2', 'STEP_TIME_GRP2', 'HOLD_CNTL_GRP2', 'IREF_GRP2', 'RAMP_RATE_GRP3', 'STEP_TIME_GRP3', 'HOLD_CNTL_GRP3', 'IREF_GRP3', 'RAMP_RATE_GRP4', 'STEP_TIME_GRP4', 'HOLD_CNTL_GRP4', 'IREF_GRP4', 'RAMP_RATE_GRP5', 'STEP_TIME_GRP5', 'HOLD_CNTL_GRP5', 'IREF_GRP5', 'GRAD_MODE_SEL0', 'GRAD_MODE_SEL1', 'GRAD_MODE_SEL2', 'GRAD_GRP_SEL0', 'GRAD_GRP_SEL1', 'GRAD_GRP_SEL2', 'GRAD_GRP_SEL3', 'GRAD_GRP_SEL4', 'GRAD_GRP_SEL5', 'GRAD_GRP_SEL6', 'GRAD_GRP_SEL7', 'GRAD_GRP_SEL8', 'GRAD_GRP_SEL9', 'GRAD_GRP_SEL10', 'GRAD_GRP_SEL11', 'GRAD_CNTL0', 'GRAD_CNTL1', 'OFFSET', 'PWMALL', 'IREFALL')
class nxp_periph.LED_controller.PCA9957_base(spi, cs=None, pwm=0, iref=16, current_control=False, setup_EVB=False)[source]

Bases: LED_controller_base, gradation_control, SPI_target

An abstraction class for PCA9957 family (SPI interface with gradation control)

IREF_INIT = 16
PWM_INIT = 0
iref(*args)[source]

output current setting

Arguments are same as pwm()

read_registers(reg, length)[source]

reading register

Parameters:
  • reg (string or int) – Register name or register address/pointer.

  • length (int) – Number of bytes for receiveing.

  • repeated_start (bool, option) – If True, a Repeated-START-condition generated between write and read transactions. If False, a STOP-condition and START-condition are generated between write and read transactions.

write_registers(reg, data)[source]

writing register

Parameters:
  • reg (string or int) – Register name or register address/pointer.

  • data (list or int) – Data for sending. List for multibyte sending. List is converted to bytearray before sending. If the data is integer, single byte will be sent.

class nxp_periph.LED_controller.PCA995xB_base(i2c, address=112, pwm=0, iref=16, current_control=False, setup_EVB=False)[source]

Bases: LED_controller_base, I2C_target

An abstraction class for PCA995xB (I2C interface) family

AUTO_INCREMENT = 128
DEFAULT_ADDR = 112
IREF_INIT = 16
PWM_INIT = 0
dump()[source]

dump register values

Returns:

list – List of integers

Return type:

register data

iref(*args)[source]

output current setting

Arguments are same as pwm()

class nxp_periph.LED_controller.gradation_control[source]

Bases: object

Gradation control class for PCA9955B and PCA9957

The PCA9955B and the PCA9957 has “gradation control” hardware. This class provides interface to control this feature.

A sample code is available: “example/LED_gradation_ctrl.py”

HOLDTIME = [['6', 7], ['4', 6], ['2', 5], ['1', 4], ['0.75', 3], ['0.50', 2], ['0.25', 1], ['0', 0]]
gradation_channel_enable(list, exponential=False)[source]

Specifying channels for gradation control

Parameters:
  • list (int or list) – A channel number or a list of channel numbers

  • exponential (bool, default False) – Enables exponential adjustment for gradation control

gradation_ctrl(group, start, continuous=True)[source]

gradation start/stop

Parameters:
  • group (int or list) – A group number or a list of group numbers

  • start (bool) – True for start, False for stop

  • continuous (bool, default True) – False for single-shot

gradation_group_assign(lists)[source]

Assigns channels into groups

Parameters:

lists (list of list) – Lists of channel list. First list is for group 0, second list is for group 1 …

gradation_start(group, continuous=True)[source]

gradation start for a group

Parameters:
  • group (int or list) – A group number or a list of group numbers

  • continuous (bool, default True) – False for single-shot

gradation_stop(group)[source]

gradation start for a group

Parameters:

group (int or list) – A group number or a list of group numbers

set_gradation(group_num, max_iref, time, up=True, down=True, on=0, off=0)[source]

Calculate and set gradation

Register settings are calculated from given parameters. The calculation done to make finest ramp-up/down steps and closest hold-on/off time

Parameters:
  • group_num (int) – Group number

  • max_iref (float) – Peak output current setting in range of 0.0 - 1.0

  • time (float) – ramp-up/down time [second]

  • up (bool, default True) – ramp-up enable

  • down (bool) – ramp-down enable

  • on (float, default 0.0) – Hold-ON time

  • off (float, default 0.0) – Hold-OFF time

Returns:

total cycle time

Return type:

float

nxp_periph.MikanUtil module

class nxp_periph.MikanUtil.BusInOut(pin_labels, output=False)[source]

Bases: object

config(mode=<MagicMock name='mock.Pin.IN' id='4346988016'>, pull=None)[source]
input()[source]
output()[source]
property v
value(v=None)[source]
class nxp_periph.MikanUtil.MikanUtil[source]

Bases: object

MikanUtility class

classmethod get_sys_rel()[source]

register bit set/clear

Returns:

  • str (return value of os.uname().sysname)

  • float (return value of os.uname().release. major.minor part in float)

classmethod get_timer_id(num)[source]

showing register name, address/pointer and value

Parameters:

num (int) – timer ID candidate

Returns:

int

Return type:

Timer ID which is required for the board

nxp_periph.MikanUtil.main()[source]
nxp_periph.MikanUtil.test_BusInOut()[source]
nxp_periph.MikanUtil.test_get_timer_id()[source]

nxp_periph.RTC module

nxp_periph.RTC.PCF2131(interface, address=83, cs=None)[source]

A constructor interface for PCF2131

Parameters:
  • interface (machine.I2C or machine.SPI object) –

  • address (int, option) – If need to specify (for I2C interface)

  • cs (machine.Pin object) – If need to specify (for SPI interface)

Returns:

returns PCF2131_I2C when interface == I2C returns PCF2131_SPI when interface == SPI

Return type:

PCF2131_I2C or PCF2131_SPI object

Examples

For using I2C
>>> intf = I2C( 0, freq = (400 * 1000) )
>>> rtc  = PCF2131( intf )
For using SPI
>>> intf = SPI( 0, 500 * 1000, cs = 0 )
>>> rtc  = PCF2131( intf )
class nxp_periph.RTC.PCF2131_I2C(interface, address)[source]

Bases: PCF2131_base, I2C_target

PCF2131 class with I2C interface

class nxp_periph.RTC.PCF2131_SPI(interface, cs)[source]

Bases: PCF2131_base, SPI_target

PCF2131 class with SPI interface

class nxp_periph.RTC.PCF2131_base[source]

Bases: RTC_base

An abstraction class for PCF2131 The PCF2131 class can be composed with one of interface class: I2C_target or SPI_target

EVENTS = [{'alarm': 64, 'periodic': 0, 'watchdog': 16, 'xx': 128}, {'battery low': 4, 'battery switch over': 8}, {'ts1': 16, 'ts2': 32, 'ts3': 64, 'ts4': 128}]
EVENT_FLAG0 = {0, 16, 64, 128}
EVENT_FLAG1 = {4, 8}
EVENT_FLAG2 = {16, 32, 64, 128}
EVENT_NAME0 = ('periodic', 'watchdog', 'alarm', 'xx')
EVENT_NAME1 = ('battery switch over', 'battery low')
EVENT_NAME2 = ('ts1', 'ts2', 'ts3', 'ts4')
INT_MASK = {'A': ['INT_A_MASK1', 'INT_A_MASK2'], 'B': ['INT_B_MASK1', 'INT_B_MASK2']}
NUMBER_OF_TIMESTAMP = 4
REG_NAME = ('Control_1', 'Control_2', 'Control_3', 'Control_4', 'Control_5', 'SR_Reset', '100th_Seconds', 'Seconds', 'Minutes', 'Hours', 'Days', 'Weekdays', 'Months', 'Years', 'Second_alarm', 'Minute_alarm', 'Hour_alarm', 'Day_alarm', 'Weekday_alarm', 'CLKOUT_ctl', 'Timestp_ctl1', 'Sec_timestp1', 'Min_timestp1', 'Hour_timestp1', 'Day_timestp1', 'Mon_timestp1', 'Year_timestp1', 'Timestp_ctl2', 'Sec_timestp2', 'Min_timestp2', 'Hour_timestp2', 'Day_timestp2', 'Mon_timestp2', 'Year_timestp2', 'Timestp_ctl3', 'Sec_timestp3', 'Min_timestp3', 'Hour_timestp3', 'Day_timestp3', 'Mon_timestp3', 'Year_timestp3', 'Timestp_ctl4', 'Sec_timestp4', 'Min_timestp4', 'Hour_timestp4', 'Day_timestp4', 'Mon_timestp4', 'Year_timestp4', 'Aging_offset', 'INT_A_MASK1', 'INT_A_MASK2', 'INT_B_MASK1', 'INT_B_MASK2', 'Watchdg_tim_ctl', 'Watchdg_tim_val')
REG_ORDER_ALRM = ('seconds', 'minutes', 'hours', 'day', 'weekday')
REG_ORDER_DT = ('subseconds', 'seconds', 'minutes', 'hours', 'day', 'weekday', 'month', 'year')
REG_ORDER_TS = ('subseconds', 'seconds', 'minutes', 'hours', 'day', 'month', 'year')
class nxp_periph.RTC.PCF85053A(i2c, address=111)[source]

Bases: RTC_base, I2C_target

PCF85053A class

DEFAULT_ADDR = 111
EVENTS = {'a': 8}
EVENT_FLAG = {8}
EVENT_NAME = 'alarm'
INT_MASK = {'A': ['INT_A_MASK1', 'INT_A_MASK2'], 'B': ['INT_B_MASK1', 'INT_B_MASK2']}
REG_NAME = ('Seconds', 'Seconds_alarm', 'Minutes', 'Minutes_alarm', 'Hours', 'Hours_alarm', 'Day_of_the_Week', 'Day_of_the_Month', 'Month', 'Year', 'Control_Register', 'Status_Register', 'CLKOUT_Control', '2nd_Control_Register', 'Scratchpad', 'Version_Register', 'Vendor_ID_Register', 'Model_Register', 'Offset', 'Oscillator', 'Access_config', 'Sec_timestp', 'Min_timestp', 'Hour_timestp', 'DayWk_timestp', 'DayMon_timestp', 'Mon_timestp', 'Year_timestp', 'R_code1', 'R_code2')
REG_ORDER_ALRM = {'hours': 'Hours_alarm', 'minutes': 'Minutes_alarm', 'seconds': 'Seconds_alarm'}
REG_ORDER_DT = {'day': 'Day_of_the_Month', 'hours': 'Hours', 'minutes': 'Minutes', 'month': 'Month', 'seconds': 'Seconds', 'weekday': 'Day_of_the_Week', 'year': 'Year'}
class nxp_periph.RTC.PCF85063A(i2c, address=81)[source]

Bases: RTC_base, I2C_target

PCF85063A class

DEFAULT_ADDR = 81
EVENTS = {'alarm': 64, 'periodic': 8}
EVENT_FLAG = {8, 64}
EVENT_NAME = ('periodic', 'alarm')
INT_MASK = {'A': ['INT_A_MASK1', 'INT_A_MASK2'], 'B': ['INT_B_MASK1', 'INT_B_MASK2']}
REG_NAME = ('Control_1', 'Control_2', 'Offset', 'RAM_byte', 'Seconds', 'Minutes', 'Hours', 'Days', 'Weekdays', 'Months', 'Years', 'Second_alarm', 'Minute_alarm', 'Hour_alarm', 'Day_alarm', 'Weekday_alarm', 'Timer_value', 'Timer_mode')
REG_ORDER_ALRM = ('seconds', 'minutes', 'hours', 'day', 'weekday')
REG_ORDER_DT = ('seconds', 'minutes', 'hours', 'day', 'weekday', 'month', 'year')
class nxp_periph.RTC.PCF85063TP(i2c, address=81)[source]

Bases: PCF85063A

PCF85063TP class

DEFAULT_ADDR = 81
REG_NAME = ('Control_1', 'Control_2', 'Offset', 'RAM_byte', 'Seconds', 'Minutes', 'Hours', 'Days', 'Weekdays', 'Months', 'Years')
class nxp_periph.RTC.PCF86263A(i2c, address=81)[source]

Bases: RTC_base, I2C_target

PCF86263A class

ALARM_KEYS = ('day', 'hours', 'minutes', 'seconds', 'month')
DEFAULT_ADDR = 81
EVENTS = {'alarm1': 2, 'alarm2': 1, 'battery switch': 4, 'periodic': 32, 'timestamp1': 16, 'timestamp2': 8, 'timestamp3': 128, 'watchdog': 64}
EVENT_FLAG = {1, 2, 4, 8, 16, 32, 64, 128}
EVENT_NAME = ('periodic', 'alarm2', 'alarm1', 'watchdog', 'battery switch', 'timestamp3', 'timestamp2', 'timestamp1')
INT_MASK = {'A': ['INTA_enable'], 'B': ['INTB_enable']}
NUMBER_OF_TIMESTAMP = 3
REG_NAME = ('100th_Seconds', 'Seconds', 'Minutes', 'Hours', 'Days', 'Weekdays', 'Months', 'Years', 'Second_alarm1', 'Minute_alarm1', 'Hour_alarm1', 'Day_alarm1', 'Month_alarm1', 'Minute_alarm2', 'Hour_alarm2', 'Weekday_alarm2', 'Alerm_enables', 'TSR1_seconds', 'TSR1_minutes', 'TSR1_hours', 'TSR1_days', 'TSR1_months', 'TSR1_years', 'TSR2_seconds', 'TSR2_minutes', 'TSR2_hours', 'TSR2_days', 'TSR2_months', 'TSR2_years', 'TSR3_seconds', 'TSR3_minutes', 'TSR3_hours', 'TSR3_days', 'TSR3_months', 'TSR3_years', 'TSR_mode', 'Offset', 'Oscillator', 'Battery_switch', 'Pin_IO', 'Function', 'INTA_enable', 'INTB_enable', 'Flags', 'RAM_byte', 'WatchDog', 'Stop_enable', 'Resets')
REG_ORDER_ALRM1 = ('seconds', 'minutes', 'hours')
REG_ORDER_ALRM2 = ('minutes', 'hours', 'weekday')
REG_ORDER_DT = ('subseconds', 'seconds', 'minutes', 'hours', 'day', 'weekday', 'month', 'year')
REG_ORDER_TS = ('seconds', 'minutes', 'hours', 'day', 'month', 'year')
deinit()[source]

de-initialize

software reset performed and date&time is set to ( 2015, 1, 1, 0, 0, 0, 0, None )

pins_init()[source]
timestamp2str(ts_list)[source]

timestamp converted to a str

class nxp_periph.RTC.RTC_base[source]

Bases: object

An abstraction class to make RTC user interface.

“machine.RTC” like interface available but this class doesn’t inherit machine.RTC to separate its behavior

ALARM_KEYS = ('day', 'hours', 'minutes', 'seconds', 'weekday')
DATETIME_TUPPLE_FORM = ('year', 'month', 'day', 'weekday', 'hours', 'minutes', 'seconds', 'subseconds')
DEINIT_TUPLE = {'day': 1, 'hours': 0, 'minutes': 0, 'month': 1, 'seconds': 0, 'subseconds': 0, 'tzinfo': None, 'weekday': 0, 'year': 2015}
DEINIT_VAL = (2015, 1, 1, 0, 0, 0, 0, None)
MNTH = ('None', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December')
NOW_TUPPLE_FORM = ('year', 'month', 'day', 'hours', 'minutes', 'seconds', 'subseconds', 'tzinfo')
WKDY = ('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday')
alarm_int(pin_select, **kwargs)[source]

set alarm interrupt

Parameters:
  • pin_select (string which contains "A" or "B") – This parameter will be ignored if the RTC has only one interrupt output. A character “A” or “B” should be in the string. If both characters are there, it will set “A” interrupt.

  • kwargs (dict) – A dictionaly which contains keys of “day”, “hours”, “minutes”, “seconds” and “weekday”. Parameter which was not specified in the dictionary will not be set. For instance, {“minutes”:37} is given, The alarm will notify every hour at xx:37.

battery_switchover(switch)[source]

enabling battery switch over

Parameters:

switch (bool) – Enable battery switch-over by True

classmethod bcd2bin(value)[source]

converts binary-coded-decimal (BCD) to normal int

Parameters:

value (int) – BCD

Returns:

int

Return type:

normal integer

classmethod bin2bcd(value)[source]

converts normal int to binary-coded-decimal (BCD)

Parameters:

value (int) – normal integer number

Returns:

int

Return type:

BCD

cancel()[source]

cancel alarm

check_events(events)[source]

translate events from flags to names

Parameters:

events (list of event flags) –

Returns:

list

Return type:

list of event names

clear_alarm()[source]

disabling alarm interrupt

datetime(*args)[source]

get/set date&time

IF NO ARGUMENT GIVEN, it returns tuple of ( “year”, “month”, “day”, “weekday”, “hours”, “minutes”, “seconds”, “subseconds” ) IF 1 OR 2 ARGUMENT ARE GIVEN, it sets date&time the 1st argument should be 8-tuple in format with ( “year”, “month”, “day”, “hours”, “minutes”, “seconds”, “subseconds”, “tzinfo” ) the tzinfo is a dummy and it will be ignored.

Parameters:

args[0] (8-tuple, optional) – tuple of date&time

Returns:

tuple

( “year”, “month”, “day”, “hours”,
”minutes”, “seconds”, “subseconds”, “tzinfo” )

tzinfo is a dummy

Return type:

date&time info

deinit()[source]

de-initialize

software reset performed and date&time is set to ( 2015, 1, 1, 0, 0, 0, 0, None )

init(datetime, form=('year', 'month', 'day', 'hours', 'minutes', 'seconds', 'subseconds', 'tzinfo'), weekday=0)[source]

set date&time

Parameters:
  • datetime (tuple, optional) – date&time tuple. ( “year”, “month”, “day”, “hours”, “minutes”, “seconds”, “subseconds”, “tzinfo” ) Need to have first 3 elements at least: “year”, “month” and “day”. Other elements are optional tzinfo is not required (ignored)

  • weekday (int, optional) – weekday number : 0~6 (default=0)

interrupt_clear()[source]

interrupt clear

Returns:

list

Return type:

list of flags

now()[source]

get current date&time

Returns:

tuple

( “year”, “month”, “day”, “hours”,
”minutes”, “seconds”, “subseconds”, “tzinfo” )

tzinfo is a dummy

Return type:

date&time info

oscillator_stopped()[source]

detects the RTC was beeing reset

Returns:

bool – True = stopped False = never

Return type:

active state

periodic_interrupt(pin_select='A', period=1)[source]

set periodic (every minutes or seconds) interrupt

Parameters:
  • pin_select (string which contains "A" or "B") – This parameter will be ignored if the RTC has only one interrupt output. A character “A” or “B” should be in the string. If both characters are there, it will set “A” interrupt.

  • period (int, option) – Periodic interrupt interval

set_timestamp_interrupt(num, pin_select='B', last_event=True)[source]

set timestamp interrupt

Parameters:
  • pin_select (string which contains "A" or "B", default "B") – This parameter will be ignored if the RTC has only one interrupt output. A character “A” or “B” should be in the string. If both characters are there, it will set “A” interrupt.

  • num (int) – timestamp number

  • last_event (bool, option) – In default (True), the timestamp stores last event date&time If False, it will store first event date&time

timer_alarm(hours=0, minutes=0, seconds=0, pin_select='B')[source]

set timer

Parameters:
  • hours (int) –

  • minutes (int) –

  • seconds (int) –

  • pin_select (string which contains "A" or "B", default "B") – This parameter will be ignored if the RTC has only one interrupt output. A character “A” or “B” should be in the string. If both characters are there, it will set “A” interrupt.

timestamp()[source]

get timestamp

Parameters:

num (int) – timestamp number

Returns:

  • tuple (date&time info) –

    ( “year”, “month”, “day”, “hours”,
    ”minutes”, “seconds”, “subseconds”, “tzinfo” )

    tzinfo is a dummy

  • bool (timestamp event storing mode) – True = last event storing False = forst event storing

  • bool (active state) – True = active False = disabled

timestamp2str(ts_list)[source]

timestamp converted to a str

classmethod tuple2dt(datetime, form, weekday=0)[source]

converts a tuple format data into a dict

Parameters:
  • datetime (tuple) –

  • form (string) – tuple or list of key labels

  • weekday (int, default = 0) –

Returns:

dict with keys of NOW_TUPPLE_FORM

Return type:

dict

classmethod tuple2str(tpl, form)[source]

converts a tuple format data into a string

Parameters:
  • datetime (tuple) –

  • form (sstringtr) – tuple or list of key labels

Return type:

string

nxp_periph.accelerometer module

class nxp_periph.accelerometer.ACCELEROMETER_base[source]

Bases: object

An abstraction class to make user interface.

dump()[source]

Overriding “dump()” in nxp_periph.interface class

fullscale(g)[source]

Fullscale setting

Parameters:

g (settting value) –

three_axis(reg)[source]

get 3-axis data

Parameters:

reg (int or string) – 1st register pointer or name

Returns:

int, int, int

Return type:

3 integers as 16bit register values

xyz()[source]

get 3-axis “g” (gravitational acceleration) data

Parameters :returns: float, float, float :rtype: 3 “g” values

class nxp_periph.accelerometer.FXLS8974(i2c, address=25)[source]

Bases: ACCELEROMETER_base, I2C_target

FXLS8974: 3-axis accerelometer

A device class for a 3-axis accerelometer This class enables to get its realtime data

DEFAULT_ADDR = 25
REG_NAME = ('INT_STATUS', 'TEMP_OUT', 'VECM_LSB', 'VECM_MSB', 'OUT_X_LSB', 'OUT_X_MSB', 'OUT_Y_LSB', 'OUT_Y_MSB', 'OUT_Z_LSB', 'OUT_Z_MSB', 'RESERVED_REG1', 'BUF_STATUS', 'BUF_X_LSB', 'BUF_X_MSB', 'BUF_Y_LSB', 'BUF_Y_MSB', 'BUF_Z_LSB', 'BUF_Z_MSB', 'PROD_REV', 'WHO_AM_I', 'SYS_MODE', 'SENS_CONFIG1', 'SENS_CONFIG2', 'SENS_CONFIG3', 'SENS_CONFIG4', 'SENS_CONFIG5', 'WAKE_IDLE _LSB', 'WAKE_IDLE_MSB', 'SLEEP_IDLE_LSB', 'SLEEP_IDLE_MSB', 'ASLP_COUNT_LSB', 'ASLP_COUNT_MSB', 'INT_EN', 'INT_PIN_SEL', 'OFF_X', 'OFF_Y', 'OFF_Z', 'RESERVED_REG2', 'BUF_CONFIG1', 'BUF_CONFIG2', 'ORIENT_STATUS', 'ORIENT_CONFIG', 'ORIENT_DBCOUNT', 'ORIENT_BF_ZCOMP', 'ORIENT_THS_REG', 'SDCD_INT_SRC1', 'SDCD_INT_SRC2', 'SDCD_CONFIG1', 'SDCD_CONFIG2', 'SDCD_OT_DBCNT', 'SDCD_WT_DBCNT', 'SDCD_LTHS_LSB', 'SDCD_LTHS_MSB', 'SDCD_UTHS_LSB', 'SDCD_UTHS_MSB', 'SELF_TEST_CONFIG1', 'SELF_TEST_CONFIG2')
class nxp_periph.accelerometer.FXOS8700(i2c, address=31)[source]

Bases: ACCELEROMETER_base, I2C_target

FXOS8700: 6-axis accerelometer and magnetometer

A device class for a 6-axis accerelometer and magnetometer This class enables to get its realtime data

DEFAULT_ADDR = 31
REG_NAME = ('STATUS', 'OUT_X_MSB', 'OUT_X_LSB', 'OUT_Y_MSB', 'OUT_Y_LSB', 'OUT_Z_MSB', 'OUT_Z_LSB', 'Reserved', 'Reserved', 'F_SETUP', 'TRIG_CFG', 'SYSMOD', 'INT_SOURCE', 'WHO_AM_I', 'XYZ_DATA_CFG', 'HP_FILTER_CUTOFF', 'PL_STATUS', 'PL_CFG', 'PL_COUNT', 'PL_BF_ZCOMP', 'PL_THS_REG', 'A_FFMT_CFG', 'A_FFMT_SRC', 'A_FFMT_THS', 'A_FFMT_COUNT', 'Reserved', 'Reserved', 'Reserved', 'Reserved', 'TRANSIENT_CFG', 'TRANSIENT_SRC', 'TRANSIENT_THS', 'TRANSIENT_COUNT', 'PULSE_CFG', 'PULSE_SRC', 'PULSE_THSX', 'PULSE_THSY', 'PULSE_THSZ', 'PULSE_TMLT', 'PULSE_LTCY', 'PULSE_WIND', 'ASLP_COUNT', 'CTRL_REG1', 'CTRL_REG2', 'CTRL_REG3', 'CTRL_REG4', 'CTRL_REG5', 'OFF_X', 'OFF_Y', 'OFF_Z', 'M_DR_STATUS', 'M_OUT_X_MSB', 'M_OUT_X_LSB', 'M_OUT_Y_MSB', 'M_OUT_Y_LSB', 'M_OUT_Z_MSB', 'M_OUT_Z_LSB', 'CMP_X_MSB', 'CMP_X_LSB', 'CMP_Y_MSB', 'CMP_Y_LSB', 'CMP_Z_MSB', 'CMP_Z_LSB', 'M_OFF_X_MSB', 'M_OFF_X_LSB', 'M_OFF_Y_MSB', 'M_OFF_Y_LSB', 'M_OFF_Z_MSB', 'M_OFF_Z_LSB', 'MAX_X_MSB', 'MAX_X_LSB', 'MAX_Y_MSB', 'MAX_Y_LSB', 'MAX_Z_MSB', 'MAX_Z_LSB', 'MIN_X_MSB', 'MIN_X_LSB', 'MIN_Y_MSB', 'MIN_Y_LSB', 'MIN_Z_MSB', 'MIN_Z_LSB', 'TEMP', 'M_THS_CFG', 'M_THS_SRC', 'M_THS_X_MSB', 'M_THS_X_LSB', 'M_THS_Y_MSB', 'M_THS_Y_LSB', 'M_THS_Z_MSB', 'M_THS_Z_LSB', 'M_THS_COUNT', 'M_CTRL_REG1', 'M_CTRL_REG2', 'M_CTRL_REG3', 'M_INT_SRC', 'A_VECM_CFG', 'A_VECM_THS_MSB', 'A_VECM_THS_LSB', 'A_VECM_CNT', 'A_VECM_INITX_MSB', 'A_VECM_INITX_LSB', 'A_VECM_INITY_MSB', 'A_VECM_INITY_LSB', 'A_VECM_INITZ_MSB', 'A_VECM_INITZ_LSB', 'M_VECM_CFG', 'M_VECM_THS_MSB', 'M_VECM_THS_LSB', 'M_VECM_CNT', 'M_VECM_INITX_MSB', 'M_VECM_INITX_LSB', 'M_VECM_INITY_MSB', 'M_VECM_INITY_LSB', 'M_VECM_INITZ_MSB', 'M_VECM_INITZ_LSB', 'A_FFMT_THS_X_MSB', 'A_FFMT_THS_X_LSB', 'A_FFMT_THS_Y_MSB', 'A_FFMT_THS_Y_LSB', 'A_FFMT_THS_Z_MSB', 'A_FFMT_THS_Z_LSB', 'Reserved')
mag()[source]

get 3-axis magnetometer output in nano-Tesla

Parameters :returns: int, int, int :rtype: 3-axis magnetometer output values

six_axis()[source]

get 6-axis accelerometer and magnetometer outputs

Parameters :returns: int, int, int :rtype: 3-axis accelerometer 3-axis magnetometer outputs as 16bit register values

nxp_periph.accelerometer.main()[source]

nxp_periph.afe module

class nxp_periph.afe.AFE_base[source]

Bases: object

An abstraction class to make user interface.

class nxp_periph.afe.NAFE13388(spi, cs=None)[source]

Bases: AFE_base, SPI_target

NAFE13388: Analog Front-End

A device class for a 8 channel AFE This class enables to get its measured voltage

boot()[source]

Boot-up procedure

ch_cnfg_reg = [32, 33, 34, 35]
die_temp()[source]

Die temperature

Returns:

float

Return type:

Die temperature in celcius

dump(list)[source]

Register dump

Parameters:

list (list) – List of register address/pointer.

logical_ch_config(logical_channel, list)[source]

Logical channel configuration

Parameters:

list (list) – List of register values for register 0x20, 0x21, 0x22 and 0x23

measure(ch=None)[source]

Measure input voltage

Parameters:

ch (int) – Logical input channel number or None

Returns:

  • float in voltage (microvolt) if “ch” was given

  • list of raw measured values if “ch” was not given

periodic_measurement_start()[source]

AFE periodic operation starter

read(ch=None)[source]

Read input value

Parameters:

ch (int) – Logical input channel number or None This part need to be implemented

Return type:

list of raw measured values if “ch” was not given

read_r16(reg, signed=False)[source]

reading 16bit register

Parameters:
  • reg (int) – Register address/pointer.

  • signed (bool) – Switch to select the data in signed or unsigned (default: signed)

Returns:

int

Return type:

register value

read_r24(reg)[source]

reading 24bit register

Parameters:

reg (int) – Register address/pointer.

Returns:

int

Return type:

register value

reset()[source]

Reset procedure

sch_cb(_)[source]

AFE periodic operation callback via tim_cb()

tim_cb(tim_obj)[source]

timer callback

write_r16(reg, val=None)[source]

writing 16bit register

Parameters:
  • reg (int) – Register address/pointer.

  • val (int) – 16bit data

nxp_periph.afe.main()[source]

nxp_periph.ard_brd_dev module

nxp_periph.ard_brd_dev.AD5161(interface, address=45, cs=None)[source]

A constructor interface for AD5161

Parameters:
  • interface (machine.I2C or machine.SPI object) –

  • address (int, option) – If need to specify (for I2C interface)

  • cs (machine.Pin object) – If need to specify (for SPI interface)

Returns:

returns AD5161_I2C when interface == I2C returns AD5161_SPI when interface == SPI

Return type:

AD5161_I2C or AD5161_SPI object

Examples

For using I2C
>>> intf = I2C( 0, freq = (400 * 1000) )
>>> rtc  = AD5161( intf )
For using SPI
>>> intf = SPI( 0, 500 * 1000, cs = 0 )
>>> rtc  = AD5161( intf )
class nxp_periph.ard_brd_dev.AD5161_I2C(i2c, address=45)[source]

Bases: Potentiometer_base, I2C_target

DEFAULT_ADDR = 45
value(v=None)[source]
class nxp_periph.ard_brd_dev.AD5161_SPI(spi, cs=None)[source]

Bases: Potentiometer_base, SPI_target

DEFAULT_ADDR = 45
value(v=None)[source]
exception nxp_periph.ard_brd_dev.EEPROM_Error[source]

Bases: Exception

Just a class for EEPROM exception handling

class nxp_periph.ard_brd_dev.EEPROM_base[source]

Bases: object

An abstraction class to make user interface.

read(byte_addr, length, format=None)[source]

read data

Parameters:
  • byte_addr (int) – Start byte address for EEPROM data writing

  • length (int) – Data length to read

  • format (str (option)) – If format is “str”, it will return data in string

Returns:

int

Return type:

Written data length

wait_write_complete(times=10)[source]

wait loop until write complete

This will raise exception if write couldn;t be completed

Parameters:

times (int (option)) – loop time setting

Returns:

int

Return type:

Written data length

write(byte_addr, data)[source]

write data

Parameters:
  • byte_addr (int) – Start byte address for EEPROM data writing

  • data (list or str) –

Returns:

int

Return type:

Written data length

class nxp_periph.ard_brd_dev.M24C02(i2c, address=80)[source]

Bases: EEPROM_base, I2C_target

DEFAULT_ADDR = 80
class nxp_periph.ard_brd_dev.Potentiometer_base[source]

Bases: object

nxp_periph.ard_brd_dev.main()[source]
nxp_periph.ard_brd_dev.test_AD5161(sel_I2C=True)[source]
nxp_periph.ard_brd_dev.test_M24C02()[source]

nxp_periph.bus_mux_switch module

class nxp_periph.bus_mux_switch.BusMuxSwitch_base[source]

Bases: object

An abstraction class to make user interface.

class nxp_periph.bus_mux_switch.PCA9846(i2c, address=113)[source]

Bases: BusMuxSwitch_base, I2C_target

PCA9846: 4 channel I2C bus switch

A device class for a 4 channel I2C bus switch : PCA9846

CH0 = 1
CH1 = 2
CH2 = 4
CH3 = 8
DEFAULT_ADDR = 113
N_CH = 4
select(sel=None)[source]

channel select

Parameters:

sel (int or None) – Bit pattern to select channels. 0b0001 is to enable channel 0, 0b0010 for ch2.. If this parameter is not given, it will return current setting bit pattern

Returns:

int

Return type:

Bit pattern if no parameter given

nxp_periph.bus_mux_switch.main()[source]

nxp_periph.interface module

class nxp_periph.interface.I2C_target(i2c, address, auto_increment_flag=0, ignore_fail=True)[source]

Bases: Interface

An abstraction class to provide I2C device access. It helps to keep target address and communication.

For register access methods, the register can be specified by its name or register address/pointer. The name of registers may needed to be defined as REG_NAME in inherited class (device class).

ping()[source]

ping for a device

Access to the device with just its target address without data. If the device returned ACK, it keeps self.live=True. If device rturned NACK, the self.live is changed to False.

Returns:

bool

Return type:

Returns self.live

read_registers(reg, length, repeated_start=True, barray=False)[source]

reading registers

Parameters:
  • reg (string or int) – Register name or register address/pointer.

  • length (int) – Number of bytes for receiveing.

  • repeated_start (bool, option) – If True, a Repeated-START-condition generated between write and read transactions. If False, a STOP-condition and START-condition are generated between write and read transactions.

Examples

data = self.read_registers( “PWM0”, 1 ): # single byte reading, returns an int data = self.read_registers( “PWM0”, 4 ): # 4 bytes reading, returns a list data = self.read_registers( 10, 4 ): # register specified by address

receive(length, retry=3, barray=False)[source]

receive data (generate read transaction)

Receiving list-data from the device. It trys receiving 3 times if the device respond NACK. If the device is kept not responding, the self.live is set to False to prevent further access to the failed device.

Forcing self.live=True can re-live the device.

Parameters:

length (int) – Number of bytes for receiveing.

Returns:

list – List of integers which was converted from bytearray.

Return type:

received data

send(tsfr, stop=True, retry=3)[source]

send data (generate write transaction)

Sending list-data to the device. It trys sending 3 times if the device respond NACK. If the device is kept not responding, the self.live is set to False to prevent further access to the failed device.

Forcing self.live=True can re-live the device.

Parameters:
  • tsfr (list) – Data for sending. List of integers will be converted to bytearray before sending.

  • stop (bool) – STOP-condition generated after the transaction. Use False to generate Repeated-START-condition on next transaction.

write_registers(reg, data)[source]

writing registers

Parameters:
  • reg (string or int) – Register name or register address/pointer.

  • data (list or int) – Data for sending. List for multibyte sending. List is converted to bytearray before sending. If the data is integer, single byte will be sent.

Examples

self.write_registers( “PWM0”, 0xFF ): # single byte writing self.write_registers( “PWM0”, [0xFF] * 4 ): # 4 bytes writing self.write_registers( 10, [0xFF] * 4 ): # register specified by address

exception nxp_periph.interface.I2C_target_Error[source]

Bases: Exception

Just a class for I2C exception handling

class nxp_periph.interface.Interface[source]

Bases: object

An abstraction class to provide common methods for devices

bit_operation(reg, target_bits, value)[source]

register bit set/clear

Parameters:
  • reg (string or int) – Register name or register address/pointer.

  • target_bits (int) – select target bits by setting its bit position 1

  • value (int) – set/clear value. The bits only set/cleared with same position at 1 in target_bits.

Returns:

  • int (register value before modifying)

  • int (register value after modifying)

dev_access()[source]

device access information

Returns:

string

Return type:

device access information

dump()[source]

dump register values

Returns:

list – List of integers

Return type:

register data

dump_reg()[source]

showing all register name, address/pointer and value

info()[source]

device information

Returns:

string

Return type:

device information

show_reg(reg_name)[source]

showing register name, address/pointer and value

Parameters:

reg (string) – Register name

class nxp_periph.interface.SPI_target(spi, cs=None)[source]

Bases: Interface

An abstraction class to provide SPI device access. It helps to keep target access method and communication.

For register access methods, the register can be specified by its name or register address/pointer. The name of registers may needed to be defined as REG_NAME in inherited class (device class).

property chip_select
read_registers(reg, length)[source]

reading registers

Parameters:
  • reg (string or int) – Register name or register address/pointer.

  • length (int) – Number of bytes for receiveing.

  • repeated_start (bool, option) – If True, a Repeated-START-condition generated between write and read transactions. If False, a STOP-condition and START-condition are generated between write and read transactions.

receive(tsfr)[source]

receive data (generate write & read transaction)

Parameters:

tsfr (list) – Data for sending. List of integers will be converted to bytearray before sending.

Returns:

list – List of integers which was converted from bytearray.

Return type:

received data

send(data)[source]

send data (generate write transaction)

Parameters:

tsfr (list) – Data for sending. List of integers will be converted to bytearray before sending.

write_registers(reg, data)[source]

writing registers

Parameters:
  • reg (string or int) – Register name or register address/pointer.

  • data (list or int) – Data for sending. List for multibyte sending. List is converted to bytearray before sending. If the data is integer, single byte will be sent.

class nxp_periph.interface.abstract_target[source]

Bases: Interface

An abstraction class for off-line test. No physical access will be performed with this class.

read_registers(reg, length, repeated_start=True)[source]
receive(length)[source]
send(tsfr)[source]
write_registers(reg, data)[source]
nxp_periph.interface.i2c_fullscan(i2c)[source]

I2C scan for full range of target addresses. Because the machine.I2C.scan() does scan is limited in range of 0x08(0x10) to 0x77(0xEE).

Parameters:

i2c (obj) – machine.I2C instance

Returns:

list

Return type:

Responding target ddress list

nxp_periph.protocol_bridge module

nxp_periph.protocol_bridge.SC16IS7xx(interface, address=72, cs=None, channel=0, osc=14746500, baud=9600, bits=8, parity=None, stop=1)[source]

A constructor interface for SC16IS7xx

Parameters:
  • interface (machine.I2C or machine.SPI object) –

  • address (int, option) – If need to specify (for I2C interface)

  • cs (machine.Pin object) – If need to specify (for SPI interface)

  • channel (int, default 0) – UART channel mumber. 1 can be used for SC16IS752 and SC16IS762

  • osc (int, default 14746500) – X-tal frequency

  • baud (int, default 9600) – Baudrate setting

  • bits (int, default 8) – UART word length setting. 5, 6, 7 or 8 can be used

  • parity (int or None, default None) – None for no parity 0 for odd, 1 for even parity

  • stop (int, default 1) – Stop bit setting. 1 or 2

Returns:

returns SC16IS7xx_I2C when interface == I2C returns SC16IS7xx_SPI when interface == SPI

Return type:

SC16IS7xx_I2C or SC16IS7xx_SPI object

class nxp_periph.protocol_bridge.SC16IS7xx_I2C(interface, address, cs=0, channel=0, osc=14746500, baud=9600, bits=8, parity=None, stop=1)[source]

Bases: SC16IS7xx_base, I2C_target

SC16IS7xx class with I2C interface

info()[source]

Not overriding interface.info() since inheritance structure can not allow This methos is called by SC16IS7xx_I2C and SC16IS7xx_SPI classes

class nxp_periph.protocol_bridge.SC16IS7xx_SPI(interface, cs=0, channel=0, osc=14746500, baud=9600, bits=8, parity=None, stop=1)[source]

Bases: SC16IS7xx_base, SPI_target

SC16IS7xx class with SPI interface

info()[source]

Not overriding interface.info() since inheritance structure can not allow This methos is called by SC16IS7xx_I2C and SC16IS7xx_SPI classes

read_registers(reg, n)[source]

Overriding interface.read_registers() for device specific access method

write_registers(reg, v)[source]

Overriding interface.read_registers() for device specific access method

class nxp_periph.protocol_bridge.SC16IS7xx_base(channel=0, osc=14746500, baud=9600, bits=8, parity=None, stop=1)[source]

Bases: object

A base class to abstract behavior of SC16IS7xx.

This makes SC16IS7xx behavior independent from interface.

REG_DICT = {'DLH': 1, 'DLL': 0, 'EFCR': 15, 'EFR': 2, 'FCR': 2, 'IER': 1, 'IIR': 2, 'IOControl': 14, 'IODir': 10, 'IOIntEna': 12, 'IOState': 11, 'LCR': 3, 'LSR': 5, 'MCR': 4, 'MSR': 6, 'RHR': 0, 'RXLVL': 9, 'SPR': 7, 'TCR': 6, 'THR': 0, 'TLR': 7, 'TXLVL': 8, 'XOFF1': 6, 'XOFF2': 7, 'XON1': 4, 'XON2': 5}
any()[source]

returns True if received data available

baud(baud)[source]

baudrate setting

Parameters:

baud (int) – baudrate

flush()[source]

wait all data in TX buffer to be sent

info()[source]

Not overriding interface.info() since inheritance structure can not allow This methos is called by SC16IS7xx_I2C and SC16IS7xx_SPI classes

read(*args)[source]

get received data

This method can take single argument to specify length of receiving data

Parameters:

args[0] (int, option) – length of receiving data

Returns:

received data

Return type:

list

reg_access(*args)[source]

register access interface

SC16IS7xx is not having register structure like LED controllers (PCA995x). Use this method to access the registers.

This method can take two arguments. 1st argument is a register address or name. 2nd argument can be a value for register writing. If no 2nd argument given, the method returns register read value.

Parameters:
  • args[0] (int or string) – register address of name

  • args[1] (int, option) – method returns this 2nd argument is not available

Returns:

register value

Return type:

int, if 2nd argument is not exist

Examples

>>> self.reg_access( "LCR", 0x80 )      # writing
>>> lcr = self.reg_access( "LCR" )      # reading
sendbreak(duration=0.1)[source]

sends break: keeps TX signal LOW for specified duration

Parameters:

duration (float) – keeps TX signal LOW for given second

thr_ready()[source]

retruns True when THR register is ready to be written

wait_tx_ready()[source]

wait until THR register is ready to be written

write(data)[source]

data to be sent on TX

Parameters:

data (int or list) – data on TX

class nxp_periph.protocol_bridge.SC18IS606(i2c, csn, address=40, int=None, baudrate=1875000, polarity=0, phase=0, firstbit=<MagicMock name='mock.SPI.MSB' id='4346829504'>)[source]

Bases: I2C_target

SC18IS606 class

The instance of SC18IS606 class will be machine.SPI compatible object.

Examples

When an AT25010 is connected to an SPI… >>> spi = SPI( 0, 1000 * 1000, cs = 0 ) >>> eeprom = AT25010( spi ) When an AT25010 is connected through SC18IS606… >>> i2c = I2C( 0, 400 * 1000 ) >>> bridge = SC18IS606( i2c, 1, int = Pin( “D2”, Pin.IN, Pin.PULL_UP ) ) >>> eeprom = AT25010( bridge ) # Give SC18IS606 instance as an SPI

DEFAULT_ADDRESS = 40
FuncID_Clear_Interrupt = 241
FuncID_Configure_SPI_Interface = 240
FuncID_GPIO_Configuration = 246
FuncID_GPIO_Enable = 245
FuncID_GPIO_Read = 244
FuncID_GPIO_Write = 243
FuncID_Idle_mode = 242
FuncID_Read_Version = 254
FuncID_SPI_read_and_write = 0
LSB = <MagicMock name='mock.SPI.LSB' id='4346833344'>
MSB = <MagicMock name='mock.SPI.MSB' id='4346829504'>
command(data)[source]

command to SC18IS606

Parameters:

data (list) – Sends data to SC18IS606

info()[source]

overrides interface.info() for additional information

init(baudrate=1875000, polarity=0, phase=0, firstbit=<MagicMock name='mock.SPI.MSB' id='4346829504'>)[source]

setting SPI parameters

read(nbytes, write=0)[source]

machine.SPI.read() compatible

readinto(buf, write=0)[source]

machine.SPI.readinto() compatible

receive(data)[source]

send/receive on SPI and return data when completed (blocking transfer)

Parameters:

data (list) – send data on SPI

Returns:

received data

Return type:

list

send(data)[source]

send data on SPI and return when completed (blocking transfer)

Parameters:

data (list) – send data on SPI

write(buf)[source]

machine.SPI.write() compatible

write_readinto(write_buf, read_buf)[source]

machine.SPI.write_readinto() compatible

exception nxp_periph.protocol_bridge.SC18IS606_Error[source]

Bases: Exception

nxp_periph.stepper_motor module

class nxp_periph.stepper_motor.PCA9629A(i2c, address=32, steps_per_rotation=48)[source]

Bases: StepperMotor_base, I2C_target

AUTO_INCREMENT = 128
DEFAULT_ADDR = 32
REG_NAME = ('MODE', 'WDTOI', 'WDCNTL', 'IO_CFG', 'INTMODE', 'MSK', 'INTSTAT', 'IP', 'INT_MTR_ACT', 'EXTRASTEPS0', 'EXTRASTEPS1', 'OP_CFG_PHS', 'OP_STAT_TO', 'RUCNTL', 'RDCTNL', 'PMA', 'LOOPDLY_CW', 'LOOPDLY_CCW', 'CWSCOUNTL', 'CWSCOUNTH', 'CCWSCOUNTL', 'CCWSCOUNTH', 'CWPWL', 'CWPWH', 'CCWPWL', 'CCWPWH', 'MCNTL', 'SUBADR1', 'SUBADR2', 'SUBADR3', 'ALLCALLADR', 'STEPCOUNT0', 'STEPCOUNT1', 'STEPCOUNT2', 'STEPCOUNT3')
STEP_RESOLUTION = 333333.3333333333
class nxp_periph.stepper_motor.StepperMotor_base[source]

Bases: object

An abstraction class to make user interface.

drv_phase(v)[source]

Setting drive phase mode

Parameters:

v (float) – PCA9629 series can set 1 phase, 2 phase and half step drive. 1 and 2 are for 1-pahse and 2-phase drive. 0.5 for half-step drive.

home(pps=96, reverse=False, extrasteps=0)[source]

Go to home position

Parameters:
  • pps (float) – Motor move speed setting by pps

  • reverse (bool, default False) – Motor move direction to go back home position

  • extrasteps (int) – Extra-steps after crossing sensor

init()[source]

Initialize registers

pps(pps, reverse=False)[source]

Set pulse per second (pps)

Parameters:
  • pps (float) – Setting motor move speed by pps

  • reverse (bool, default False) – True for reverse direction setting

r16(reg)[source]

Register read with 16 bit width

start(reverse=False)[source]

Start motor

Parameters:

reverse (bool, default False) – True for reverse direction setting

steps(step, reverse=False)[source]

Set steps

Parameters:
  • step (int) – Setting motor move angre/rotation by number of steps

  • reverse (bool, default False) – True for reverse direction setting

stop()[source]

Stop motor

w16(reg, val)[source]

Register write with 16 bit width

nxp_periph.temp_sensor module

class nxp_periph.temp_sensor.LM75B(i2c, address=72)[source]

Bases: temp_sensor_base, I2C_target

LM75B class

DEFAULT_ADDR = 72
REG_ACC = {'Conf': 1, 'Temp': 2, 'Thyst': 2, 'Tidle': 1, 'Tos': 2}
REG_LEN = (2, 1, 2, 2, 1)
REG_NAME = ('Temp', 'Conf', 'Thyst', 'Tos', 'Tidle')
class nxp_periph.temp_sensor.P3T1035(i2c, address=114)[source]

Bases: P3T1755

P3T1035 class

DEFAULT_ADDR = 114
REG_ACC = {'Conf': 1, 'MID': 2, 'T_HIGH': 2, 'T_LOW': 2, 'Temp': 2}
REG_LEN = (2, 1, 2, 2, 2)
REG_NAME = ('Temp', 'Conf', 'T_LOW', 'T_HIGH', 'MID')
class nxp_periph.temp_sensor.P3T1085(i2c, address=72, setup_EVB=False)[source]

Bases: LM75B

P3T1085 class

CAUTION: THIS DEVICE HAS NOT BEEN SUPPORTED YET

DEFAULT_ADDR = 72
REG_ACC = {'Conf': 2, 'T_HIGH': 2, 'T_LOW': 2, 'Temp': 2}
REG_LEN = (2, 2, 2, 2)
REG_NAME = ('Temp', 'Conf', 'T_LOW', 'T_HIGH')
property alert
class nxp_periph.temp_sensor.P3T1755(i2c, address=76)[source]

Bases: LM75B

P3T1755 class

DEFAULT_ADDR = 76
REG_ACC = {'Conf': 1, 'T_HIGH': 2, 'T_LOW': 2, 'Temp': 2}
REG_LEN = (2, 1, 2, 2)
REG_NAME = ('Temp', 'Conf', 'T_LOW', 'T_HIGH')
class nxp_periph.temp_sensor.P3T2030(i2c, address=114)[source]

Bases: P3T1035

class nxp_periph.temp_sensor.PCT2075(i2c, address=72, setup_EVB=False)[source]

Bases: LM75B

PCT2075 class

DEFAULT_ADDR = 72
REG_ACC = {'Conf': 1, 'Temp': 2, 'Thyst': 2, 'Tidle': 1, 'Tos': 2}
REG_LEN = (2, 1, 2, 2, 1)
REG_NAME = ('Temp', 'Conf', 'Thyst', 'Tos', 'Tidle')
property heater
nxp_periph.temp_sensor.main()[source]
class nxp_periph.temp_sensor.temp_sensor_base[source]

Bases: object

An abstraction class to make user interface.

dump()[source]
dump_reg()[source]

Showing all register name, address/pointer and value (Overriding I2C_target class method)

read()[source]

Read temperature

Returns:

float

Return type:

temperature in degree-Celsius

reg_access(*args)[source]

Write or read register

Recommended to use this method instead of write_registers()/read_registers() because register accessing style is different from LED_controllers and RTCs. This reg_access() method does 8 bit and 16 bit access automatically

The reg_access() takes 1 or 2 arguments. If 2 arguments are geven, it performs write. If only 1 argument is geven, read is performed.

Parameters:
  • args[0] (string or int) – Register name or pointer.

  • args[1] (int, optional) – Data to be written.

Returns:

int – Nothing will be returned when write is done.

Return type:

register data

Examples

self.reg_access( “Conf”, 0 ) # writes 8 bit data (writes 16 bit data for P3T1085) value = self.reg_access( “Temp” ) # reads 16 bit data

property temp

Read temperature

Returns:

float

Return type:

temperature in degree-Celsius

temp_setting(lst)[source]

Over-temperature threshold and hysterisis setting

Parameters:

lst (list of 2 float numbers) – Values are given in degree-Celsius. Bigger value will be the Over-temperature threshold and smaller value will be the hysterisis.

Returns:

list – Actual values set in the device in order of [ hysterisis, over_temp_threshold ] .

Return type:

list of 2 float numbers

Module contents