OpenEdv-开源电子网

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

原子的IIC程序不能正确读写24C256的解决方法,大家试试。

[复制链接]

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
发表于 2015-6-26 17:40:32 | 显示全部楼层 |阅读模式
打了几块板,电路参考了原子的407开发板,前面2块板使用铁电FM24C256,用原子的最新IIC例程读写一切正常,后面板子换了ATMEL的AT24C256C,无法正常读写,以为片子焊坏了,重新换了一片还是不行,手边有些直插的片子,焊了个简单测试板连到板子其他管教测试,24C02的读写正常,ATMEL的AT24C16换了几片都不正常,用示波器看波形也没发现有什么问题,片子绝对是正品。把论坛的相关帖子看了个遍也没解决问题,看其他开发板例程时发现SDA、SCL管脚设成开漏输出模式,原子的例程是设置成推挽输出模式,更改后还是不行。偶然将SCL设成推挽输出模式,SDA设成开漏输出模式后读写正常,换AT24C256也正常了,大家试试看。
在myiic.c中进行如下设置,其他的根据片子型号自己改。
  //GPIOB8,B9初始化设置
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;  //SCL
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//上拉
  GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化
    
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;  //SDA
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;//推挽输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;//上拉
  GPIO_Init(GPIOB, &GPIO_InitStructure);//初始化 
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2016-7-30
在线时间
76 小时
发表于 2017-3-8 10:58:30 | 显示全部楼层
组成开漏形式的电路有以下几个特点:1. 利用 外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经R pull-up ,MOSFET到GND。IC内部仅需很下的栅极驱动电流。如图1。2. 可以将多个开漏输出的Pin,连接到一条线上。形成 “与逻辑” 关系。如图1,当PIN_A、PIN_B、PIN_C任意一个变低后,开漏线上的逻辑就为0了。这也是I2C,SMBus等总线判断总线占用状态的原理。
回复 支持 1 反对 0

使用道具 举报

4

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
197
金钱
197
注册时间
2016-7-30
在线时间
76 小时
发表于 2017-3-8 11:00:03 | 显示全部楼层
at24C256可能是内部驱动能力比较弱,所以数据脚需要设置成开漏模式。经过测试。谢谢楼主。标记一下,方便大家
回复 支持 1 反对 0

使用道具 举报

8

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2014-2-16
在线时间
0 小时
发表于 2015-6-26 18:03:06 | 显示全部楼层
顶,刚刚试过。能过
回复 支持 反对

使用道具 举报

0

主题

91

帖子

0

精华

初级会员

Rank: 2

积分
135
金钱
135
注册时间
2013-8-25
在线时间
12 小时
发表于 2015-6-26 18:31:29 | 显示全部楼层
顶,这是为什么呢
————————
回复 支持 反对

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
 楼主| 发表于 2015-6-26 21:04:28 | 显示全部楼层
可能跟存储片子内部电路结构有关,猜测。
回复 支持 反对

使用道具 举报

58

主题

6293

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11473
金钱
11473
注册时间
2014-4-1
在线时间
1297 小时
发表于 2015-6-26 23:23:02 | 显示全部楼层
器件地址里三个 bit 位,注意了吗?容量不同,处理方法有区别。

另外,写操作可能需要比较长的延时。
回复 支持 反对

使用道具 举报

14

主题

191

帖子

0

精华

QQ游客

积分
813
金钱
813
注册时间
2013-6-9
在线时间
181 小时
 楼主| 发表于 2015-6-27 02:26:01 | 显示全部楼层
回复【5楼】xuande:
---------------------------------
程序和硬件完全按照原子的,写到地址2还是不行,写延时20毫秒,可用FM24C256却没有任何问题,没搞明白原因。
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2012-5-1
在线时间
0 小时
发表于 2015-12-22 10:21:39 | 显示全部楼层
各位 谁有原子哥最新的IIC 读写FM24CXX的驱动呀?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2016-8-2
在线时间
0 小时
发表于 2016-8-2 21:20:41 | 显示全部楼层
神贴呀!终于解决我的问题!!!
回复 支持 反对

使用道具 举报

1

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
347
金钱
347
注册时间
2015-4-7
在线时间
94 小时
发表于 2016-9-12 17:07:33 | 显示全部楼层
哥们   谢谢    恩人那
回复 支持 反对

