shl2010 发表于 2010-3-7 11:19:50

Atmega162 无法将数据写入外部SRAM,读SRAM正常

请教大虾,ATMEGA162扩展外部SRAM,读出数据正常,但是写到外部SRAM的字节,读出来不是写的数据,也就是数据写不进去,是什么原因?
下面是读写函数:
voidSRAM_rd(uint adress)
{
   MCUCR|=BIT(SRE);    //使能外部存储器接口
   PORTB|=BIT(3);      //CS=0片选生效
   PORTD|=BIT(PD6);   //关闭写使能
   PORTA = adress;
   PORTC = adress>>8;
   PORTE&=~BIT(PE1);
   PORTE|=BIT(PE1);    //ALE产身产生一个上升,外部地址锁存使能
   
   PORTE&=~BIT(PE1);//ALE失效
   PORTD&=~BIT(PD7);//读信号使能
   MCUCR&=~BIT(SRE);   //关闭外部存储器接口
   PORTB&=~BIT(3);      //CS=1片选失效
   //return PORTA ;
   
}

voidSRAM_wr(uchar byte,uint adress)
{
   MCUCR|=BIT(SRE);    //使能外部存储器接口
   PORTD|=BIT(PD7);    //关闭读使能
   
   PORTA = adress;
   PORTC = adress>>8;
   
   PORTE&=~BIT(PE1);
   PORTE|=BIT(PE1);   //ALE产身产生一个上升,外部地址锁存使能
   PORTE&=~BIT(PE1);    //ALE失效
   
   PORTD&=~BIT(PD6);    //写信号使能   
   PORTB|=BIT(3);      //CS=0片选生效
   
   
   delay_us(1);
   PORTA=byte;
   
   PORTB&=~BIT(3);      //CS=1片选失效
   PORTD|=BIT(PD6);   //关闭写使能
   
   MCUCR&=~BIT(SRE);   //关闭外部存储器接口
}

ldcywf 发表于 2010-9-16 09:16:57

怎么都是模拟时序

jackchen5717 发表于 2013-4-8 10:33:03

先确保CB、DB、AB没有短路或断路。
1、单步调试,用示波器检查控制信号(CE、OE、R/W)电平是否正确;
2、仔细核对datasheet上的读写时序,尤其是有些延时会有最大值或最小值的要求;
一般都是这两方面的原因。
页: [1]
查看完整版本: Atmega162 无法将数据写入外部SRAM,读SRAM正常