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); //关闭外部存储器接口
} 怎么都是模拟时序 先确保CB、DB、AB没有短路或断路。
1、单步调试,用示波器检查控制信号(CE、OE、R/W)电平是否正确;
2、仔细核对datasheet上的读写时序,尤其是有些延时会有最大值或最小值的要求;
一般都是这两方面的原因。
页:
[1]