当前位置: 首页 > news >正文

BeagleBone Black笔记

目录

  • 参考资料
  • 开机
  • led控制
  • GPIO输入输出

参考资料

链接: BeagleBone Black使用(一):狗板简介

链接: 使用Beaglebone Black的IO口

开机

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直接用usb连接到电脑上,这是个otg口,虚拟成了网卡:
在这里插入图片描述

网口登录:
Debian GNU/Linux 10 beaglebone ttyS0

BeagleBoard.org Debian Buster IoT Image 2020-04-06

Support: http://elinux.org/Beagleboard:BeagleBoneBlack_Debian

default username:password is [debian:temppwd]
默认用户名密码:debian:temppwd

在这里插入图片描述
串口登录(串口可以直接荣root登录 root|root):
在这里插入图片描述
在这里插入图片描述

led控制

开启

 echo none > /sys/class/leds/beaglebone:green:usr3/trigger && echo 1 > /sys/class/leds/beaglebone:green:usr3/brightness

关闭

 echo none > /sys/class/leds/beaglebone:green:usr3/trigger && echo 0 > /sys/class/leds/beaglebone:green:usr3/brightness

python代码:

#!/usr/bin/python
#//
#	blink.py
#	Blinks one LED wired to P9_15.
#	Wiring:	P9_15 connects to the plus lead of an LED.  The negative lead of the
#			LED goes to a 220 Ohm resistor.  The other lead of the resistor goes
#			to ground.
#	Setup:	
#	See:	
#//
import Adafruit_BBIO.GPIO as GPIO
import time

out = "P9_15"
 
GPIO.setup(out, GPIO.OUT)
 
while True:
    GPIO.output(out, GPIO.HIGH)
    time.sleep(0.5)
    GPIO.output(out, GPIO.LOW)
    time.sleep(0.5)

c代码:


//	blinkLED.c
//      Blinks the USR3 LED.
//	Wiring:	None
//	Setup:	
//	See:	

#include <stdio.h>
#include <unistd.h>

int main() {
	FILE * trigger = fopen("/sys/class/leds/beaglebone:green:usr3/trigger", "w");
	FILE * brightness = fopen("/sys/class/leds/beaglebone:green:usr3/brightness", "w");
	int on = 0;
	
	fprintf(trigger, "none\n");
    
	while(1) {
		fprintf(brightness, "%d\n", on);
		fflush(brightness);
		if(!on) 
			on = 1;
		else 
			on = 0;
		usleep(500000);
	}
}


//	ring.pru0.c
//      Does the "Ring Test" given here: https://pub.pages.cba.mit.edu/ring/
//	Reads P8_19 and writes it to P9_16 as fast as it can.
//	Wiring:	P9_16 connects to the plus lead of an LED.  The negative lead of the
//			LED goes to a 220 Ohm resistor.  The other lead of the resistor goes
//			to ground (P9_1 or P9_2).
//			Wire P8_19 to P9_16 to produce the 'ring' circuit.
//              A Switch goes to P8_19 and 3.3V  (P9_3 or P9_4).
//	Setup:	config_pin P9_16 pruout and config_pin P8_19 to pruin
//	See:	prugpio.h to see which pins attach to R30
//	PRU:	pru0

#include <stdint.h>
#include <pru_cfg.h>
#include <pru_ctrl.h>
#include <stddef.h>
#include <rsc_types.h>
#include "resource_table_empty.h"
#include "prugpio.h"

volatile register unsigned int __R30;
volatile register unsigned int __R31;

void main(void) {
	/* Read GPIO input P9_25 and invert to GPIO output P9_29 */
        while(1) {
		if(__R31 & P8_19)
			__R30 = 0;
		else
			__R30 = P9_16;
        }
}

GPIO输入输出

