主题 : 现在我在用mini2440的板子和超声波模块做个超声波测距系统,但是有以下问题,不知道如何处理 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 31613
精华: 0
发帖: 5
金钱: 35 两
威望: 7 点
综合积分: 10 分
注册时间: 2010-11-02
最后登录: 2010-11-10
楼主  发表于: 2010-11-08 18:08

 现在我在用mini2440的板子和超声波模块做个超声波测距系统,但是有以下问题,不知道如何处理

目前,我在做个超声波测距的小功能。用的超声波模块是买锐志单片机板子时送的。 ARM板为S3C2440.我使用2440的GPIO1,3作为超声波模块的电源和接地引脚,9,11分别接TX发射端,RX接收端。配置引脚9为GPF0 输出,配置引脚11 GPF2为EINT2 下降沿中断。发波采用高低电压的改变来模拟。检测返回波时,采用EINT2中断判断。但是如下代码却检测不到回波,很郁闷,不知道错在哪里。请教各位,帮帮我。C语言主函数代码如下:

C/C++ code

    //*************************************************** #include "def.h" #include "option.h" #include "2440addr.h" #include "2440lib.h" #include "2440slib.h" #include "mmu.h" //================================ void delay_20us() { unsigned char bt; for(bt=0;bt<60;bt++); } static void __irq Eint2Int(void) { rSRCPND = BIT_EINT2; rINTPND = BIT_EINT2; rINTPND; Uart_Printf("Eint2 interrupt is occurred\n"); } int Main(int argc, char **argv) { U8 key; U32 mpll_val=0; U8 num =6; mpll_val = (92<<12)|(1<<4)|(1); //init FCLK=400M, so change MPLL first ChangeMPllValue((mpll_val>>12)&0xff, (mpll_val>>4)&0x3f, mpll_val&3); ChangeClockDivider(key, 12); Uart_Init(0,115200); Uart_Select(0); MMU_Init(); MMU_DisableICache(); MMU_DisableDCache(); rGPFCON &= ~(0x12); rGPFCON |= (0x21);//配置引脚 GPF0[1:0]=01 输出 GPF2[5:4]=10 Eint2 rGPFDAT &= ~1;//把相应的GPFDAT的最低位 = 0 清空 //INTPND EINT2[2] = 1 Requested rSRCPND = rSRCPND |0x4; //EXTINT0 EINT2[10:8] = 01X:下降沿触发 rEXTINT0 =(rEXTINT0 &~(0x7<<8))|0x2<<8; for(num =6;num>0;num--)//发波//先进行测试能不能接收到回波 { rGPFDAT |= 1;//把相应的GPFDAT的最低位 = 1 delay_20us(); rGPFDAT &= ~1;//把相应的GPFDAT的最低位 = 0 } //SRCPND EINT2[2] = 1;Requested rSRCPND = BIT_EINT2;//清楚先前状态位 若有外部输入,屏蔽中断 //INTPND EINT2[2] = 1:Requested rINTPND = BIT_EINT2; //外部中断函数声明 pISR_EINT2 = (unsigned)Eint2Int; rINTMSK &= ~(BIT_EINT2);//中段开始工作 //while(1); } Uart_Printf("Over!\n"); return 0; }


我不知道哪里出了问题,为什么会检测不到回波,做了好几天了,弄得自己一点心情也没了。我现在在想发波成功了没。不知道哪位大侠做过类似的,可以交流下,提点意见?
级别: 新手上路
UID: 32845
精华: 0
发帖: 5
金钱: 25 两
威望: 5 点
综合积分: 10 分
注册时间: 2010-11-22
最后登录: 2010-12-01
1楼  发表于: 2010-11-22 15:03
不是吧大哥。。。ARM9做51就能做的事情。不浪费么?
我做过,以前用MP430做的,很简单啊。测距13M。虽不远,但很简单啊。