树莓派3b的gpio芯片是哪个

这篇博客记录了我在用户程序中將物理地址映射到虚拟地址然后使用虚拟地址控制树莓派3B的GPIO的过程。以下是整个过程的记录:

和控制单片机IO口相似如果用户想控制树莓派的GPIO,就得先知道GPIO相关寄存器的地址和设置的方法树莓派的网站上提供了外设说明手册(Peripheral specification),这个手册对芯片上的外设怎么使用进行了描述不过,Pi 3 的处理器是BCM2837官网只提供了BCM2835(Pi 1 处理器)的外设说明手册。由于两个芯片外设上区别不大我直接下载了BCM2835的手册来参考。下载手冊的网址:

2、查阅GPIO相关寄存器地址和设置方法

翻到第5页可以看到下图这个关于ARM地址映射的描述。

中间的部分为ARM的物理地址分配方式IO外設(IO Peripherals)的物理地址分配在0x(这是BCM2835的)。由于芯片不同BCM2837的IO设备地址已经改为 0x3F000000,这一点在官网提供的文档中也有说到。()

从第89页开始描述的就是GPIO外设的地址和设置方法。

第90-91页的表格标明了和GPIO相关的寄存器的地址(下图是90页的部分信息)

GPFESLn(选择引脚功能)、GPSETn(设置引脚輸出高电平)和GPCLRn(设置引脚输出低电平)是控制引脚输出电平需要用到的寄存器。手册后面的几页内容将详细描述这些寄存器如何设置唎如GPFSEL1的描述为:

根据手册的描述,我们得到了GPIO相关寄存器的地址和设置方法接下来将编写一个控制引脚输出电平的程序。

3、根据手册的描述编写程序

我在这里选择GPIO的Pin3作为实验对象以下的程序是以Pin3为例。

//外设物理地址的数量 //将物理地址映射到用户进程的虚拟地址 //设置引脚3為输出功能 //物理地址映射到虚拟地址 //pin3的功能选择为输出 //每两秒反转电平一次 //“/dev/mem”内是物理地址的映像 //通过mmap函数将物理地址映射为用户进程嘚虚拟地址 //计算控制pin3引脚的寄存器的地址

(代码参考了BCM2835驱动源码:)

代码写完后直接通过GCC编译即可,运行时要加上管理员权限因为在普通用户的权限下,不能打开/dev/mem

以上便是linux下控制树莓派3B的GPIO的整个过程的记录。如果大家发现问题希望可以多多指正。

}

【CSDN 编者按】一般来说项目系统選择芯片的时候,很多人都会选择树莓派芯片但其实,我们不是只有树莓派系列可以选择本文就给大家推荐一些树莓派的替代品。

如果您正在寻找 2021 年的树莓派替代产品则可以选择多种规格和价格的产品。尽管在撰写本文时其中一些产品尚未发布,但我认为它们将在未来几个月内发布

树莓派替代品一直是我的兴趣所在,因为它们经常在树莓派基金会之前创建创新产品这并不是说我反对树莓派,树莓派绝对是这个市场上当之无愧的领导者并且仍然提供最佳的支持和社区。

如果我漏掉了其他的树莓派替代产品也欢迎下方留言。

印喥永久封禁了微信、百度、TikTok 等 59 款中国 App……

}

我要回帖

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信