使用道具 举报

1

主题

9

帖子

0

精华

初级会员

Rank: 2

积分
100
金钱
100
注册时间
2015-4-4
在线时间
22 小时
发表于 2016-9-18 20:30:38 | 显示全部楼层
真乃神贴也
回复 支持 反对

使用道具 举报

92

主题

202

帖子

0

精华

高级会员

Rank: 4

积分
632
金钱
632
注册时间
2014-3-14
在线时间
94 小时
发表于 2016-10-15 09:22:02 | 显示全部楼层
mark一下
回复 支持 反对

使用道具 举报

5

主题

76

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2016-5-25
在线时间
86 小时
发表于 2016-10-20 14:30:57 | 显示全部楼层
用你的方法测试我的AT24C08还是没解决读写正常问题 不懂问题出在哪里 排查了快2天了 蓝瘦香菇~~
笑着熬下去@_@
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-6-21
在线时间
2 小时
发表于 2017-6-21 16:44:23 | 显示全部楼层
顶,刚刚试过。能过
回复 支持 反对

使用道具 举报

11

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
141
金钱
141
注册时间
2016-8-10
在线时间
29 小时
发表于 2017-11-29 16:58:28 | 显示全部楼层
为什么被删掉啊?
回复 支持 反对

使用道具 举报

0

主题

34

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
233
金钱
233
注册时间
2012-9-14
在线时间
61 小时
发表于 2019-2-2 11:23:19 | 显示全部楼层
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2017-4-24
在线时间
16 小时
发表于 2019-9-4 21:14:17 | 显示全部楼层
怎样看到内容,
回复 支持 反对

使用道具 举报

1

主题

42

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-4-24
在线时间
53 小时
发表于 2019-9-28 16:51:21 | 显示全部楼层
?                              
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
20
金钱
20
注册时间
2020-3-8
在线时间
5 小时
发表于 2020-5-15 09:17:11 | 显示全部楼层
兄弟,我用的是512C,这问题卡了我2天了,没你这帖子我都要换其他存储芯片了,多谢,NB!!!
回复 支持 反对

使用道具 举报

17

主题

53

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
264
金钱
264
注册时间
2019-3-26
在线时间
105 小时
发表于 2020-9-8 14:44:15 | 显示全部楼层
刚刚遇到可读不可写的问题,用楼主的方法解决了!!!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2020-10-27
在线时间
8 小时
发表于 2020-10-27 12:05:22 | 显示全部楼层
感谢楼主,问题完美解决
回复 支持 反对

使用道具 举报

11

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2015-6-27
在线时间
63 小时
发表于 2021-11-13 17:24:59 | 显示全部楼层
把你的程序移植过来还是不行  我用24C128就可以
回复 支持 反对

使用道具 举报

11

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2015-6-27
在线时间
63 小时
发表于 2021-11-13 17:26:49 | 显示全部楼层
范程浩 发表于 2015-6-26 18:03
顶,刚刚试过。能过

不行呀
回复 支持 反对

使用道具 举报

11

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2015-6-27
在线时间
63 小时
发表于 2021-11-13 17:44:42 | 显示全部楼层
说是IO配置问题我试了还是不行,我拿个电阻对地触发一下就写ok了,断电在读也可以 ,但换个地址在写就不行了
回复 支持 反对

使用道具 举报

11

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2015-6-27
在线时间
63 小时
发表于 2021-11-13 20:52:11 | 显示全部楼层
有例程吗
回复 支持 反对

使用道具 举报

11

主题

63

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
311
金钱
311
注册时间
2015-6-27
在线时间
63 小时
发表于 2021-11-13 21:22:57 | 显示全部楼层
寄存器版的可以自接用
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2020-7-29
在线时间
7 小时
发表于 2022-1-25 09:51:30 | 显示全部楼层
我用的是stm32C8 芯片需要将SDA SCL 都配置成开漏才行 GPIO_Mode_Out_OD
回复 支持 反对

使用道具 举报

1

主题

13

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2015-10-23
在线时间
55 小时
发表于 2022-10-14 22:45:28 | 显示全部楼层

GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_InitStructure.GPIO_OType = GPIO_OType_OD;

搞定!SDA脚设置成这样子立马OK!我也是AT24C256
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-25 01:57

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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