原子的模拟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条回答
502363916
1楼-- · 2019-07-24 17:37
小罗洛克 发表于 2014-8-4 15:29
回复【20楼】正点原子:
---------------------------------
原子哥解释好清晰,我得代码也是直接修改你的, ...

解决了么 其实没有写进去数据 默认的是0xFF 只要在写每一个数据后面加一个几毫秒的延迟就没有问题了
502363916
2楼-- · 2019-07-24 19:32
正点原子 发表于 2014-8-4 19:15
回复【21楼】小罗洛克:
---------------------------------
这就难说了
可能硬件电路问题?软件问题?芯片 ...

软件问题 写一个比特的这个没写完一个需要一个延迟
newphj
3楼-- · 2019-07-24 22:38
正点原子 发表于 2014-8-4 15:25
[mw_shl_code=c,true]//在AT24CXX指定地址读出一个数据
//ReadAddr:开始读数的地址  
//返回值  :读到 ...

谢谢原子哥,,,
zhuri
4楼-- · 2019-07-25 02:03
temp=AT24CXX_ReadOneByte(255);//避免每次开机都写AT24CXX
冰山一角
5楼-- · 2019-07-25 03:24
 精彩回答 2  元偷偷看……
oskai
6楼-- · 2019-07-25 05:23
lison0103 发表于 2016-1-8 12:25
用AT24C256也是读出的0XFF,用原子的程序,原来就是多了一个ACK
谢谢!

你好!我也遇到这个问题,是多了哪一个ACK??谢谢!

一周热门 更多>