打印

9260 IO口作为 输入 驱动的问题 读出的值不对

[复制链接]
3397|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cmsdpj|  楼主 | 2011-9-15 16:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
IO, at91, pi, se, npu
OS 为linux2.6.30 cpu 为9260
把PB0,PB1,PB2作为输入口,只检测外部输入高低电平,
初始化IO,
at91_set_gpio_input(AT91_PIN_PB0,1);   //设置PB0为输入口
at91_set_gpio_input(AT91_PIN_PB1,1);  //设置PB1为输入口
at91_set_gpio_input(AT91_PIN_PB2,1);  //设置PB02为输入口

at_sys_write(AT91_PMC_SCER, 1<< AT91SAM9260_ID_PIOB);
//PIO控制时钟使能

//读PB0,PB1,PB2电平
at91_get_gpio_value(AT91_PIN_PB0);
at91_get_gpio_value(AT91_PIN_PB1);
at91_get_gpio_value(AT91_PIN_PB2);
读出来的值都不对,外边输入电压改变时,读出的电平值也不变,
请大峡帮我看看,谢谢

相关帖子

沙发
circuit1234| | 2011-9-21 11:05 | 只看该作者
坐一次沙发。

使用特权

评论回复
板凳
icecut| | 2011-9-22 17:33 | 只看该作者
直接读寄存器看看对不对.
如果对,就是Linux代码你配置baseio地址之类的有问题

使用特权

评论回复
地板
dami| | 2011-9-28 10:06 | 只看该作者
9260的评估板在内核里面有。在board-sam9260ek.c中,配置了BUTTON的平台设备。看下就懂了。
实际就是
static struct platform_device ek_button_device = {
357         .name           = "gpio-keys",
358         .id             = -1,
359         .num_resources  = 0,
360         .dev            = {
361                 .platform_data  = &ek_button_data,
362         }
363 };
364
365 static void __init ek_add_device_buttons(void)
366 {
367         at91_set_gpio_input(AT91_PIN_PA30, 1);  /* btn3 */
368         at91_set_deglitch(AT91_PIN_PA30, 1);
369         at91_set_gpio_input(AT91_PIN_PA31, 1);  /* btn4 */
370         at91_set_deglitch(AT91_PIN_PA31, 1);
371
372         platform_device_register(&ek_button_device);
373 }

然后是:
ek_add_device_buttons();
还有内核配置时要勾上这个驱动。
你的照这个驱动写只需要更改IO就可以。
应该是没问题的。

使用特权

评论回复
5
cmsdpj|  楼主 | 2011-11-10 10:15 | 只看该作者
已经解决了,是我硬件的问题.

使用特权

评论回复
6
zhou2008_5| | 2013-5-20 15:07 | 只看该作者
大虾,硬件什么问题啊??我也遇到这样的问题,没发现硬件什么问题了??

使用特权

评论回复
7
zhou2008_5| | 2013-5-20 15:09 | 只看该作者
我的硬件有上拉4.7K的电阻,我是先做输出口,再做输入口使用的,输出口可以,输入口不能读出数据。大神指点

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

35

帖子

0

粉丝