OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4669|回复: 8

HAL iic对M24C02进行读写操作,读写失败

[复制链接]

28

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2018-4-10
在线时间
28 小时
发表于 2021-1-6 10:42:09 | 显示全部楼层 |阅读模式
1金钱
参考HAL库AT24C02例程进行读写操作,IIC采用cubemx默认配置,主要程序如下:
#define ADDR_24LCxx_Write 0xA0
#define ADDR_24LCxx_Read 0xA1
#define IIC_BufferSize 256
uint8_t IIC_WriteBuffer[IIC_BufferSize],IIC_ReadBuffer[IIC_BufferSize];
uint8_t IIC_flag = 0;




                        IIC_WriteBuffer[0] = 0x01;
                        IIC_WriteBuffer[1] = 0x02;
                        IIC_flag = HAL_I2C_Mem_Write(&hi2c1, ADDR_24LCxx_Write, 0, I2C_MEMADD_SIZE_8BIT,IIC_WriteBuffer,8, 1000);
                        if(IIC_flag == HAL_OK)
                        {
                                sprintf(string,"IIC write succeed!\r\n");
                                HAL_UART_Transmit(&huart1,(uint8_t*)string,strlen((char *)string),1000);                       
                        }
                        else
                        {
                                sprintf(string,"IIC write falsed!IIC_flag: %d\r\n",IIC_flag);
                                HAL_UART_Transmit(&huart1,(uint8_t*)string,strlen((char *)string),1000);                               
                        }
                        HAL_Delay(1000);
                       
                        IIC_flag = HAL_I2C_Mem_Read(&hi2c1, ADDR_24LCxx_Read, 0, I2C_MEMADD_SIZE_8BIT,IIC_ReadBuffer,8, 1000);
                        if(IIC_flag == HAL_OK)
                        {
                                sprintf(string,"IIC write succeed!\r\n");
                                HAL_UART_Transmit(&huart1,(uint8_t*)string,strlen((char *)string),1000);                       
                        }
                        else
                        {
                                sprintf(string,"IIC write falsed!IIC_flag: %d\r\n",IIC_flag);
                                HAL_UART_Transmit(&huart1,(uint8_t*)string,strlen((char *)string),1000);                               
                        }       


程序返回值为1;读写均失败;断电调试,程序进入 HAL_I2C_Mem_Write中的下部分被中断执行
   /* Send Slave Address and Memory Address */
if (I2C_RequestMemoryWrite(hi2c, DevAddress, MemAddress, MemAddSize, Timeout, tickstart) != HAL_OK)
    {
      if (hi2c->ErrorCode == HAL_I2C_ERROR_AF)
      {
        /* Process Unlocked */
        __HAL_UNLOCK(hi2c);
        return HAL_ERROR;
      }
      else
      {
        /* Process Unlocked */
        __HAL_UNLOCK(hi2c);
        return HAL_TIMEOUT;
      }
    }
请大家指教

最佳答案

查看完整内容[请看2#楼]

刚发现了一个惊天大秘密;SCL\SDA引脚接反了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

28

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2018-4-10
在线时间
28 小时
 楼主| 发表于 2021-1-6 10:42:10 | 显示全部楼层
刚发现了一个惊天大秘密;SCL\SDA引脚接反了
回复

使用道具 举报

28

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2018-4-10
在线时间
28 小时
 楼主| 发表于 2021-1-6 10:45:16 | 显示全部楼层
1.png 贴一个原理图
回复

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3874
金钱
3874
注册时间
2017-3-7
在线时间
1690 小时
发表于 2021-1-6 11:38:22 | 显示全部楼层
示波器,逻辑分析仪抓下实际数据
回复

使用道具 举报

5

主题

34

帖子

0

精华

初级会员

Rank: 2

积分
92
金钱
92
注册时间
2020-11-24
在线时间
33 小时
发表于 2021-1-6 15:01:23 | 显示全部楼层
建议放弃HAL库中的IIC读写,采用模拟IIC实现吧。

这是ST的bug,深坑呀,我搞了好几天最后还是放弃了,带病的东西即使搞出来都不放心使用,所幸IIC时序非常简单,IO模拟没有任何问题
回复

使用道具 举报

28

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2018-4-10
在线时间
28 小时
 楼主| 发表于 2021-1-6 15:52:05 | 显示全部楼层
BurgLi 发表于 2021-1-6 15:01
建议放弃HAL库中的IIC读写,采用模拟IIC实现吧。

这是ST的bug,深坑呀,我搞了好几天最后还是放弃了,带 ...

真的假的啊;我看网上好多例成都可以呢;不应该吧;我再ST论坛问问
回复

使用道具 举报

28

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2018-4-10
在线时间
28 小时
 楼主| 发表于 2021-1-6 15:53:13 | 显示全部楼层
a5820736 发表于 2021-1-6 11:38
示波器,逻辑分析仪抓下实际数据

手头没有工具;以前用普通库、模拟用过好多次了;没想到会出这问题
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165508
金钱
165508
注册时间
2010-12-1
在线时间
2115 小时
发表于 2021-1-7 01:33:01 | 显示全部楼层
jasonyu 发表于 2021-1-6 15:59
刚发现了一个惊天大秘密;SCL\SDA引脚接反了

改过来以后,OK了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

28

主题

91

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
214
金钱
214
注册时间
2018-4-10
在线时间
28 小时
 楼主| 发表于 2021-1-7 09:03:38 | 显示全部楼层
正点原子 发表于 2021-1-7 01:33
改过来以后,OK了么?

Ok了
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-15 05:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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