gpio_direction_output 和 gpio_set_value用法的区别
来源:互联网 发布:java zip压缩 编辑:程序博客网 时间:2024/06/13 13:19
最近做的项目,bring up NFC时,I2C设备挂载成功,但是写数据时失败,提示SLAVE无响应。
<3>[ 45.074021] [1: AsyncTask #1: 2429] i2c-msm-v2 78ba000.i2c: msm_bus_scale_register_client(mstr-id:86):0x11 (ok)
<3>[ 45.075395] I[0: swapper/0: 0] i2c-msm-v2 78ba000.i2c: NACK: slave not responding, ensure its powered, Invalid slave addr, I2C transfer failed, : msgs(n:1 cur:0 tx) bc(rx:0 tx:4) mode:FIFO slv_addr:0x76 MSTR_STS:0x0d1300c8 OPER:0x00000090
<3>[ 45.075609] [0: AsyncTask #1: 2429] bcm2079x-i2c 6-0076: failed to write -107
<3>[ 45.075395] I[0: swapper/0: 0] i2c-msm-v2 78ba000.i2c: NACK: slave not responding, ensure its powered, Invalid slave addr, I2C transfer failed, : msgs(n:1 cur:0 tx) bc(rx:0 tx:4) mode:FIFO slv_addr:0x76 MSTR_STS:0x0d1300c8 OPER:0x00000090
<3>[ 45.075609] [0: AsyncTask #1: 2429] bcm2079x-i2c 6-0076: failed to write -107
抓取了几个NFC引脚的波形,发现NFC_EN时序不对。
分析驱动,发现是设置GPIO的时候,只设置了高低电平,而没有设置其输入输出模式。
在网上找了gpio_set_value及gpio_direction_output/input的资料,如下:
文章出处:http://blog.chinaunix.net/uid-20620288-id-3167139.html
在linux驱动中常常会碰到gpio_set_value(port_num,0/1)或gpio_direction_output (port_num,0/1) 这两者有什么关系呢gpio_set_value(port_num,0/1) 一般只是在这个GPIO口的寄存器上写上某个值,至于这个端口是否设置为输出,它就管不了!而gpio_direction_output (port_num,0/1),在某个GPIO口写上某个值之后,还会把这个端口设置为输出模式。 因此,有人也许就会建议,把gpio_set_value这个函数直接去掉不用,是否可以,显然是可以的。 但是为什么系统还要用呢, 我个人分析是, 系统开发人员在要结合这两者来使用,以便提高效率。 一般某个端口设置好了输入与输出模式后,最好不要经常变动。 首先要调用gpio_direction_output(),以后要设置高低电平时,直接使用gpio_set_value()就可以了,这样可以省却再次调用设置输出模式的操作,从而提高运行效率!
0 0
- gpio_direction_output 和 gpio_set_value用法的区别
- gpio_direction_output 和 gpio_set_value之间的使用关系
- gpio_direction_output 和 gpio_set_value之间的使用关系
- gpio_direction_output vs gpio_set_value之间的使用关系
- gpio_direction_output vs gpio_set_value之间的使用关系
- gpio_direction_output vs gpio_set_value之间的使用关系
- gpio_direction_output vs gpio_set_value之间的使用关系
- gpio_direction_output vs gpio_set_value之间的使用关系
- gpio_direction_output vs gpio_set_value之间的使用关系
- gpio_direction_output 与 gpio_set_value
- gpio_direction_output 与 gpio_set_value
- gpio_direction_output 与 gpio_set_value
- gpio_direction_output 与 gpio_set_value
- gpio_request gpio_direction_output gpio_set_value
- gpio_direction_output 与 gpio_set_value
- gpio_direction_output 与 gpio_set_value
- gpio_direction_output 与 gpio_set_value
- gpio_direction_output 与 gpio_set_value
- IRAF处理文件整理器,搞定上线!!!
- RabbitMQ消息队列(九):Publisher的消息确认机制
- linux:用户和组文件解释(/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow)
- cron表达式详解
- spring整合消息队列rabbitmq
- gpio_direction_output 和 gpio_set_value用法的区别
- RxJava的Subscriber出现onError时
- 【架构】关于RabbitMQ
- NFS(网络文件系统)简述及使用
- 黑马程序员_多线程安全问题
- android ImageView点击事件如何监听
- 小数化成最简式分数
- RabbitMQ消息队列(九):Publisher的消息确认机制
- 简单sql问题