OpenEdv-开源电子网

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

模拟IIC引脚变更失败的问题

[复制链接]

11

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
1045
注册时间
2017-11-3
在线时间
716 小时
发表于 2018-3-19 16:41:46 | 显示全部楼层 |阅读模式
10金钱
本人近日在学习103平台的IIC有关部分,硬件是原子的MiNi开发板。欲将24C02的驱动引脚从例程默认的C12、C11改为PB10、PB11引脚。在结合自己的理解修改有关驱动代码后进行验证,但无法检测到24C02。外接的24C02没有问题(已将板载的24C02移除,独立的24C02模块在不修改程序的情况下通过杜邦线连接到默认引脚时也完全可以正常操作);

这个帖子,症状一致已经反复认真读过,也依照里面的细节做了检查但无果。故前来寻求帮助,还请懂得小伙伴们给一些指导。自己修改过的部分如下:


myiic.h部分:
//IO方向设置
#define SDA_IN()  {GPIOB->CRH&=0XFFFFF0FF;GPIOB->CRH|=8<<8;}
#define SDA_OUT() {GPIOB->CRH&=0XFFFFF0FF;GPIOB->CRH|=3<<8;}


//IO操作函数
#define IIC_SCL    PBout(11) //SCL
#define IIC_SDA    PBout(10) //SDA         
#define READ_SDA   PBin(10)  //输入SDA



myiic.c部分:
//初始化IIC
void IIC_Init(void)
{                                             
        GPIO_InitTypeDef GPIO_InitStructure;
        //RCC->APB2ENR|=1<<4;//先使能外设IO PORTC时钟
        RCC_APB2PeriphClockCmd(        RCC_APB2Periph_GPIOB, ENABLE );       
          
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ;   //推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);

        IIC_SCL=1;
        IIC_SDA=1;

}



改动后的工程见附件,还请各位高人赐教

ALIENTEK MINISTM32 实验19 IIC实验.rar (2.53 MB, 下载次数: 48)

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

使用道具 举报

11

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
1045
注册时间
2017-11-3
在线时间
716 小时
 楼主| 发表于 2018-3-19 16:42:57 | 显示全部楼层
文中提到的帖子是这篇
回复

使用道具 举报

11

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
1045
注册时间
2017-11-3
在线时间
716 小时
 楼主| 发表于 2018-3-19 16:43:10 | 显示全部楼层
回复

使用道具 举报

13

主题

116

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
金钱
372
注册时间
2018-1-22
在线时间
118 小时
发表于 2018-3-19 20:11:04 | 显示全部楼层
你看下这两个IO口跟LCD初始化有没有冲突
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-3-20 01:51:13 | 显示全部楼层
LCD也用到了PB10,PB11,如果你先初始化IIC,再初始化LCD,那就可能用不了了。
回复

使用道具 举报

11

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
1045
注册时间
2017-11-3
在线时间
716 小时
 楼主| 发表于 2018-3-20 09:33:52 | 显示全部楼层
正点原子 发表于 2018-3-20 01:51
LCD也用到了PB10,PB11,如果你先初始化IIC,再初始化LCD,那就可能用不了了。

好的,谢谢原子哥提醒,我先按照这个思路排错。后续会给出反馈
回复

使用道具 举报

11

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
1045
注册时间
2017-11-3
在线时间
716 小时
 楼主| 发表于 2018-3-20 09:34:34 | 显示全部楼层
lvb 发表于 2018-3-19 20:11
你看下这两个IO口跟LCD初始化有没有冲突

好的没问题,我先按照这个思路排错。谢谢提醒
回复

使用道具 举报

11

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
1045
注册时间
2017-11-3
在线时间
716 小时
 楼主| 发表于 2018-3-20 09:53:14 | 显示全部楼层
正点原子 发表于 2018-3-20 01:51
LCD也用到了PB10,PB11,如果你先初始化IIC,再初始化LCD,那就可能用不了了。

还是不行,这次是选用的串口通讯的模板。检查过对PB10和PB11均没有使用,在此基础上搬运myiic和AT24Cxx编译运行通过。测试效果正常。之后还是依照之前的方式修改引脚配置,用杜邦线连接到新引脚之后就无法检测到24C02了
回复

使用道具 举报

11

主题

66

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1045
金钱
1045
注册时间
2017-11-3
在线时间
716 小时
 楼主| 发表于 2018-3-20 09:53:28 | 显示全部楼层
lvb 发表于 2018-3-19 20:11
你看下这两个IO口跟LCD初始化有没有冲突

还是不行,这次是选用的串口通讯的模板。检查过对PB10和PB11均没有使用,在此基础上搬运myiic和AT24Cxx编译运行通过。测试效果正常。之后还是依照之前的方式修改引脚配置,用杜邦线连接到新引脚之后就无法检测到24C02了

回复

使用道具 举报

0

主题

1

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2018-3-28
在线时间
7 小时
发表于 2018-3-28 12:07:56 | 显示全部楼层
//IO方向设置
#define SDA_IN()  {GPIOB->CRH&=0XFFFFF0FF;GPIOB->CRH|=8<<8;}
#define SDA_OUT() {GPIOB->CRH&=0XFFFFF0FF;GPIOB->CRH|=3<<8;}

SDA引脚引脚应该是PB11脚
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-9 04:39

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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