当前位置: 技术问答>linux和unix
gpio驱动的疑问?
来源: 互联网 发布时间:2016-12-06
本文导语: 看GPIO驱动遇到的两个问题: 1.函数gpio_set_debounce是做什么用的?硬件物理意义是什么? 2.看到一些驱动在使用GPIO作为irq的时候,在调用gpio_to_irq之前都会先调用gpio_direction_input将GPIO先设成输入,感觉gpio_direction_input可...
看GPIO驱动遇到的两个问题:
1.函数gpio_set_debounce是做什么用的?硬件物理意义是什么?
2.看到一些驱动在使用GPIO作为irq的时候,在调用gpio_to_irq之前都会先调用gpio_direction_input将GPIO先设成输入,感觉gpio_direction_input可有可无,能给一个先调用gpio_direction_input的理由不?
1.函数gpio_set_debounce是做什么用的?硬件物理意义是什么?
2.看到一些驱动在使用GPIO作为irq的时候,在调用gpio_to_irq之前都会先调用gpio_direction_input将GPIO先设成输入,感觉gpio_direction_input可有可无,能给一个先调用gpio_direction_input的理由不?
|
1.我搜索了2.6.27.8的内核,只看到omap的BSP代码中有gpio_set_debounce的用法,其它的处理器貌似不支持这个功能。因此这应该是一个依赖芯片的功能。个人猜测是设置中断的消抖时间,减少干扰。楼主看看自己的处理器是否支持这个功能,如果不支持就没必要在这个问题上纠结。
2.gpio_direction_input是为了消除之前设置的输出状态对引脚电平的影响。众所周知,设为输入的GPIO的电平仅仅决定于外部,与之前输出状态下设置的值无关。要是还是输出的状态,则io上的电平可能一直是你之前设置的输出值。这样就无法检测到电平的变化了
2.gpio_direction_input是为了消除之前设置的输出状态对引脚电平的影响。众所周知,设为输入的GPIO的电平仅仅决定于外部,与之前输出状态下设置的值无关。要是还是输出的状态,则io上的电平可能一直是你之前设置的输出值。这样就无法检测到电平的变化了