OpenEdv-开源电子网

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

为什么我用原子哥的IIC例程测试AT24C02读写不成功?

[复制链接]

44

主题

225

帖子

0

精华

高级会员

Rank: 4

积分
660
金钱
660
注册时间
2013-11-22
在线时间
131 小时
发表于 2014-1-14 11:49:37 | 显示全部楼层 |阅读模式

我用的STM32F103ZET6,其中IIC_SCL接PG0,IIC_SDA接PG1
宏定义部分为:
//SCL--PG0,SDA-->G1                    
//IO方向设置
#define SDA_IN()  {GPIOG->CRL&=0XFFFFFF0F;GPIOG->CRL|=0XFFFFFF8F;}
#define SDA_OUT() {GPIOG->CRL&=0XFFFFFF0F;GPIOG->CRL|=0XFFFFFF3F;}

//IO操作函数 
#define IIC_SCL    PGout(0) //SCL
#define IIC_SDA    PGout(1) //SDA 
#define READ_SDA   PGin(1)  //输入SDA

初始化部分为:
//初始化IIC
void IIC_Init(void)
{         
  RCC->APB2ENR|=1<<8;//先使能外设IO PORTG时钟        
 GPIOG->CRL&=0XFFFFFF00;//PG0/PG1 推挽输出
 GPIOG->CRL|=0X00000033;   
 GPIOG->ODR|=3;     //PG0/PG1  输出高
}

然后我测试的部分为:
u8 Test_WCode[6]={0x31,0x32,0x33,0x34,0x35,'\0'};
u8 Test_RCode[6]; 
AT24CXX_Write(100,Test_WCode,6);//写入6个字节
AT24CXX_Read(100,Test_RCode,6);//读出6个字节

我将写入的数组发送到串口显示
为:31 32 33 34 35 00
我将
读出的数组发送到串口显示
为:FF  FF FF FF FF FF

为什么都是0XFF?

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

120

主题

7878

帖子

13

精华

资深版主

Rank: 8Rank: 8

积分
12012
金钱
12012
注册时间
2013-9-10
在线时间
427 小时
发表于 2014-1-14 13:38:38 | 显示全部楼层
回复【楼主位】zhp:
---------------------------------
你用的什么板子?自己做的还是其他的开发板?
现在,程序把烂铜烂铁变得智能化了,人呢,一旦离开了这烂铜烂铁就不知道干啥了
回复 支持 反对

使用道具 举报

44

主题

225

帖子

0

精华

高级会员

Rank: 4

积分
660
金钱
660
注册时间
2013-11-22
在线时间
131 小时
 楼主| 发表于 2014-1-14 14:10:39 | 显示全部楼层
别人做的,我引两个IO口,VCC(3.3V)和GND,外搭的AT24C02在面包板上面测试的,我写程序控制SCL和SDA高低电平都可以(实测),不知道为什么用原子哥的测试程序想来测试下,结果读回的都是FF
回复 支持 反对

使用道具 举报

44

主题

225

帖子

0

精华

高级会员

Rank: 4

积分
660
金钱
660
注册时间
2013-11-22
在线时间
131 小时
 楼主| 发表于 2014-1-14 14:15:40 | 显示全部楼层
回复【2楼】Badu_Space:
回复【楼主位】zhp: --------------------------------- 你用的什么板子?自己做的还是其他的开发板?
---------------------------------
原子哥的IIC测试AT24C02没有问题啊,我之前在买的战舰开发板上面测试读写都很正常,我只不过将它的SCL,SDA换成另外两个脚测试。。。我刚买的两块AT24C02都是新的,结果都一样
回复 支持 反对

使用道具 举报

44

主题

225

帖子

0

精华

高级会员

Rank: 4

积分
660
金钱
660
注册时间
2013-11-22
在线时间
131 小时
 楼主| 发表于 2014-1-14 17:08:24 | 显示全部楼层
求指导啊
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-1-14 22:49:28 | 显示全部楼层
GPIOG->CRL|=0XFFFFFF8F;
GPIOG->CRL|=0XFFFFFF3F;
这两句有问题
改为:
GPIOG->CRL|=0X00000080;
GPIOG->CRL|=0X00000030;
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

44

主题

225

帖子

0

精华

高级会员

Rank: 4

积分
660
金钱
660
注册时间
2013-11-22
在线时间
131 小时
 楼主| 发表于 2014-1-15 09:30:52 | 显示全部楼层
谢谢原子哥,昨天晚上我再把你的代码仔细看了下,的确是这两句的问题,
无意把其它位置成了1,觉得无所谓,修改了之后,一切运行正常!非常感谢!
只是心中还有个小小的疑惑,我无意将其它位全部置1,那其它的PG2~PG7就
变成了“复用功能开漏输出模式”,这样也会导致PG0和PG1的通用输出(或输入)
模式变得异常!这是为什么?
回复 支持 反对

使用道具 举报

44

主题

225

帖子

0

精华

高级会员

Rank: 4

积分
660
金钱
660
注册时间
2013-11-22
在线时间
131 小时
 楼主| 发表于 2014-1-15 09:32:43 | 显示全部楼层
回复【6楼】正点原子:
GPIOG->CRL|=0XFFFFFF8F; GPIOG->CRL|=0XFFFFFF3F; 这两句有问题 改为: GPIOG->CRL|=0X00000080; GPIOG->CRL|=0X00000030;
---------------------------------
谢谢原子哥,昨天晚上我再把你的代码仔细看了下,的确是这两句的问题,
无意把其它位置成了1,觉得无所谓,修改了之后,一切运行正常!非常感谢!
只是心中还有个小小的疑惑,我无意将其它位全部置1,那其它的PG2~PG7就
变成了“复用功能开漏输出模式”,这样也会导致PG0和PG1的通用输出(或输入)
模式变得异常!这是为什么?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-1-18 23:21:38 | 显示全部楼层
回复【8楼】zhp:
---------------------------------
你得看最终的值,是什么
才好确定。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-6 10:11

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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