root@beaglebone:~# cd /sys/class/gpio
root@beaglebone:/sys/class/gpio# ls -l
total 0
--w------- 1 root root 4096 Jan  1 00:00 export
lrwxrwxrwx 1 root root    0 Jan  1 00:00 gpiochip0 -> ../../devices/virtual/gpio/gpiochip0
lrwxrwxrwx 1 root root    0 Jan  1 00:00 gpiochip32 -> ../../devices/virtual/gpio/gpiochip32
lrwxrwxrwx 1 root root    0 Jan  1 00:00 gpiochip64 -> ../../devices/virtual/gpio/gpiochip64
lrwxrwxrwx 1 root root    0 Jan  1 00:00 gpiochip96 -> ../../devices/virtual/gpio/gpiochip96
--w------- 1 root root 4096 Jan  1 00:00 unexport
root@beaglebone:/sys/class/gpio# echo 44 > export
root@beaglebone:/sys/class/gpio# ls -l
total 0
--w------- 1 root root 4096 Jan  1 00:03 export
lrwxrwxrwx 1 root root    0 Jan  1 00:03 gpio44 -> ../../devices/virtual/gpio/gpio44
lrwxrwxrwx 1 root root    0 Jan  1 00:00 gpiochip0 -> ../../devices/virtual/gpio/gpiochip0
lrwxrwxrwx 1 root root    0 Jan  1 00:00 gpiochip32 -> ../../devices/virtual/gpio/gpiochip32
lrwxrwxrwx 1 root root    0 Jan  1 00:00 gpiochip64 -> ../../devices/virtual/gpio/gpiochip64
lrwxrwxrwx 1 root root    0 Jan  1 00:00 gpiochip96 -> ../../devices/virtual/gpio/gpiochip96
--w------- 1 root root 4096 Jan  1 00:00 unexport
root@beaglebone:/sys/class/gpio# cd gpio44
root@beaglebone:/sys/class/gpio/gpio44# ls -l
total 0
-rw-r--r-- 1 root root 4096 Jan  1 00:03 active_low
-rw-r--r-- 1 root root 4096 Jan  1 00:03 direction
-rw-r--r-- 1 root root 4096 Jan  1 00:03 edge
drwxr-xr-x 2 root root    0 Jan  1 00:03 power
lrwxrwxrwx 1 root root    0 Jan  1 00:03 subsystem -> ../../../../class/gpio
-rw-r--r-- 1 root root 4096 Jan  1 00:03 uevent
-rw-r--r-- 1 root root 4096 Jan  1 00:03 value
root@beaglebone:/sys/class/gpio/gpio44# cat direction
in
root@beaglebone:/sys/class/gpio/gpio44# echo out > direction
root@beaglebone:/sys/class/gpio/gpio44# cat direction
out
root@beaglebone:/sys/class/gpio/gpio44# cat value
0
root@beaglebone:/sys/class/gpio/gpio44# echo 1 > value
root@beaglebone:/sys/class/gpio/gpio44# cat value
1

解释一下,首先要把某个(本例中是第44个,即P8_12)gpio export一下,变成用户可用的状态,然后目录里就会多出来一个gpio44目录,进入它对相应文件进行读写就可以操作io口了。输入输出是一样的道理。读的话Linux会自动实时更新value文件里的数据,但更新速度有多快暂时还不清楚,高速io操作的话用这种方法感觉不靠谱。不过速度不敏感的话是没问题的。


#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <fcntl.h> //define O_WRONLY and O_RDONLY
#define SYSFS_GPIO_DIR "/sys/class/gpio"
#define MAX_BUF 64
 
void main()
{
	int fd, len;
	char buf[MAX_BUF];
	char ch;
	int i;
 
	//export gpio44
	fd = open(SYSFS_GPIO_DIR "/export", O_WRONLY);
	len = snprintf(buf,sizeof(buf),"44");
	write(fd,buf,len);
	close(fd);
 
	//set direction
	snprintf(buf,sizeof(buf),SYSFS_GPIO_DIR"/gpio44/direction");
	fd = open(buf, O_WRONLY);
	write(fd, "in", 3);
	close(fd);
 
	//read and print value 10 times
	for(i=0;i<10;i++)
	{
		snprintf(buf,sizeof(buf),SYSFS_GPIO_DIR"/gpio44/value");
		fd = open(buf, O_RDONLY);
		read(fd,&ch,1);
		printf("%c\n",ch);
		close(fd);
		usleep(1000000);
	}
}

