树莓派+多个微雪电子Serial Expansion HAT扩展板叠加方法(扩展多个IO口、串口)
微雪电子官方教程仅介绍了单层扩展板配置方法, 因此本文参考官方教程的基础上,进行多个扩展板的叠加配置。
文章目录
- 一、打开I2C接口
- 二、安装库
- 三、生成设备
- 四、堆叠教程
- 五、扩展IO口配置
- 总结
一、打开I2C接口
在终端执行:
sudo raspi-config
选择 Interfacing Options -> I2C ->yes 启动 i2C 内核驱动
然后重启树莓派:
sudo reboot
二、安装库
1.安装BCM2835, 打开树莓派终端,并运行以下指令
wget http://www.airspayce.com/mikem/bcm2835/bcm2835-1.60.tar.gz
tar zxvf bcm2835-1.60.tar.gz
cd bcm2835-1.60/
sudo ./configure && sudo make && sudo make check && sudo make install
更多的可以参考官网:http://www.airspayce.com/mikem/bcm2835/
2. 安装wiringPi
sudo apt-get install wiringpi
对于树莓派2019年5月之后的系统(早于之前的可不用执行),可能需要进行升级:
wget https://project-downloads.drogon.net/wiringpi-latest.deb
sudo dpkg -i wiringpi-latest.deb
gpio -v
运行gpio -v会出现2.52版本,如果没有出现说明安装出错
3. python库
sudo apt-get install python-dev
sudo apt-get install python-rpi.gpio
sudo apt-get install python-smbus
三、生成设备
打开/boot/config.txt文件
sudo nano /boot/config.txt
在/boot/config.txt中加入如下
dtoverlay=sc16is752-i2c,int_pin=24,addr=0x48
addr根据A0A1实际焊接方式设置,默认是0X48
重启设备
sudo reboot
重启后,SC16IS752的驱动会加载到系统内核中,此时可以运行ls /dev查看一下 将会多出如下设备:
如果需要堆叠的话,第二个模块不能直接插在树莓派,由于PCB上使用的中断引脚是一样,会导致无法识别出多个设备。
四、堆叠教程
如果需要扩展多个串口需要按照如下操作(适用于新版本)。
首先安装i2c-tools,方便查看I2C地址,在控制台输入:
sudo apt-get install i2c-tools
等待安装成功,执行如下命令查看I2C地址。
sudo i2cdetect -y 1
如果默认已经插入了一个Serial Expansion HAT,那么执行如下命令会得到如下的效果:
其中0X48的设备显示成了UU,说明系统已经加载成功了;
此时运行ls /devttySC*可以查看到已经生成了两个串口设备了。
在叠加第二块模块的之前,需要修改相应的硬件设置,将板子上的默认INT与I2C address的配置改成与默认的不一致即可,这里将需要叠加的另一块板进行重新焊接:INT PIN改成P23,I2C Address的A0改到了GND:
修改完成之后,将模块叠加在之前的模块上,运行命令:
sudo i2cdetect -y 1
新的模块的I2C地址为0X49,前面已经修改了中断管脚为23,那么就可以按照前述步骤打开/boot/config.txt:
sudo nano /boot/config.txt
在之前配置下方加入如下内容,保存并退出(ctrl +x,然后执行Y,并回车):
dtoverlay=sc16is752-i2c,int_pin=23,addr=0x49
重启树莓派
sudo reboot
执行如下命令,会出现4个设备号,即叠加成功。
ls /dev/ttySC*
由于板载只可设置5个不同的电阻,因此最大叠加数为5个,如需要添加更多的,需要使用杜邦线连接。
将板子上的默认INT与I2C address的配置改成与默认的不一致,INT Pin即为引脚,I2C地址即按照A1A0焊接形式并对照一下表格进行获取:
焊接完成后将四个扩展板叠加到树莓派上:
五、扩展IO口配置
在项目中需要使用4个扩展板的所有IO口,因此使用了2*4的90度排针将各个扩展板上的IO口引出。
如前述操作,实现4个扩展板的堆叠配置,接下来对4层扩展板的IO口使能进行编写。
堆叠完成后,从官网下载扩展板的示例程序资料,并首先打开 Serial_Expansion_HAT_code/c/gpio文件下的SC16IS752GPIO.c与SC16IS752GPIO.h两个文件,首先看到SC16IS752GPIO.h中:
找到#define PIN0,更改后方的数据,当叠加一块板时,数值为496,当叠加两块板时数值为488,当叠加三块板时数值为480,当叠加四块板时数值为472,这里我叠加了四块板因此改为了472.具体的原理可在终端中分别输入:
cd /sys/
cd class/
cd gpio/
cd tree
查找硬件配置下的IO口编码
再打开 SC16IS752GPIO.c文件,拉到最底下,找到void SC16IS752GPIO_Init(void)与void SC16IS752GPIO_Exit(void)
void SC16IS752GPIO_Init(void)
{SC16IS752GPIO_Export(0 + PIN0);SC16IS752GPIO_Export(1 + PIN0);SC16IS752GPIO_Export(2 + PIN0);SC16IS752GPIO_Export(3 + PIN0);SC16IS752GPIO_Export(4 + PIN0);SC16IS752GPIO_Export(5 + PIN0);SC16IS752GPIO_Export(6 + PIN0);SC16IS752GPIO_Export(7 + PIN0);
}void SC16IS752GPIO_Exit(void)
{SC16IS752GPIO_Unexport(0 + PIN0);SC16IS752GPIO_Unexport(1 + PIN0);SC16IS752GPIO_Unexport(2 + PIN0);SC16IS752GPIO_Unexport(3 + PIN0);SC16IS752GPIO_Unexport(4 + PIN0);SC16IS752GPIO_Unexport(5 + PIN0);SC16IS752GPIO_Unexport(6 + PIN0);SC16IS752GPIO_Unexport(7 + PIN0);
}
根据叠加的板数增加函数,例如叠加两块板则在void SC16IS752GPIO_Init(void)中加入SC16IS752GPIO_Export(8+PIN0)一直加到SC16IS752GPIO_Export(15+PIN0),同理在void SC16IS752GPIO_Exit(void)中加入SC16IS752GPIO_Unexport(8+PIN0)一直加到SC16IS752GPIO_Unexport(15+PIN0),最后保存.h与.c文件;
在项目中堆叠了4块扩展板,因此将此处修改位:
void SC16IS752GPIO_Init(void)
{SC16IS752GPIO_Export(0 + PIN0);SC16IS752GPIO_Export(1 + PIN0);SC16IS752GPIO_Export(2 + PIN0);SC16IS752GPIO_Export(3 + PIN0);SC16IS752GPIO_Export(4 + PIN0);SC16IS752GPIO_Export(5 + PIN0);SC16IS752GPIO_Export(6 + PIN0);SC16IS752GPIO_Export(7 + PIN0);SC16IS752GPIO_Export(8 + PIN0);SC16IS752GPIO_Export(9 + PIN0);SC16IS752GPIO_Export(10 + PIN0);SC16IS752GPIO_Export(11 + PIN0);SC16IS752GPIO_Export(12 + PIN0);SC16IS752GPIO_Export(13 + PIN0);SC16IS752GPIO_Export(14 + PIN0);SC16IS752GPIO_Export(15 + PIN0);SC16IS752GPIO_Export(16 + PIN0);SC16IS752GPIO_Export(17 + PIN0);SC16IS752GPIO_Export(18 + PIN0);SC16IS752GPIO_Export(19 + PIN0);SC16IS752GPIO_Export(20 + PIN0);SC16IS752GPIO_Export(21 + PIN0);SC16IS752GPIO_Export(22 + PIN0);SC16IS752GPIO_Export(23 + PIN0);SC16IS752GPIO_Export(24 + PIN0);SC16IS752GPIO_Export(25 + PIN0);SC16IS752GPIO_Export(26 + PIN0);SC16IS752GPIO_Export(27 + PIN0);SC16IS752GPIO_Export(28 + PIN0);SC16IS752GPIO_Export(29 + PIN0);SC16IS752GPIO_Export(30 + PIN0);SC16IS752GPIO_Export(31 + PIN0);}void SC16IS752GPIO_Exit(void)
{SC16IS752GPIO_Unexport(0 + PIN0);SC16IS752GPIO_Unexport(1 + PIN0);SC16IS752GPIO_Unexport(2 + PIN0);SC16IS752GPIO_Unexport(3 + PIN0);SC16IS752GPIO_Unexport(4 + PIN0);SC16IS752GPIO_Unexport(5 + PIN0);SC16IS752GPIO_Unexport(6 + PIN0);SC16IS752GPIO_Unexport(7 + PIN0);SC16IS752GPIO_Unexport(8 + PIN0);SC16IS752GPIO_Unexport(9 + PIN0);SC16IS752GPIO_Unexport(10 + PIN0);SC16IS752GPIO_Unexport(11 + PIN0);SC16IS752GPIO_Unexport(12 + PIN0);SC16IS752GPIO_Unexport(13 + PIN0);SC16IS752GPIO_Unexport(14 + PIN0);SC16IS752GPIO_Unexport(15 + PIN0);SC16IS752GPIO_Unexport(16 + PIN0);SC16IS752GPIO_Unexport(17 + PIN0);SC16IS752GPIO_Unexport(18 + PIN0);SC16IS752GPIO_Unexport(19 + PIN0);SC16IS752GPIO_Unexport(20 + PIN0);SC16IS752GPIO_Unexport(21 + PIN0);SC16IS752GPIO_Unexport(22 + PIN0);SC16IS752GPIO_Unexport(23 + PIN0);SC16IS752GPIO_Unexport(24 + PIN0);SC16IS752GPIO_Unexport(25 + PIN0);SC16IS752GPIO_Unexport(26 + PIN0);SC16IS752GPIO_Unexport(27 + PIN0);SC16IS752GPIO_Unexport(28 + PIN0);SC16IS752GPIO_Unexport(29 + PIN0);SC16IS752GPIO_Unexport(30 + PIN0);SC16IS752GPIO_Unexport(31 + PIN0);
}
接下来生成.so文件
在终端中分别输入如下命令:
cd Serial_Expansion_HAT_code/
cd c
cd gpio
即打开上述.c与.h文件所处目录下
在终端中输入:
gcc SC16IS752GPIO.c -fPIC -shared -o SC16IS752GPIO.so
将SC16IS752GPIO.so文件拉入Serial_Expansion_HAT_code/python/GPIO文件夹中,覆盖原有的SC16IS752GPIO.so文件,打开gpio.py,更改gpio.SC16IS752GPIO_Mode(0,OUT)中的数值即改变某个IO口的模式(输出或输入),更改gpio.SC16IS752GPIO_Write(0,OUT)中的数值即改变某个IO口的输出量(高电平或低电平)
总结
至此,即实现多个扩展板的堆叠与配置。
树莓派+多个微雪电子Serial Expansion HAT扩展板叠加方法(扩展多个IO口、串口)相关推荐
- 树莓派 3B+ 使用微雪2-CH CAN FD HAT
准备 目标 疫情在家,想着用树莓派3B+,通过CAN卡接收CAN数据,外接触摸屏,实时显示CAN数据.计划使用python作为开发语言,用pyqt库界面开发,can卡尽量选择低成本解决方案. kvas ...
- 微雪电子7寸hdmi-lcd(C)在树莓派的使用
用于树莓派 两根线都插到树莓派上 打开lcd背部的backlight开关 config.txt文件中写入: max_usb_current=1 hdmi_group=2 hdmi_mode=87 hd ...
- 树莓派中基于Qt的图像显示image.[微雪电子树莓派Qt系列教程]
Waveshare前言 在qml的常用元素中,image图像元素绝对算得上是比较常用的了.image用于展示图片,使用source属性可以使用URL指定一张图片. image可以展示Qt支持的任何标准 ...
- 树莓派 java 驱动 微雪 墨水屏 epaper
树莓派 java 驱动 微雪 墨水屏 epaper B站视频指导 驱动结果显示 官方驱动测试 接线 初步测试 java驱动(仅二值图片展示,非灰阶部分) 引脚初始化 初始化墨水屏 点阵排列 显示方法 ...
- 树莓派 java 驱动 微雪 墨水屏 4灰阶 epaper
结果展示 4级灰度阶梯 4灰阶做图展示,如果侵权,请帮忙告知,马上删除 原图: 灰度图: B站视频指导 视频指导:视频地址 https://www.bilibili.com/video/BV1bQ4y ...
- 树莓派3B 安装微雪LCD5inch显示器(包含软键盘)
树莓派单独使用时,往往需要触摸屏和软键盘用以方便操作,微雪LCD显示器就能较好的实现这个功能, 正好实验室又买入了一个3B的板子和一个5inch的显示器,便对着官方的安装手册,亲自安装了一次. 一:材 ...
- 微雪电子SIM7000C NB-IOT Emqx MQTT 通信的详细测试过程
文章目录 0 简介 1 软硬件 1.1 硬件 1.2 软件 2 环境搭建 2.1 Emqx 的安装 2.1.1 下载Emqx的安装包 2.1.2 解压 2.1.3 安装 2.1.4 启动等相关命令 2 ...
- 树莓派 java 驱动 微雪 墨水屏 16灰阶 LUT
16灰度阶梯展示(未优化版) 下图为16灰阶梯度未优化版,可以看出,最黑的黑色颜色不够黑,且往右边越黑,灰阶越不明显,还有很大的优化空间,后续再聊优化. B站视频指导 视频指导:视频地址 https: ...
- sx1268 中文_微雪电子SX1268 Lora 433M频段简介
树莓派LoRa扩展板SX1268433MHz频段 新一代LoRa扩频技术,通信距离达5km,UART控制接口,兼容Arduino/STM32等主控板 型号SX1268433MLoRaHAT 产品简介[ ...
最新文章
- linux中信号的处理,linux中关于信号处理笔记(二)
- 研究生调剂!!急!!!跪求解答!!?
- 小计C++中的引用和vector
- handsontable 方法汇总
- python测试字符串类型的函数_python-02 数据类型 字符串str
- html 图片 高度无效_HTML笔记(详细)
- Struts2 注解模式
- 如何在Delphi 中调用C#生成的DLL类库
- 一个html可以有几个h1,关于html:HTML5大纲和多个H1 SEO
- openoffice转换pdf 异常问题查找处理 errorCode 525
- 一个简单的java程序
- 电视盒子内存测试软件,电视盒子内存太小怎么办?当贝市场一招扩充内存
- Linux vim 编辑文件底部显示[converted]解决办法
- 从外包月薪5K到阿里月薪15K,大厂面试必备技能
- 抑郁症治疗过程中有哪些变化?
- 苏州优步高级车资费标准和奖励政策
- 大数据_02【大数据基础知识】
- 一位小公司CTO的成长历程
- STM32CubeIDE HAL库操作IIC (二)案例篇(MPU9250)
- Tushare数据获取(python)