新手学iic,卡了好几天,进度慢啊

2019-08-13 20:10发布

u8 AT24CXX_Check(void)
{
u8 temp;
temp=AT24CXX_ReadOneByte(255)     
if(temp==0X55)return 0;     
else
{
  AT24CXX_WriteOneByte(255,0X55);
     temp=AT24CXX_ReadOneByte(255);   
  if(temp==0X55)return 0;
}
return 1;            
}
这个temp==0X55是啥啊,0X55有什么特殊含义吗?

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
22条回答
烽烟愠梓
1楼-- · 2019-08-15 12:46
liuliupiaoxue 发表于 2017-9-26 20:26
注释已经说得很清楚了。0x55只是一个数据,写在地址255处。目的是check的时候,发现读取255地址的数据是0x5 ...

大侠,还有个问题,嗯,还有个问题需要您帮一下,就是应答问题,不是8位传输完后就有一个应答嘛,这个传输既可以是主到从,也可以是从到主,但是应答信号编程时候就已经确定不变了IIC_Wait_Ack();        ,它里面始终是SDA_IN();这个IN是指主机的输入还是从机的输入啊,
liuliupiaoxue
2楼-- · 2019-08-15 18:20
烽烟愠梓 发表于 2017-9-28 14:02
大侠,还有个问题,嗯,还有个问题需要您帮一下,就是应答问题,不是8位传输完后就有一个应答嘛,这个传 ...

SDA_IN(),这句只是宏定义,配置主机STM32的SDA线为输入模式,为接收从机发应答信号准备。
简单来说就是你要输入信号给STM32,你得把IO配置成输入模式。
烽烟愠梓
3楼-- · 2019-08-15 21:30
jermy_z 发表于 2017-9-27 10:20
没有特殊含义,就是一个标志而已,逻辑看不懂码? 上电开机读取255地址的数据,如果是0x55,则证明AT24CXX ...

那已经向255写入0x55了,再读出来还有可能不是0x55?能不能简单说明一下吗,谢谢大神
烽烟愠梓
4楼-- · 2019-08-15 23:04
 精彩回答 2  元偷偷看……
烽烟愠梓
5楼-- · 2019-08-16 03:21
青春梦飞翔 发表于 2017-9-27 10:35
0x55 本身没有太大的含义,用其他的也可以(除了0x00 0xFF 要和变量初始化时的不一样),这段代码就是用来 ...

那已经向255写入0x55了,再读出来还有可能不是0x55?能不能简单说明一下吗,谢谢大神
烽烟愠梓
6楼-- · 2019-08-16 09:14
烽烟愠梓 发表于 2017-10-6 20:52
那已经向255写入0x55了,再读出来还有可能不是0x55?能不能简单说明一下吗,谢谢大神

这个程序的逻辑是则么回事啊?我就感觉这个程序根本就到达不了 return 1 啊,每次检测如果不是0x55不就进入else 了吗,else里边又一定是返回return 0 的,所以根本到达不了 return 1 啊?这样理解哪里出粗了?

一周热门 更多>