原子的模拟IIC驱动24c64读取数据一直是0xFF

2019-07-20 23:16发布

 我移植正点原子的模拟IIC程序之后,根据我的硬件做了如下修改:
1、修改头文件的宏定义为“#define EE_TYPE AT24C64”驱动24c64,
2、配置PA0为SCL,  A1为SDA.
3、修改初始化以及头文件里面的输入输出为PA0和PA1.

在main()中依然添加此函数:
u8 AT24CXX_Check(void)
{
u8 temp;
temp=AT24CXX_ReadOneByte(255);//避免每次开机都写AT24CXX    
if(temp==0X55)return 0;    
else//排除第一次初始化的情况
{
AT24CXX_WriteOneByte(255,0X55);
    temp=AT24CXX_ReadOneByte(255);   
if(temp==0X55)return 0;
}
return 1;   
}

我仿真进入此函数之后,每次读出来的temp=0xFF.
一直很郁闷,不知道问题到底出在哪里?请帮忙分析一下。谢谢。 
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
33条回答
驯马师
1楼-- · 2019-07-21 22:16
回复【5楼】正点原子:
---------------------------------
//本程序只供学习使用,未经作者许可,不得用于其它任何用途
//ALIENTEK战舰STM32开发板
//IIC驱动 代码    
//正点原子@ALIENTEK
//技术论坛:www.openedv.com
//修改日期:2012/9/9
//版本:V1.0
//版权所有,盗版必究。
//Copyright(C) 广州市星翼电子科技有限公司 2009-2019
//All rights reserved


这个应该是最新的吧?
正点原子
2楼-- · 2019-07-22 01:37
看这两个函数:
//在AT24CXX指定地址读出一个数据
//ReadAddr:开始读数的地址  
//返回值:读到的数据
u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{   
u8 temp=0;          
    IIC_Start();  
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0);    //发送写命令
IIC_Wait_Ack();
IIC_Send_Byte(ReadAddr>>8);//发送高地址     
}else IIC_Send_Byte(0XA0+((ReadAddr/256)<<1));   //发送器件地址0XA0,写数据     
IIC_Wait_Ack(); 
    IIC_Send_Byte(ReadAddr%256);   //发送低地址
IIC_Wait_Ack();     
IIC_Start();        
IIC_Send_Byte(0XA1);           //进入接收模式    
IIC_Wait_Ack();  
    temp=IIC_Read_Byte(0);    
    IIC_Stop();//产生一个停止条件     
return temp;
}
//在AT24CXX指定地址写入一个数据
//WriteAddr:写入数据的目的地址    
//DataToWrite:要写入的数据
void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{              
    IIC_Start();  
if(EE_TYPE>AT24C16)
{
IIC_Send_Byte(0XA0);     //发送写命令
IIC_Wait_Ack();
IIC_Send_Byte(WriteAddr>>8);//发送高地址   
}else IIC_Send_Byte(0XA0+((WriteAddr/256)<<1));   //发送器件地址0XA0,写数据   
IIC_Wait_Ack();    
    IIC_Send_Byte(WriteAddr%256);   //发送低地址
IIC_Wait_Ack();          
IIC_Send_Byte(DataToWrite);     //发送字节    
IIC_Wait_Ack();           
    IIC_Stop();//产生一个停止条件 
delay_ms(10);  
}
驯马师
3楼-- · 2019-07-22 05:50
 精彩回答 2  元偷偷看……
4027379
4楼-- · 2019-07-22 07:36
 精彩回答 2  元偷偷看……
Vincent_t
5楼-- · 2019-07-22 13:35
回复【8楼】驯马师:
---------------------------------
请问一下,您是删除了哪个ACK的,您修改后的程序和原子哥提供的是一样的么?谢谢。
Vincent_t
6楼-- · 2019-07-22 13:44
回复【7楼】正点原子:
---------------------------------
请问一下,我用的就是这个程序,但还是读出的都是0xFF!谢谢

一周热门 更多>