野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 970|回复: 4

EEPROM写入无效问题

[复制链接]
发表于 2024-2-4 18:00:25 | 显示全部楼层 |阅读模式
野火MINI板子上用软件模拟协议读写EEPROM,发现写入单个字节时无效,读取该地址上的数据还是EEPROM里面原来的值。

我找了半天没发现问题,麻烦哪位大神看一下

STM32F103RCT6_I2C.zip

293.28 KB, 下载次数: 5

回复

使用道具 举报

 楼主| 发表于 2024-2-4 20:29:27 | 显示全部楼层
串口调试助手的显示如下图
野火论坛202402042028561435..png
回复 支持 反对

使用道具 举报

发表于 2024-2-4 20:30:53 | 显示全部楼层
先用例程测试过能正常吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-4 21:12:19 | 显示全部楼层
例程正常的,我把例程的函数一个个带进去试,发现问题在哪了,GPIO用作SDA和SCL时,函数开头必须先设置SDA再设置SCL,否则有可能会形成起始或停止信号

例如:
void I2C_STOP(void)//发送端停止信号
{
        EEPROM_I2C_SDA_0();//必须先SDA置0,SCL再置1,否则可能会形成起始信号
        EEPROM_I2C_SCL_1();
        SysTick_Delay_Us(2);
        EEPROM_I2C_SDA_1();
        SysTick_Delay_Us(2);
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-2-4 21:14:15 | 显示全部楼层
WishWish 发表于 2024-2-4 20:30
先用例程测试过能正常吗

例程正常的,我把例程的函数一个个带进去试,发现问题在哪了,GPIO用作SDA和SCL时,函数开头必须先设置SDA再设置SCL,否则有可能会形成起始或停止信号

例如:
void I2C_STOP(void)//发送端停止信号
{
        EEPROM_I2C_SDA_0();//必须先SDA置0,SCL再置1,否则可能会形成起始信号
        EEPROM_I2C_SCL_1();
        SysTick_Delay_Us(2);
        EEPROM_I2C_SDA_1();
        SysTick_Delay_Us(2);
}
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 06:25 , Processed in 0.129534 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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