野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 17967|回复: 7

IIC2怎么配置啊,或是B8 B9怎么复用为IIc1啊

[复制链接]
发表于 2013-9-28 17:42:31 | 显示全部楼层 |阅读模式
本帖最后由 yuぃ莮陔 于 2013-9-28 17:45 编辑

void I2C_Configuration(void)
{
  GPIO_InitTypeDef  GPIO_InitStructure;

I2C_InitTypeDef  I2C_InitStructure;
/* 使能与 I2C1 有关的时钟 */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2,ENABLE);  
   
  /* PB6-I2C1_SCL、PB7-I2C1_SDA*/
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_10 | GPIO_Pin_11;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;        // 开漏输出
  GPIO_Init(GPIOB, &GPIO_InitStructure);

  /* I2C 配置 */
  I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
  I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
  I2C_InitStructure.I2C_OwnAddress1 =0x0A;
  I2C_InitStructure.I2C_Ack = I2C_Ack_Enable ;
  I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
  I2C_InitStructure.I2C_ClockSpeed = 400000;
  
  /* 使能 I2C1 */
  I2C_Cmd(I2C2, ENABLE);
  /* I2C1 初始化 */
  I2C_Init(I2C2, &I2C_InitStructure);
}

这样配置IIc2为什么过不了check~~~~~~~~~
回复

使用道具 举报

发表于 2013-9-28 18:14:39 | 显示全部楼层
看不出你这个配置有什么错误,感觉你的IIC2配置是正确了,野火板子的PB10和PB11外部没有接上拉电阻,如果你外部没有接好,这是肯定不行的。如果是你自己的板子,也请先检查一下IIC总线的硬件是否设置正确了。如果你想使用复用引脚IIC1的PB8、PB9。需要调用GPIO_PinRemapConfig (GPIO_Remap_I2C1); 对引脚进行重映射~
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-28 18:25:27 | 显示全部楼层
flyleaf 发表于 2013-9-28 18:14
看不出你这个配置有什么错误,感觉你的IIC2配置是正确了,野火板子的PB10和PB11外部没有接上拉电阻,如果你 ...

好的,我去试试,谢谢了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-28 18:35:20 | 显示全部楼层
flyleaf 发表于 2013-9-28 18:14
看不出你这个配置有什么错误,感觉你的IIC2配置是正确了,野火板子的PB10和PB11外部没有接上拉电阻,如果你 ...

GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);

这个重映射对不?我之前这么写过,但是也没check成功
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-28 18:39:46 | 显示全部楼层
flyleaf 发表于 2013-9-28 18:14
看不出你这个配置有什么错误,感觉你的IIC2配置是正确了,野火板子的PB10和PB11外部没有接上拉电阻,如果你 ...

现在就很奇葩啊,我的IIC1都可以check成功,改成IIC2就不行了,IIc1和IIc2还有不同地方吗?我的板子外部都没有上啦电阻啊,1/2都没有。。。因为液晶里面配置fsmc用到了B6  B7,我就想改一下IIc的引脚
回复 支持 反对

使用道具 举报

发表于 2013-9-28 18:43:01 | 显示全部楼层
yuぃ莮陔 发表于 2013-9-28 18:35
GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);

这个重映射对不?我之前这么写过,但是也没check成功 ...

是这样写,重映射的那两个脚按IIC的要求配置模式,还要使能AFIO时钟,再调用GPIO_PinRemapConfig(GPIO_Remap_I2C1, ENABLE);

回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-28 18:43:19 | 显示全部楼层
flyleaf 发表于 2013-9-28 18:14
看不出你这个配置有什么错误,感觉你的IIC2配置是正确了,野火板子的PB10和PB11外部没有接上拉电阻,如果你 ...

重映射成功了,谢谢啦真棒!!非常感谢
回复 支持 反对

使用道具 举报

发表于 2013-9-28 18:46:16 | 显示全部楼层
yuぃ莮陔 发表于 2013-9-28 18:39
现在就很奇葩啊,我的IIC1都可以check成功,改成IIC2就不行了,IIc1和IIc2还有不同地方吗?我的板子外部都 ...

整个总线没有上拉也正常真的有点奇葩,如果说IIC2和IIC1的区别就是还要注意一下你芯片的型号啦,有的芯片只有IIC1,没有IIC2,你的STM32是什么型号?  或者你可以查一下选型手册看看,只有一个IIC的就不能用IIC2了
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-5-23 14:49 , Processed in 0.030596 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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