跳转到主要内容

一个轻量级库,用于管理直接寄存器字段操作。

项目描述

regmap

regmap是一个轻量级库,用于管理直接寄存器字段操作。

很多时候,在开发过程中,我需要与嵌入式系统交互,而在测试时,我只想读取和写入原始寄存器值。这些设备中大多数都包含具有不同位长度的多个字段。该库将尴尬的位操作抽象成简单的寄存器定义。

安装

您可以使用以下命令从PyPi安装regmap

pip install regmap

用法

定义接口

接口是与包含寄存器的系统交互的代码。需要定义读和写方法。

from regmap import Interface


class DeviceInterface(Interface):
    def read(self, address: int) -> int:
        # Function to go read a register from the device
        value = read_val_from_register(address)
        return value

    def write(self, address: int, value: int) -> None:
        # Function to go write a value to a register on the device
        write_val_to_register(address, value)

定义我们的寄存器

from regmap import BitField, Register


class config_reg_a_def(Register):
    _name = "config_reg_a"
    _address = 0x2000

    output = BitField(7, 1)
    enable = BitField(0)


class config_reg_b_def(Register):
    _name = "config_reg_b"
    _address = 0x2004

    setting2 = BitField(7, 5)
    setting1 = BitField(4, 2)
    setting0 = BitField(1, 0)


class Registers:
    def __init__(self, interface):
        self.config_reg_a = config_reg_a_def(interface)
        self.config_reg_b = config_reg_b_def(interface)

设置一些值

上下文管理器将处理对寄存器的读取和写入。默认情况下,上下文管理器将执行读取、修改和写入。这可以更改以执行只读或只写操作。

from regmap import Mode


interface = DeviceInterface()
registers = Registers(interface)

# Perform read, modify, write
with registers.config_reg_a:
    registers.config_reg_a.output = 20
    registers.config_reg_a.enable = 1

# Perform read only, will warn if modifications were attempted
with registers.config_reg_a(mode=Mode.RO):
    print(registers.config_reg_a.output)

# Perform write only, zeros will be written in any unset fields
with registers.config_reg_b(mode=Mode.WO):
    registers.config_reg_b.setting1 = 2

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分发

regmap-0.1.0.tar.gz (8.2 kB 查看哈希值)

上传时间:

构建分发

regmap-0.1.0-py3-none-any.whl (7.6 kB 查看哈希)

上传时间 Python 3

由以下支持