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

关于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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版