OpenEdv-开源电子网

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

我用原子的IIC例程,更改了SDA和CLK两个引脚,就无法读写AT24C16了

[复制链接]

14

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2017-10-24
在线时间
22 小时
发表于 2018-7-4 19:11:28 | 显示全部楼层 |阅读模式
10金钱
我用原子的IIC例程,更改了SDA和CLK两个引脚,就无法读写AT24C16了,求高手指点!!!
自顶!!!
更改代码如下:

这是没改之前的

//IO·½ÏòéèÖÃ
#define SDA_IN()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}
#define SDA_OUT() {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}

//IO2ù×÷oˉêy         
#define IIC_SCL    PBout(6)                 //SCL
#define IIC_SDA    PBout(7)                 //SDA         
#define READ_SDA   PBin(7)                          //ê&#228;è&#235;SDA


void IIC_Init(void)
{

        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOB, ENABLE );        //ê1&#196;üGPIOBê±&#214;ó
          
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //í&#198;íìê&#228;3&#246;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        GPIO_SetBits(GPIOB,GPIO_Pin_6|GPIO_Pin_7);         //PB6,PB7 ê&#228;3&#246;&#184;&#223;

}


这是改了之后的
//IO·&#189;&#207;òéè&#214;&#195;

#define SDA_IN()  {GPIOB->CRL&=0XFFFFFF0F;GPIOB->CRL|=(u32)8<<4;}
#define SDA_OUT() {GPIOB->CRL&=0XFFFFFF0F;GPIOB->CRL|=(u32)3<<4;}

//IO2ù×÷oˉêy         
#define IIC_SCL    PBout(0) //SCL
#define IIC_SDA    PBout(1) //SDA         
#define READ_SDA   PBin(1)  //ê&#228;è&#235;SDA



void IIC_Init(void)
{                                             
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOB, ENABLE );        //ê1&#196;üGPIOBê±&#214;ó
          
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //í&#198;íìê&#228;3&#246;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);
        GPIO_SetBits(GPIOB,GPIO_Pin_0|GPIO_Pin_1);         //PB6,PB7 ê&#228;3&#246;&#184;&#223;
}

最佳答案

查看完整内容[请看2#楼]

24系列通用驱动: https://blog.csdn.net/qq_20553613/article/details/82733817
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

685

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3448
金钱
3448
注册时间
2017-7-4
在线时间
869 小时
发表于 2018-7-4 19:11:29 | 显示全部楼层
回复

使用道具 举报

14

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2017-10-24
在线时间
22 小时
 楼主| 发表于 2018-7-4 19:12:16 | 显示全部楼层
自顶
回复

使用道具 举报

14

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2017-10-24
在线时间
22 小时
 楼主| 发表于 2018-7-4 19:19:42 | 显示全部楼层
自顶,求大神帮忙看一下,我哪里没有配好,我就是更改了两个IO口就无法读取AT24C16的数据了,求各位大神帮忙看一下,小弟在此不胜感激
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2018-7-4 19:24:50 | 显示全部楼层
检查你更改后的这两个脚有没有接上啦电阻
回复

使用道具 举报

14

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2017-10-24
在线时间
22 小时
 楼主| 发表于 2018-7-4 19:30:26 | 显示全部楼层
zuozhongkai 发表于 2018-7-4 19:24
检查你更改后的这两个脚有没有接上啦电阻

我没接,我是用一个外接的AT24C16,直接接到对应的精英开发板IO口上去的,之前连到PB6、PB7,可以改成PB0、PB1之后就无法读取了
回复

使用道具 举报

14

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2017-10-24
在线时间
22 小时
 楼主| 发表于 2018-7-4 19:31:58 | 显示全部楼层
zuozhongkai 发表于 2018-7-4 19:24
检查你更改后的这两个脚有没有接上啦电阻

这跟接不接上拉没关系吧,原子配置的时候,输出用到推挽,输入用的时候也上拉了
回复

使用道具 举报

14

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
143
金钱
143
注册时间
2017-10-24
在线时间
22 小时
 楼主| 发表于 2018-7-4 19:35:21 | 显示全部楼层
zuozhongkai 发表于 2018-7-4 19:24
检查你更改后的这两个脚有没有接上啦电阻

原子的电路板上接了上拉,我好像是换了IO,没有接上拉电阻,我接两个上拉电阻,再试试
回复

使用道具 举报

10

主题

80

帖子

0

精华

高级会员

Rank: 4

积分
514
金钱
514
注册时间
2017-5-21
在线时间
82 小时
发表于 2018-7-13 21:18:07 | 显示全部楼层
改了端口的话,记得SDA这个脚,在at24cxx.h当中有两句代码是操控SDA管脚输入输出模式的切换的,用的是寄存器操作,所以你改了管脚,那个模式切换那边的也得改。

下面这两行要改

#define At24cxxSdaModeIn()   {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}
#define At24cxxSdaModeOut()  {GPIOB->CRL&=0X0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2018-1-20
在线时间
1 小时
发表于 2018-9-17 08:44:45 | 显示全部楼层
我最近也是卡在24C16的读写这个地方了,搞了好久也没有搞正常,求指导啊
回复

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2018-5-1
在线时间
28 小时
发表于 2018-11-10 19:54:54 | 显示全部楼层
Anyint 发表于 2018-7-13 21:18
改了端口的话,记得SDA这个脚,在at24cxx.h当中有两句代码是操控SDA管脚输入输出模式的切换的,用的是寄存 ...

这两行怎么改?

回复

使用道具 举报

19

主题

169

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
金钱
409
注册时间
2018-4-21
在线时间
107 小时
发表于 2018-11-10 20:22:23 | 显示全部楼层
你把模式改成上拉试试?感觉是上拉问题
回复

使用道具 举报

33

主题

1628

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
6679
金钱
6679
注册时间
2015-8-25
在线时间
1036 小时
发表于 2018-11-10 22:06:29 | 显示全部楼层
上拉是需要的,接上拉试试
He who fights with monsters should look to it that he himself does not become a monster, when you gaze long into the abyss, the abyss also gazes into you.
过于执着就会陷入其中,迷失自己,困住自己。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-21 21:10

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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