完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
这次试用I2C读写外部EEP,采用AT24C,但是调试已进入循环,已哭晕在厕所。请高人指点一下。采用CUBE,生成初始化代码; void MX_I2C2_Init(void) { hi2c2.Instance = I2C2; hi2c2.Init.ClockSpeed = 10000; hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c2.Init.OwnAddress1 = 0; hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c2.Init.OwnAddress2 = 0; hi2c2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; HAL_I2C_Init(&hi2c2); } void HAL_I2C_MspInit(I2C_HandleTypeDef* hi2c) { GPIO_InitTypeDef GPIO_InitStruct; if(hi2c->Instance==I2C2) { /* USER CODE BEGIN I2C2_MspInit 0 */ /* USER CODE END I2C2_MspInit 0 */ /**I2C2 GPIO Configuration PB10 ------> I2C2_SCL PB11 ------> I2C2_SDA */ GPIO_InitStruct.Pin = GPIO_PIN_10|GPIO_PIN_11; GPIO_InitStruct.Mode = GPIO_MODE_AF_OD; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); /* Peripheral clock enable */ __HAL_RCC_I2C2_CLK_ENABLE(); /* USER CODE BEGIN I2C2_MspInit 1 */ /* USER CODE END I2C2_MspInit 1 */ } } 采用前辈给的测试方式(看图片); http://www.stmcu.org/module/foru ... xtra=page%3D&page=1 但是初始化之后,busy位一直都是高(看图片),进入前辈写的测试函数后 void TestIIC(void) { unsigned int i=0,tmp12; uint8_t IIC_DAT[100]={'1','2'}; uint8_t err='1'; tmp12= HAL_I2C_IsDeviceReady(&hi2c2,0xa4,3000,1000); //检查器件准备好 for(i=0;i<100;i++) EEPROM_WriteByte(i,'e'); for(i=0;i<100;i++) { IIC_DAT=EEPROM_ReadByte(i); if(IIC_DAT!='e') err++; } while( HAL_BUSY == HAL_UART_Transmit(&huart2,&err,1,1)){}; while( HAL_BUSY == HAL_UART_Transmit(&huart2,IIC_DAT,100,1)){}; while(1); } 之后一直进入HAL_I2C_IsDeviceReady(&hi2c2,0xa4,3000,1000); //检查器件准备 /* Wait until BUSY flag is reset */ I2C_WaitOnFlagUntilTimeout() 中的I2C_WaitOnFlagUntilTimeout()函数,等待busy位变低。但是外部引脚通过示波器测试都处于拉高状态,理应不应当处于BUSY状态。但就跳不出等待查询BUSY位函数,一直超时等待。 连读写程序都无法进入。 还请搞过这个东西的前辈指点迷津啊。 |
|
相关推荐
5个回答
|
|
|
顶一下,我在F205上用HAL库的IIC读写EEPROM就没问题,同样的方法在F103上就是不行,不知道为啥,也没去研究
|
|
|
|
|
|
谢谢。 |
|
|
|
|
|
|
|
|
|
|
|
请问楼主问题解决了没有?我这里也出现这样的问题,不同批次的EEPROM,前一个批次可以,后一个检测这么都过不去
|
|
|
|
|
|
这个问题解决了么
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2810 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2420 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2288 浏览 0 评论
2404 浏览 1 评论
1643 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 13:19 , Processed in 0.874499 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
4126