1、讨教一下,MC55模块开机不了,看了论坛里面的帖子说是电源问题,或者是EMERGEOFF没有给周期信号,但是测试过电源引脚电压为4.067V,纹波为300mV,采用的电源模块是LT1805,输出最大电流是3A,满足MC55最大电流2A的要求。
2、PCB布线时的电源引脚部分,采用的分割电源层走电源线,在电源进入到MC55电源引脚处未放置滤波电容,是不是这个问题呢?滤波电容只是使纹波更小,300mV的纹波满足最大400mV的纹波要求呀!
GPRS模块原理图和PCB.rar
(228.46 KB)
3、软件部分:
#include "system.h"
#include "alt_types.h"
#include "altera_avalon_pio_regs.h"
#include "sys/alt_alarm.h"
#include <stdio.h>
static unsigned char emergeoff = 0xff;
void initpio(void)
{
IOWR_ALTERA_AVALON_PIO_DIRECTION(PIO_EMERGEOFF_BASE,0xff);//PIO_EMERGEOFF为
输出
IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_EMERGEOFF_BASE,0x00);
IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_EMERGEOFF_BASE,0x00);
}
int main()
{ unsigned int m,n;
unsigned char gtt = 0xff;
unsigned int kong;
initpio();
IOWR_ALTERA_AVALON_PIO_DATA(PIO_EMERGEOFF_BASE,0xff);
gtt = 0x00; //高阻>10ms
IOWR_ALTERA_AVALON_PIO_DATA(PIO_IGT_BASE,gtt);
for(m=0;m<150;m++)
for(n=0;n<10000;n++)
{ ;}
gtt = 0xff; //低电平>100ms
IOWR_ALTERA_AVALON_PIO_DATA(PIO_IGT_BASE,gtt);
for(m=0;m<1500;m++)
for(n=0;n<10000;n++)
{ ;
gtt = 0x00; //一直高阻
IOWR_ALTERA_AVALON_PIO_DATA(PIO_IGT_BASE,gtt);
while(1)
{
for(m=0;m<10000;m++)
for(n=0;n<10000;n++)
{ ;}
if(emergeoff == 0xff) emergeoff = 0x00;
else emergeoff = 0xff;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_EMERGEOFF_BASE,emergeoff);
}
return 0;
}
采用的时钟是50MHz,但是用示波器测得的EMERGEOFF周期不是2s,大概差10倍的关系(200ms)。然后对程序相应的添零,还是触发不了!问题会出在什么地方呢?? |