×

树莓派的IO口详细资料简介

消耗积分:0 | 格式:pdf | 大小:0.28 MB | 2019-06-22

SR050267

分享资料个

  wiringPi GPIO

  • linux系统学习一段时间后发现它非常有魅力,一个简单的IO口输出操作尽有那么多的“玩法” 。wiringPi是一个简单易用的函数库,通过wiringPi可以扩展SPI和I2C等芯片。

  GPIO相关寄存器

  • 树莓派平台的GPIO驱动,例如RPi.GPIO和WiringPi均采用直接操作 GPIO寄存器的方式,树莓派的CPU采用博通的BCM2835,想要更好的了解树莓派的GPIO驱动实现就必须阅读BCM2835的数据手册。在BCM2835数据手册中需要认真关注两个内容:

  • 外设寄存器物理地址和外设虚拟地址的映射关系。在linux操作系统中,借助ARM内部的MMU,CPU外设物理地址映射成了虚拟地址,外设的物理起始地址为0x7E00 0000,被MMU虚拟之后的起始地址为0x2000 0000。以此类推,GPIO外设物理起始地址为 0x7E20 0000 = 0x7E00 0000+0x0020 0000,被MMU虚拟之后的 GPIO外设地址为0x2000 0000+0x0020 0000。那么对于Linux系统而言,GPIO相关操作的起始地址为0x2020 0000。BCM2835的内部映射关系如下图所示。

  • GPFSELx、GPSETx、GPCLRx和GPLEVn寄存器。简单来说,GPFSELx 为IO口方向或复用寄存器,负责IO口方向例如输入或输出; GPSETx为IO口输出寄存器,负责IO口输出逻辑高电平;GPCLRx寄存器同为IO口输出寄存器,不过和GPSETx相反,负责输出逻辑低电平。GPLEVx为IO口输入寄存器,负责IO口输入状态。

  • (如果您不理解这些寄存器也不理解MMU机制,也不会影响您使用wiringPi。请放心大胆地使用wiringPi,它已经帮你完成了很多基础性的工作)

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !