24C16C读写不成功
Rand_Write_Eeprom(0,0X55);a2b_test_data = Rand_Read_Eepeom(0);
//at24c16CËæ»úд
void Rand_Write_Eeprom(u16 data_addr,u8 data)
{
u8 ret ;
u8 addr ;
iic2key_Start();
iic2key_SendByte(0xA0);
ret = iic2key_Wait_Ack();
//addr = data_addr>>8;
// iic2key_SendByte(addr); //¼Ä´æÆ÷¸ßλ
// ret = iic2key_Wait_Ack();
addr = data_addr ;
iic2key_SendByte(addr); //¼Ä´æÆ÷µÍλ
ret = iic2key_Wait_Ack();
iic2key_SendByte(data);
ret = iic2key_Wait_Ack();
iic2key_Stop();
}
//AT24C16CËæ»ú¶Á
u8 Rand_Read_Eepeom(u16 data_addr)
{
u8 ret ;
u8 addr ;
u8 rec_data ;
iic2key_Start();
iic2key_SendByte(0xa0);
ret = iic2key_Wait_Ack();
// addr = data_addr>>8;
// iic2key_SendByte(addr); //¼Ä´æÆ÷¸ßλ
// ret = iic2key_Wait_Ack();
addr = data_addr ;
iic2key_SendByte(addr); //¼Ä´æÆ÷µÍλ
ret = iic2key_Wait_Ack();
iic2key_Start();
iic2key_SendByte(0xa1);
ret = iic2key_Wait_Ack();
rec_data = iic2key_RecvByte(1);
iic2key_Stop();
return rec_data ;
}
调用24C16C随机读写函数ACK都是正常的,但是读取的值一直是0XFF是怎么回事??
写是需要时间的,虽然应答是成功的 或许根本没写进去 已经做了延时处理了啊 正常的话是5MS,我已经在中间延时了500MS 18576478035 发表于 2021-4-13 09:47
正常的话是5MS,我已经在中间延时了500MS
那就是真有问题,检查程序 18576478035 发表于 2021-4-13 09:47
正常的话是5MS,我已经在中间延时了500MS
读写都发送0xa0地址肯定是不对的 ayb_ice 发表于 2021-4-13 09:52
读写都发送0xa0地址肯定是不对的
有啥问题呢?读的时候先发送A0在发送A1, 这个程序读写24C02和24C256都没有问题,这个C16C也是够奇怪的 18576478035 发表于 2021-4-13 11:12
有啥问题呢?读的时候先发送A0在发送A1,
是的,理解错了,
但你的程序并没有判断返回值,可能并没有正确返回,返回值判断调试的关键
其次要注意读取后要发送非应答位, ayb_ice 发表于 2021-4-13 11:24
是的,理解错了,
但你的程序并没有判断返回值,可能并没有正确返回,返回值判断调试的关键
仿真的时候可以看到ret都是0 ,而且rec_data = iic2key_RecvByte(1);这个函数参数是1的时候就是非应答位 18576478035 发表于 2021-4-13 14:32
仿真的时候可以看到ret都是0 ,而且rec_data = iic2key_RecvByte(1);这个函数参数是1的时候就是非应答位 ...
返回都正确的话,就应该是正确的,现在不正确,肯定是有问题
仿真不代表真实情况,当然也可能是其它问题引起的
页:
[1]