在这里插入图片描述
查看引脚输入状态(空闲高电平3.3V输出1, 接GND输出 0)

root@beaglebone:/sys/class/gpio# cd gpio44/
root@beaglebone:/sys/class/gpio/gpio44# ls
active_low  device  direction  edge  label  power  subsystem  uevent  value
root@beaglebone:/sys/class/gpio/gpio44# cat direction
in
root@beaglebone:/sys/class/gpio/gpio44#
root@beaglebone:/sys/class/gpio/gpio44#
root@beaglebone:/sys/class/gpio/gpio44#
root@beaglebone:/sys/class/gpio/gpio44#
root@beaglebone:/sys/class/gpio/gpio44# echo out > direction
root@beaglebone:/sys/class/gpio/gpio44#
root@beaglebone:/sys/class/gpio/gpio44# cat direction
out
root@beaglebone:/sys/class/gpio/gpio44# cat value
0
root@beaglebone:/sys/class/gpio/gpio44#
root@beaglebone:/sys/class/gpio/gpio44# echo 1 > value
root@beaglebone:/sys/class/gpio/gpio44# echo 0 > value
root@beaglebone:/sys/class/gpio/gpio44# cd ../gpio6
gpio60/ gpio61/ gpio62/ gpio63/ gpio65/ gpio66/ gpio67/ gpio68/ gpio69/
root@beaglebone:/sys/class/gpio/gpio44# cd ../gpio68/
root@beaglebone:/sys/class/gpio/gpio68# cat value
1
root@beaglebone:/sys/class/gpio/gpio68# cat direction
in
root@beaglebone:/sys/class/gpio/gpio68# cat direction
in
root@beaglebone:/sys/class/gpio/gpio68# cat value
0
root@beaglebone:/sys/class/gpio/gpio68# cat value
1

在这里插入图片描述

http://www.dtcms.com/a/123243.html

相关文章:

  • 传感器篇(二)——激光雷达
  • Prompt-to-prompt image editing with cross attention control
  • 网络通讯协议UDP转发TCP工具_UdpToTcpRelay_双向版
  • 蓝桥杯c ++笔记(含算法 贪心+动态规划+dp+进制转化+便利等)
  • 食堂采购系统源码模块化开发详解:管理、订单、入库、对账一体化方案
  • 游戏引擎学习第214天
  • module错误集合
  • SAP Business One系统标准功能之外的不允许负库存控制
  • 使用 react-three-fiber 快速重构 Three.js 场景⚛️
  • 为什么ChatGPT选择SSE而非WebSocket?
  • 【车道线检测(0)】卷首语
  • Go 字符串四种拼接方式的性能对比
  • 从0到1的Python接口自动化学习路线
  • kimi 做关系图
  • 【论文精读与实现】EDC²-RAG:基于动态聚类的文档压缩方法提升检索增强生成RAG性能
  • DeepSeek:重构办公效率的AI新范式
  • PCL 点云随机采样(二)
  • 可发1区的超级创新思路(python 、MATLAB实现):基于SAM+Informer+2DCNN的功率预测模型
  • 数据结构--线性表顺序表示(上)
  • 串讲阶段111
  • tf坐标变换
  • 链路追踪组件学习
  • Git Cherry-pick:核心命令、实践详解
  • TOGAF之架构标准规范-技术架构
  • ADI的BF561双核DSP怎么做开发,我来说一说(十)驱动直流电机和步进电机
  • daz3d ERC Freeze to Morph Target 和 另存为 Morph Asset(s)
  • openstack搭建过程,脚本
  • 卷积神经网络 CNN 系列总结(二)---数据预处理、激活函数、梯度、损失函数、优化方法等
  • HDCP(四)
  • Python Cookbook-5.13 寻找子序列