catgpio和通过goio接口得到的值不一样

catgpio和通过goio接口得到的值不一样,第1张

catgpio和通过goio接口得到的值不一

在做GPIO接口对比之前,先通过一个案例介绍下GPIO的作用。如图5-16所示为ALR-9900阅读器给出的一个GPIO应用实例图,图中一个叉车载着带有标签的物品通过一个区域,被区域内的红外传感器所感应,红外传感器通过GPIO的输入口将信息传递到阅读器。阅读器被红外信号所触发启动盘点功能,发现正确的标签后通过GPIO的输出口点亮绿色指示灯,同时把标签的数据记录在阅读器的存储区。在整个叉车出/入库过程中,阅读器并未连接网络和电脑,只是通过自身的 *** 作系统进行触发工作,不仅效率高而且节省成本。许多智能仓库都是通过这样的方案实现的。

图5-16 GPIO应用实例图

如图5-17(a)为R420GPIO的输入输出示意图,图5-17(b)为ALR-9900GPIO的输入输出示意图,两者的差异体现在电气隔离方式与供电方式的不同:

R420的GPIO与内部电路之间是通过电子管直连的;ALR-9900的GPIO与内部电路通过光电耦合隔离,这样的好处是当外界设备出现故障时不会损毁阅读器内部电路,也不会带来不必要的干扰。

ALR-9900的GPIO的输出OUT需要连接额外的电源供电VDD,如图GPIO应用实例图中有一个很大的24VDC适配器供电,其输出电压可以达到24V 05A。这个输出的驱动能力很强,可以直接驱动灯柱等外围设备;相比之下R420的输出驱动能力非常弱,只够实现简单的触发功能。

(a) R420的GPIO输入输出示意图(b)ALR-9900 GPIO的输入输出示意图

图5-17R420与ALR-9900 GPIO接口对比

对比两个阅读器的GPIO,ALR-9900的要复杂很多,优点为工业级稳定性高,而R420更加简单,可以直接与许多触发设备连接,使用简单方便。市场上大多数阅读器的GPIO都是采用R420的方式。

通过sysfs方式控制GPIO,先访问/sys/class/gpio目录,向export文件写入GPIO编号,使得该GPIO的 *** 作接口从内核空间暴露到用户空间,GPIO的 *** 作接口包括direction和value等,direction控制GPIO方向,而value可控制GPIO输出或获得GPIO输入。文件IO方式 *** 作GPIO,使用到了4个函数open、close、read、write。

首先,看看系统中有没有逗/sys/class/gpio地这个文件夹。如果没有请在编译内核的时候加入 Device Drivers-> GPIO Support ->/sys/class/gpio/… (sysfs interface)。

/sys/class/gpio 的使用说明:

gpio_operation 通过/sys/文件接口 *** 作IO端口 GPIO到文件系统的映射

◇ 控制GPIO的目录位于/sys/class/gpio

◇ /sys/class/gpio/export文件用于通知系统需要导出控制的GPIO引脚编号

◇ /sys/class/gpio/unexport 用于通知系统取消导出

◇ /sys/class/gpio/gpiochipX目录保存系统中GPIO寄存器的信息,包括每个寄存器控制引脚的起始编号base,寄存器名称,引脚总数 导出一个引脚的 *** 作步骤

◇ 首先计算此引脚编号,引脚编号 = 控制引脚的寄存器基数 + 控制引脚寄存器位数

◇ 向/sys/class/gpio/export写入此编号,比如12号引脚,在shell中可以通过以下命令实现,命令成功后生成/sys/class/gpio/gpio12目录,如果没有出现相应的目录,说明此引脚不可导出

◇ direction文件,定义输入输入方向,可以通过下面命令定义为输出。direction接受的参数:in, out, high, low。high/low同时设置方向为输出,并将value设置为相应的1/0

◇ value文件是端口的数值,为1或0

wiringOP 已适配 Orange Pi Zero Plus开发板,使用 wiringOP 可以测试 GPIO、I2C、UART 和 SPI 的功能。

安装wiringOP

注意:开始测试前,请确保已经参照安装 wiringOP 一节编译安装好了 wiringOP 

普通GPIO口测试

1) 下面以 7 号引脚——对应 GPIO 为 PA6 ——对应 wPi 序号为 2——为例演示如何 设置 GPIO 的高低电平

2) 首先设置 GPIO 口为输出模式,其中第三个参数需要输入引脚对应的 wPi 的序号 

3) 然后设置 GPIO 口输出低电平,设置完后可以使用万用表测量引脚的电压的数值, 如果为 0v,说明设置低电平成功 

4) 然后设置 GPIO 口输出高电平,设置完后可以使用万用表测量引脚的电压的数值, 如果为 33v,说明设置高电平成功 

5) 其他引脚的设置方法类似,只需修改 wPi 的序号为引脚对应的序号即可

1前一个是外设模块的映射地址,后一个是外设模块对应的一组配置寄存器,后者当然需要分别填充。

2这个 IO__ 你可以去翻看它的定义,实际上就是 volatile,防止编译器对其相关语句进行不适当的优化。

以上就是关于catgpio和通过goio接口得到的值不一样全部的内容,包括:catgpio和通过goio接口得到的值不一样、寄存器控制了gpio端口引脚是输入还是输出,若为0,则引脚为 若为1,则引脚为、全志H5芯片香橙派zero plus开发板26pin的GPIO口测试等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9310272.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存