你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32F103ZE的I2C问题咨询

[复制链接]
xieyahua 提问时间:2014-6-29 14:04 /
 刚接触STM32处理器。在调试STM32F103ZE的I2C时,遇到了问题,请教一下各位高手。
我使用的是的I2C2,初始化程序如下:
void I2C2_Configuration(void)
{
        I2C_InitTypeDef I2C_InitStructure;
        GPIO_InitTypeDef GPIO_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
 
        /* Configure I2C2 pins: SCL-PB10 and SDA-PB11 */
          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);       
 
        NVIC_InitStructure.NVIC_IRQChannel = BSP_INT_ID_I2C2_EV; //中断通道
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =  0;  //强占优先级
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;//次优先级
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //通道中断使能
        NVIC_Init(&NVIC_InitStructure);//初始化中断
 
        NVIC_InitStructure.NVIC_IRQChannel = BSP_INT_ID_I2C2_ER; //中断通道
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =  0;  //强占优先级
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;//次优先级
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //通道中断使能
        NVIC_Init(&NVIC_InitStructure);//初始化中断
 
        I2C_DeInit(I2C2);
 
        I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
        I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
        I2C_InitStructure.I2C_OwnAddress1 = 0x65;
        I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
        I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
        I2C_InitStructure.I2C_ClockSpeed = 100000;
 
        I2C_Cmd(I2C2,ENABLE);//打开模块功能
 
        I2C_Init(I2C2,&I2C_InitStructure);
 
        I2C_ITConfig(I2C2,I2C_IT_BUF | I2C_IT_EVT | I2C_IT_ERR,ENABLE);       
}
    通过示波器观察SCL和SDA的波形,CPU复位后,SCL和SDA都保持高电平,一旦我运行I2C_GenerateSTART(I2C2,ENABLE)后,SDA变成了低电平,并且一直保持低电平,SCL一直为高,但就是不进入I2C事件中断(应当起始条件发送后,SB置,产生中断)。等再次复位CPU后,SCL和SDA又都为高电平。
    运行I2C_GenerateSTART(I2C2,ENABLE)后,各寄存器值如下:
I2C2->CR1=0x0501
I2C2->CR2=0x0724
I2C2->SR1=0x0000
I2C2->SR2=0x0002

   不知道大家有没有遇到跟我类似的问题,请帮忙看一下问题出在哪里。
收藏 评论7 发布时间:2014-6-29 14:04

举报

7个回答
yvonn 回答时间:2014-6-29 22:26:25

RE:关于STM32F103ZE的I2C问题咨询

虽然没有用过F1的芯片,但玩过F4/F0,知道应该和F4的设置差不多,自己感觉,I2C的设置,可以参考官方历程,还是相当有参考价值的。根据I2C的协议,起始信号,就是 SCL和SDA先同为高,然后SDA拉低,产生START 信号。不知道自己再讲什么,因为没有看懂你再讲什么
feel-376797 回答时间:2014-6-30 06:32:11

RE:关于STM32F103ZE的I2C问题咨询

只开启I2C模块没写数据怎么中断.
wangbao619 回答时间:2014-6-30 09:15:27

RE:关于STM32F103ZE的I2C问题咨询

建议参考官方例程,以前写过,就是参考的官方例程。
有缘于你 回答时间:2014-6-30 14:25:13

RE:关于STM32F103ZE的I2C问题咨询

先发送9个时钟试试
aaa999kk 回答时间:2014-6-30 15:43:01

RE:关于STM32F103ZE的I2C问题咨询

类似的教程可以找些参考的东西
feiante-155820 回答时间:2014-6-30 16:20:48

RE:关于STM32F103ZE的I2C问题咨询

参考下官方的例子吧,我的I2C一般是用模拟的
深秋独影 回答时间:2014-6-30 17:39:52

RE:关于STM32F103ZE的I2C问题咨询

不连接从机,看看sda和sck的波形对么,是不是从机拉低了sda

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版