瑞芯微Rockchip开发者社区
直播中

王树林

7年用户 1663经验值
私信 关注
[经验]

Firefly端口的Python设计实现

#Firefly端口的Python

fireflyP设计用于在firefly或其他类似平台上使用设备端口。它现在可以支持RK3288。如GPIO、PWM、SPI等。

注:fireflyP仍在开发中。如果您发现一些错误,请让我知道,如果您修复了错误,很高兴给我“拉请求”

##安装获取源代码:

$git克隆

$cd pyFireflyP

安装python模块(python可以是python2或python3):

$sudo python设置。py安装

##在fireflyP中直接由devmem使用GPIO和PWM控制regs,与内核空间无关。

devmem源代码是从pydevmem修改而来的(感谢Kyle)。

您需要root权限才能执行它!

###Gpio##接口:init()init Gpio函数在使用Gpio get_level(self)之前实现它。返回输入方向的引脚电平或输出Gpio的DR寄存器的返回设置。

set_dir(自身,dir)

设置GPIO方向

:目录:参考GPIOIR

set_drv(自身,drv)

设置GPIO drv

:drv:参考GpioDrv

set_level(自身、级别)

设置GPIO输出信号

:级别:参考GpioLevel

set_mux(自身,mux)

设置GPIO多路复用器

:多路复用器:参考GpioMux

set_pull(自、拉)

设置GPIO拉力

:拉力:参考GpioPull

####打开/关闭firefly-rk3288上黄色led的示例:$sudo python>>>来自firefly导入Gpio>>>Gpio。init()>>>LED_YELLOW=“GPIO8A2”>>>LED_YELLOW=Gpio(LED_Yllow)>>>LED_Ye黄。set_dir(Gpio.OUTPUT)#set_ dir已包含SETUMUX(GpioMux.mux_Gpio)>>LED_ YELLOW.set_level(Gpio.低)35;打开黄色LED>>LEED_YLEW.SETuLEVE(Gpio)高)35关闭黄色LED

或者您可以参考demo/gpio_test.py

###Pwm接口:init()init Pwm函数在使用Pwm get_counter(self)get Pwm计数器之前实现

set_config(自、周期、占空比、配置=10)

设置PWM周期和占空比。

:周期:ns

:职务:ns

:配置:设置PWMx_CTRL值,但PWMx-CTRL.scale除外

set_counter(自身,计数器)

设置PWM计数器

开始(自我)

启动PWM

停止(自我)

停止PWM

####配置pwm1(频率=1MHz,占空比=50%)的示例:$sudo python>>>来自fireflyP导入Gpio>>来自于fireflyP导入Pwm>>>Gpio。init()>>>g7a1=Gpio('GPIO7A1')>>>g7a1.set_mux(1)#将GPIO7A2 mux设置为pwm1>>Pwm。init()>>>pwm=pwm('PWM1')>>pwm。set_config(1000500)>>>pwm。start()>>>pwm.stop()

或者,您可以参考demo/pwm_test.py

###fireflyP中的Spi依赖于spidev,请确保您的内核支持spidev(如此补丁),或者您可以关闭现成的固件(Google drive,百度)。

Spi源代码由python Spi修改(多亏了Thomas)。

####接口:读取(self,length,speed=0,bits_per_word=0,delay=0)作为二进制字符串执行半双工Spi读取

参数:

长度:要读取的字的整数计数

速度:以Hz为单位的可选临时比特率覆盖。0(默认值)

使用现有的spidev速度设置。

bits_per_word:可选的临时bits_ per_ word覆盖。0

(默认)将使用当前bits_per_word设置。

延迟:发送最后一位和

取消选择芯片选择线。0(默认值)表示无延迟。

返回:

从设备读取的单词列表

传输(自、数据、速度=0、位/字=0、延迟=0)

执行全双工Spi传输

参数:

数据:要传输的单词列表

速度:以Hz为单位的可选临时比特率覆盖。0(默认值)

使用现有的spidev速度设置。

bits_per_word:可选的临时bits_ per_ word覆盖。0

(默认)将使用当前bits_per_word设置。

延迟:发送最后一位和

取消选择芯片选择线。0(默认值)表示无延迟。

返回:

传输期间从Spi总线读取的单词列表

写入(自、数据、速度=0、位/字=0、延迟=0)

执行半双工Spi写入。

参数:

数据:要写入的单词列表

速度:以Hz为单位的可选临时比特率覆盖。0(默认值)

使用现有的spidev速度设置。

bits_per_word:可选的临时bits_ per_ word覆盖。0

(默认)将使用当前bits_per_word设置。

延迟:发送最后一位和

取消选择芯片选择线。0(默认值)表示无延迟。

####配置spi0的示例:$sudo python>>>来自fireflyP导入Spi>>>Spi=Spi(“/dev/spidev0.0”)>>>Spi。模式=Spi。模式_3>>>spi。bits_per_word=8>>>spi。速度=1000*1000>>>接收=spi。传输([0x11,0x22,0xFF])>>>spi。写入([0x12,0x34,0xAB,0xCD])>>>接收=spi.read(10)

或者您可以参考demo/spi_test。py,这是点亮oled的一个示例。

原作者:T-Firefly

更多回帖

发帖
×
20
完善资料,
赚取积分