微雪电子官方教程仅介绍了单层扩展板配置方法, 因此本文参考官方教程的基础上,进行多个扩展板的叠加配置。

文章目录

  • 一、打开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口、串口)相关推荐

  1. 树莓派 3B+ 使用微雪2-CH CAN FD HAT

    准备 目标 疫情在家,想着用树莓派3B+,通过CAN卡接收CAN数据,外接触摸屏,实时显示CAN数据.计划使用python作为开发语言,用pyqt库界面开发,can卡尽量选择低成本解决方案. kvas ...

  2. 微雪电子7寸hdmi-lcd(C)在树莓派的使用

    用于树莓派 两根线都插到树莓派上 打开lcd背部的backlight开关 config.txt文件中写入: max_usb_current=1 hdmi_group=2 hdmi_mode=87 hd ...

  3. 树莓派中基于Qt的图像显示image.[微雪电子树莓派Qt系列教程]

    Waveshare前言 在qml的常用元素中,image图像元素绝对算得上是比较常用的了.image用于展示图片,使用source属性可以使用URL指定一张图片. image可以展示Qt支持的任何标准 ...

  4. 树莓派 java 驱动 微雪 墨水屏 epaper

    树莓派 java 驱动 微雪 墨水屏 epaper B站视频指导 驱动结果显示 官方驱动测试 接线 初步测试 java驱动(仅二值图片展示,非灰阶部分) 引脚初始化 初始化墨水屏 点阵排列 显示方法 ...

  5. 树莓派 java 驱动 微雪 墨水屏 4灰阶 epaper

    结果展示 4级灰度阶梯 4灰阶做图展示,如果侵权,请帮忙告知,马上删除 原图: 灰度图: B站视频指导 视频指导:视频地址 https://www.bilibili.com/video/BV1bQ4y ...

  6. 树莓派3B 安装微雪LCD5inch显示器(包含软键盘)

    树莓派单独使用时,往往需要触摸屏和软键盘用以方便操作,微雪LCD显示器就能较好的实现这个功能, 正好实验室又买入了一个3B的板子和一个5inch的显示器,便对着官方的安装手册,亲自安装了一次. 一:材 ...

  7. 微雪电子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 ...

  8. 树莓派 java 驱动 微雪 墨水屏 16灰阶 LUT

    16灰度阶梯展示(未优化版) 下图为16灰阶梯度未优化版,可以看出,最黑的黑色颜色不够黑,且往右边越黑,灰阶越不明显,还有很大的优化空间,后续再聊优化. B站视频指导 视频指导:视频地址 https: ...

  9. sx1268 中文_微雪电子SX1268 Lora 433M频段简介

    树莓派LoRa扩展板SX1268433MHz频段 新一代LoRa扩频技术,通信距离达5km,UART控制接口,兼容Arduino/STM32等主控板 型号SX1268433MLoRaHAT 产品简介[ ...

最新文章

  1. linux中信号的处理,linux中关于信号处理笔记(二)
  2. 研究生调剂!!急!!!跪求解答!!?
  3. 小计C++中的引用和vector
  4. handsontable 方法汇总
  5. python测试字符串类型的函数_python-02 数据类型 字符串str
  6. html 图片 高度无效_HTML笔记(详细)
  7. Struts2 注解模式
  8. 如何在Delphi 中调用C#生成的DLL类库
  9. 一个html可以有几个h1,关于html:HTML5大纲和多个H1 SEO
  10. openoffice转换pdf 异常问题查找处理 errorCode 525
  11. 一个简单的java程序
  12. 电视盒子内存测试软件,电视盒子内存太小怎么办?当贝市场一招扩充内存
  13. Linux vim 编辑文件底部显示[converted]解决办法
  14. 从外包月薪5K到阿里月薪15K,大厂面试必备技能
  15. 抑郁症治疗过程中有哪些变化?
  16. 苏州优步高级车资费标准和奖励政策
  17. 大数据_02【大数据基础知识】
  18. 一位小公司CTO的成长历程
  19. STM32CubeIDE HAL库操作IIC (二)案例篇(MPU9250)
  20. Tushare数据获取(python)

热门文章

  1. 和实物只隔一个屏幕!华硕灵焕3Pro VR体验
  2. win7 matlab 读 grib2数据
  3. 84岁老爷爷技术博客
  4. jQuery点击按钮新增dom
  5. 智慧交管大屏可视化决策系统
  6. 关于遥感bil bsq bip三种格式互换
  7. 2022年全球市场MEMS振荡器总体规模、主要生产商、主要地区、产品和应用细分研究报告
  8. 【考研专业课答题纸】是什么样子?(内附下载链接)
  9. 编写一个能求解各种柱体表面积和体积的程序
  10. 区块链共识之Paxos算法理解与实战