完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
刚接触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 不知道大家有没有遇到跟我类似的问题,请帮忙看一下问题出在哪里。 |
|
相关推荐
8个回答
|
|
虽然没有用过F1的芯片,但玩过F4/F0,知道应该和F4的设置差不多,自己感觉,I2C的设置,可以参考官方历程,还是相当有参考价值的。根据I2C的协议,起始信号,就是 SCL和SDA先同为高,然后SDA拉低,产生START 信号。不知道自己再讲什么,因为没有看懂你再讲什么
|
|
|
|
只开启I2C模块没写数据怎么中断.
|
|
|
|
建议参考官方例程,以前写过,就是参考的官方例程。
|
|
|
|
先发送9个时钟试试
|
|
|
|
类似的教程可以找些参考的东西
|
|
|
|
参考下官方的例子吧,我的I2C一般是用模拟的
|
|
|
|
不连接从机,看看sda和sck的波形对么,是不是从机拉低了sda
|
|
|
|
不错,很好的经验分享,辛苦麻烦了,欠缺这方面的资料,非常感谢。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
OV7670摄像头使用串口发送数据到另一个板子上的lcd,出现花屏
1372 浏览 1 评论
689 浏览 0 评论
666 浏览 0 评论
STM32CUBEMX(12)--IIC,12864OLED(0.96寸)移植
708 浏览 0 评论
STM32CUBEMX(5)--自定义红外NEC解码,定时器TIM捕获方式
640 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-9-28 04:21 , Processed in 0.596851 second(s), Total 57, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号