OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 23136|回复: 33

关于IIC通讯的问题,原子哥帮我看一下吧!!

[复制链接]

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
发表于 2013-8-9 16:00:24 | 显示全部楼层 |阅读模式

 STM32的PC1(引脚9)接AT24C512的SDA(引脚5)、        STM32的PC2(引脚10)接AT24C512的SCL(引脚6)、    
 STM32的PA9(引脚42)接AT24C512的SDA(引脚5)、        STM32的PA10(引脚43)接AT24C512的SCL(引脚6)、 

我的IIC初始化为:
//初始化IIC
void IIC_Init(void)
{         
  RCC->APB2ENR|=1<<4;//先使能外设IO PORTC时钟        
 GPIOC->CRL&=0XFFFFF00F;//PC1、PC2 推挽输出
 GPIOC->CRL|=0X00000330;   
 GPIOC->ODR|=1<<1;     //PC1输出高
 GPIOC->ODR|=1<<2;     //PC2输出高

 RCC->APB2ENR|=1<<2;       //PORTA时钟使能
 GPIOA->CRH&=0XFFFFF00F;
 GPIOA->CRH|=0X00000330; //PA9、10推挽输出
 GPIOA->ODR|=1<<9;  //PA9输出高   
 GPIOA->ODR|=1<<10;  //PA10输出高
}


//IO方向设置
//#define SDA_IN()  {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;}
//#define SDA_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;}
#define SDA_IN()  {GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=0X00000080; }
#define SDA_OUT() {GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=0X00000030; }
//IO操作函数 
#define IIC_SCL    PCout(2) //SCL
#define IIC_SDA    PCout(1) //SDA 
#define READ_SDA   PCin(1)  //输入SDA

读:
u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{     
 u8 temp=0;                         
    IIC_Start(); 
 if(EE_TYPE>AT24C16)
 {
  IIC_Send_Byte(0XA2);    //发送写命令
  IIC_Wait_Ack();
  IIC_Send_Byte(ReadAddr>>8);//发送高地址
  IIC_Wait_Ack();  
 }
 else
  IIC_Send_Byte(0XA2+((ReadAddr/256)<<1));   //发送器件地址0XA0,写数据  

 IIC_Wait_Ack();
     IIC_Send_Byte(ReadAddr%256);   //发送低地址
 IIC_Wait_Ack();    
 IIC_Start();       
 IIC_Send_Byte(0XA3);           //进入接收模式     
 IIC_Wait_Ack(); 
    temp=IIC_Read_Byte(0);    
    IIC_Stop();//产生一个停止条件    
 return temp;
}


写:

