S3C2410 GPIO 如何读取电平信号?

[复制链接]
5864|11
 楼主| sdc666 发表于 2009-10-29 11:36 | 显示全部楼层 |阅读模式
你好,我最近在做一个数据采集板,用GPIOD控制采集芯片,GPIOD既负责发送控制命令,又负责采集数据,这就需要对GPIOD做控制,使其能够在发命令时方向为out,读取数据时方向为in。 但是,现在出现一个问题,我发完读取数据的命令后,读到的数据和发送的命令是一样的,也就是说,又将GPDATA的数据读了回来,外部数据并没有通过GPIO更新GPDATA。 请问应该如何解决?谢谢!

int hdb(void)
{   
  rGPDCON = (rGPDCON & ~0xffffffff|0x0);//GPD0-GPD15:input
     int d = rGPDDAT;
     return d;
     
}
SeaSun 发表于 2009-10-30 22:41 | 显示全部楼层
数据通信需要协议阿,老兄
lelee007 发表于 2009-10-31 12:13 | 显示全部楼层
看看你硬件有木有把数据发到GPD上去

很有可能你写出去的命令数据在接口上没动,而且你采集模块根本没把你想读的数据发过来

检查下原理上的逻辑是否正确,在检查下读写时序是否符合硬件要求
 楼主| sdc666 发表于 2009-11-1 09:05 | 显示全部楼层
3# lelee007

谢谢,我再检查一下。那用GPIO控制的话,引脚的速度怎么控制呢?
 楼主| sdc666 发表于 2009-11-1 09:25 | 显示全部楼层
2# SeaSun
哦,谢谢老兄。 我有通信协议的,有相应的GPIO控制CS,RW,RD,只是总是没反应。
yuhuihui 发表于 2009-11-3 09:06 | 显示全部楼层
:) 呵呵 帮顶下
gooogleman 发表于 2009-11-3 23:49 | 显示全部楼层
感觉没有啥错误啊。
bkgl1986 发表于 2009-11-4 14:50 | 显示全部楼层
本帖最后由 bkgl1986 于 2009-11-4 14:51 编辑

试试这个:设置GPIO为输入之后,加个小小的延迟再读取数据
我以前做个扫描按键的程序也遇到过这样的问题
gooogleman 发表于 2009-11-12 10:13 | 显示全部楼层
还没有解决吗?

信号不要变化太快的,否则采集不到的。
wangkj 发表于 2009-11-12 12:50 | 显示全部楼层
使用voliate变量;禁用cache
 楼主| sdc666 发表于 2009-11-13 12:30 | 显示全部楼层
8# bkgl1986
谢谢,加上延迟就好了,是外部器件的速度有些慢。
 楼主| sdc666 发表于 2009-11-13 12:30 | 显示全部楼层
9# gooogleman
谢谢,加上延迟就好了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

29

主题

83

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部