void AT24CXX_WriteOneByte(u16 WriteAddr,u8 DataToWrite)
{                               
    IIC_Start(); 
 if(EE_TYPE>AT24C16)
  {
   IIC_Send_Byte(0XA2);     //发送写命令
   IIC_Wait_Ack();    //等待信号的到来
   IIC_Send_Byte(WriteAddr>>8);//发送高地址  
  }
 else
   IIC_Send_Byte(0XA2+((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); 
}



主函数:
const u8 TEXT_Buffer[]={"WarShipSTM32 IIC TEST"};
#define SIZE sizeof(TEXT_Buffer)  


 u8 datatemp[SIZE];
AT24CXX_Write(0, (u8*)TEXT_Buffer,SIZE);
 AT24CXX_Read(0,datatemp,SIZE);
 //LCD_ShowChar(20, 20,datatemp[0], 12, 0);
 LCD_ShowString(20,20,200,16,16,datatemp);




就是读不出来。。。。   不知道哪里做错了,原子哥帮我看看哪里有问题,谢谢!!


只求每天都能把小事做好。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-9 18:00:13 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-9 18:03:17 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
  那就奇怪了,难道板子的问题!!!不过还是值得开心一下的   谢谢你原子哥,是你给予我信心!!!
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-9 18:12:26 | 显示全部楼层
回复【3楼】我爱STM_32:
---------------------------------
建议看看IO口电平变化,用示波器.
没示波器的话,用JTAG单步调试,用万用表看.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-9 19:16:39 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
   感动啊!!!我老大也是给个万能表我    叫我看看IO口电平变化
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-9 19:58:05 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥,其实用万能表如何测量引脚的电平的     COM口我已经接黑色的   V接红色 的了      一个引脚如何用两支笔测的???     以前从来没用过万能表,很陌生。。。
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-9 20:26:57 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
原子哥  我测了24C512的几个SCL  和SDA都是1   是什么回事啊?能说明什么问题吗?
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-9 21:02:14 | 显示全部楼层
回复【6楼】我爱STM_32:
---------------------------------
万用表还没用过啊...
这个...找个同事问问怎么用吧.呵呵.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-9 21:05:16 | 显示全部楼层
回复【8楼】正点原子:
--------------------------------- 
   找人问过了,刚测了24C512的几个SCL  和SDA都是1   是什么回事啊?能说明什么问题吗?    断点设置在AT24CXX_Read(0,datatemp,SIZE);
LCD_ShowString(20,20,200,16,16,datatemp);    这里。。。。
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-9 21:18:04 | 显示全部楼层
回复【9楼】我爱STM_32:
---------------------------------
你要设置到底层,操作IO口的时候去测试,你直接一个函数过,那八成看不到变化了...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-12 17:14:18 | 显示全部楼层
回复【10楼】正点原子:
---------------------------------
当IIC_SDA=1;  IIC_SCL=1;      时   ,SDA、SCL  IO口显示3.32V(量程调到20V)
当IIC_SDA=0;  IIC_SCL=0;      时   ,SDA、SCL  IO口显示0V(量程调到20V)


原子哥,测出来这样子的数据,说明是IO口没问题吗?
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-12 21:16:45 | 显示全部楼层
回复【11楼】我爱STM_32:
---------------------------------
对啊.
关键看看SDA读数据的时候,对么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-13 09:35:53 | 显示全部楼层
u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
SDA_IN();      //SDA设置为输入  
IIC_SDA=1;delay_us(1);    
IIC_SCL=1;delay_us(1);  
while(READ_SDA) 
{
ucErrTime++;
if(ucErrTime>250)
{
error=1;
IIC_Stop();
return 1;
}
}
IIC_SCL=0;//时钟输出0     
return 0;  



while(READ_SDA) 
当断点在这里时,测出来的SDA电压突然少了一半,即为:1.6V左右。。。。      SCL为3.32V正常             
是不是这里有问题啊?
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 09:40:42 | 显示全部楼层
执行过:SDA_IN();  之后呢?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-13 10:09:23 | 显示全部楼层
回复【14楼】正点原子:
---------------------------------
#define SDA_IN()  {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;}

什么意思啊?    我测过所有SDA、SCL的电平都是正常的。。就是只有在 u8 IIC_Wait_Ack(void) 里才会出现:当断点在这里时,测出来的SDA电压突然少了一半,即为:1.6V左右。。。。      SCL为3.32V正常
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 10:35:46 | 显示全部楼层
回复【15楼】我爱STM_32:
---------------------------------
define SDA_IN()  {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;} 

设置IO口方向啊...
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-13 10:44:56 | 显示全部楼层
回复【16楼】正点原子:
---------------------------------
//IO方向设置
//#define SDA_IN()  {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;}
//#define SDA_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;}

#define SDA_IN()  {GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=0X00000080; }
#define SDA_OUT() {GPIOC->CRL&=0XFFFFFF0F;GPIOC->CRL|=0X00000030; }
//IO操作函数  
#define IIC_SCL    Cout(2) //SCL
#define IIC_SDA    Cout(1) //SDA  
#define READ_SDA   Cin(1)  //输入SDA


设置错了吗??
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 12:52:44 | 显示全部楼层
回复【17楼】我爱STM_32:
---------------------------------
没错。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-13 13:21:32 | 显示全部楼层
回复【18楼】正点原子:
---------------------------------
如果是设置STM32的PA9(引脚42)接AT24C512的SDA(引脚5)、        STM32的PA10(引脚43)接AT24C512的SCL(引脚6)、

这样子设置是正确的吗?

//IO方向设置
//#define SDA_IN()  {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=8<<12;}
//#define SDA_OUT() {GPIOC->CRH&=0XFFFF0FFF;GPIOC->CRH|=3<<12;}
#define SDA_IN()  {GPIOA->CRH&=0XFFFFFF0F;GPIOA->CRH|=0X00000080; }
#define SDA_OUT() {GPIOA->CRH&=0XFFFFFF0F;GPIOA->CRH|=0X00000030; }

//IO操作函数  
#define IIC_SCL    Aout(10) //SCL
#define IIC_SDA    Aout(9) //SDA  
#define READ_SDA   Ain(9)  //输入SDA
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 13:34:03 | 显示全部楼层
回复【19楼】我爱STM_32:
---------------------------------
也对啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-13 13:39:15 | 显示全部楼层
回复【20楼】正点原子:
---------------------------------
那就奇怪了,为什么
u8 IIC_Wait_Ack(void) 

u8 ucErrTime=0; 
SDA_IN();      //SDA设置为输入   
IIC_SDA=1;delay_us(1);     
IIC_SCL=1;delay_us(1);   
while(READ_SDA)  

ucErrTime++; 
if(ucErrTime>250) 

error=1; 
IIC_Stop(); 
return 1; 


IIC_SCL=0;//时钟输出0      
return 0;   
}  


while(READ_SDA)  
当断点在这里时,测出来的SDA电压突然少了一半,即为:0.67V左右。。。。      SCL为1.27V正常              
这里的问题 ,  说明是硬件的问题?还是 软件的问题啊? 
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 13:40:37 | 显示全部楼层
回复【21楼】我爱STM_32:
---------------------------------
STM32停止了么?没有在WHILE里面循环跑吧? 停止了电话,看看寄存器状态。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-13 13:50:16 | 显示全部楼层
int main(void)
{       
      AT24C64_WriteOneByte(0,33);
           delay_ms(20);
gg=AT24C64_ReadOneByte(0);
delay_ms(20);
}

就在main函数里面跑,STM32没停止,也不断电。。
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 13:59:30 | 显示全部楼层
回复【23楼】我爱STM_32:
---------------------------------
当然要让他停止了。。。单步调试啊!!!
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-13 14:07:47 | 显示全部楼层
回复【24楼】正点原子:
---------------------------------
原子哥,你误会我意思了。。。我就把断点设置在
u8 IIC_Wait_Ack(void)  
{  
u8 ucErrTime=0;  
SDA_IN();      //SDA设置为输入    
IIC_SDA=1;delay_us(1);      
IIC_SCL=1;delay_us(1);    
while(READ_SDA)   
{  
ucErrTime++;  
if(ucErrTime>250)  
{  
error=1;  
IIC_Stop();  
return 1;  
}  
}  
IIC_SCL=0;//时钟输出0       
return 0;    
}   

断点在while(READ_SDA) 这里。。。然后去测SDA、SCL的电压。。   测出来是SDA为0.67V。。。      SCL为1.27V正常 

再单步运行,程序没有跳进去while(READ_SDA)里(说明接收是成功的)。。。。。可问题就是既然接收成功了,那么读出来就应该是0x21才对的。。
在主函数里,读出来的却是0x00.。。   这又说明了什么问题啊?原子哥
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 14:20:51 | 显示全部楼层
回复【25楼】我爱STM_32:
---------------------------------
你那个0.67V,表示不知道怎么来的,还有SCL为1.27V,也不正常。
你看看寄存器状态吧,如果寄存器状态正常,说明就是你的代码问题了(可以排除GPIO的设置问题了,检查功能上的问题)
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-13 14:25:57 | 显示全部楼层
回复【26楼】正点原子:
---------------------------------
你看看寄存器状态吧,如果寄存器状态正常,说明就是你的代码问题了


这句话如何理解啊?不是很明白。。
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-13 14:33:32 | 显示全部楼层
回复【26楼】正点原子:
---------------------------------
不是1.27V      那该是多少V才算正常啊?(量程调为20V)..
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-13 16:15:23 | 显示全部楼层
回复【26楼】正点原子:
---------------------------------
原子哥  ,,  我的这个AT24C512是不是坏了。。。。
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-8-13 16:39:31 | 显示全部楼层
高电平3.3V
低电平0V。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

165

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2013-6-18
在线时间
0 小时
 楼主| 发表于 2013-8-13 17:13:23 | 显示全部楼层
回复【30楼】正点原子:
---------------------------------
估计是AT24C512坏了。。。。
只求每天都能把小事做好。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2013-11-6
在线时间
0 小时
发表于 2013-11-6 17:34:49 | 显示全部楼层
楼主问题解决了不? 
u8 AT24CXX_ReadOneByte(u16 ReadAddr)
{      
 u8 temp=0;                          
    IIC_Start();  
 if(EE_TYPE>AT24C16)
 {
  IIC_Send_Byte(0XA2);    //发送写命令
  IIC_Wait_Ack();
  IIC_Send_Byte(ReadAddr>>8);//发送高地址
  IIC_Wait_Ack();   
 }
 else 
  IIC_Send_Byte(0XA2+((ReadAddr/256)<<1));   //发送器件地址0XA0,写数据   

 IIC_Wait_Ack(); 
     IIC_Send_Byte(ReadAddr%256);   //发送低地址
 IIC_Wait_Ack();     
 IIC_Start();        
 IIC_Send_Byte(0XA3);           //进入接收模式      
 IIC_Wait_Ack();  
    temp=IIC_Read_Byte(0);     
    IIC_Stop();//产生一个停止条件     
 return temp;
}



把 if(EE_TYPE>AT24C16) 里面的那个  IIC_Wait_Ack(); 注释掉试试,我的AT24C32也是读不出来,注释掉就好了
回复 支持 反对

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2019-4-25
在线时间
20 小时
发表于 2019-6-5 21:23:22 | 显示全部楼层
哈哈    我竟然看完了
回复 支持 反对

使用道具 举报

4

主题

59

帖子

0

精华

高级会员

Rank: 4

积分
745
金钱
745
注册时间
2018-12-27
在线时间
82 小时
发表于 2019-6-6 08:49:11 | 显示全部楼层
楼主不知道有没有继续stm32之路
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 10:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表