OpenEdv-开源电子网

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

24LC16芯片数据丢失问题

[复制链接]

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-8-6
在线时间
6 小时
发表于 2018-8-24 15:20:07 | 显示全部楼层 |阅读模式
10金钱
现象:
目前的产品出货了约500多套,目前出现小概率(确定下来的目前有2套产品有问题)的参数值被修改的情况。电路设计如下图一和图二。程序中,设定模式下修改数据时触发写24LC16操作。非设定模式下时是不进行写24LC16的,上电时会读取24LC16数据,产品运转时是在非设定模式下,会固定的读取24LC16(读取地址范围在0x0064-0x0133)。现在出现问题时,是在非设定状态下,0x0004单元地址由原先的0b00000000改为了0b01001001。
程序中,读/写操作用的是单字读/写模式。其中读/写函数如图三和图四。
程序中,关于WP管脚操作的内容在图五所示的函数中。
                 
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
图一 24LC16电路
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image004.jpg
图二 单片机管脚定义
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image006.jpg
图三 24LC16读函数
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image008.jpg
图四 24LC写函数
file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image010.jpg
图五 WP管脚操作

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-8-6
在线时间
6 小时
 楼主| 发表于 2018-8-24 15:25:41 | 显示全部楼层
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-8-6
在线时间
6 小时
 楼主| 发表于 2018-8-24 15:34:46 | 显示全部楼层
unsigned char EEPROM_Read_O(unsigned int M_ADD,unsigned char *back)
{
    unsigned char Temp;               
        unsigned char M_ADD_h,M_ADD_l;
        unsigned int i = 0;
        M_ADD_h = (unsigned char)(M_ADD >> 8);
        M_ADD_l = (unsigned char)(M_ADD & 0x00ff);                             

    do
        {
        I2C_Stop(0);       
                I2C_Start();                                                     
                Write_I2C_Control(M_ADD_h,0);
                i++;
        }while(I2C_Ackn() && i < 1000);          
                                                                          
        Write_I2C_Byte(M_ADD_l);               
        I2C_Start();                                  
        Write_I2C_Control(M_ADD_h,1);         
        i = 0;       
        while(I2C_Ackn() && i < 1000)
         {
             i++;
         }             
        Temp = Read_I2C_Byte();               
        I2C_Stop(0);       
        *back = Temp;                                 
        return Temp;                               
}
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-8-6
在线时间
6 小时
 楼主| 发表于 2018-8-24 15:35:06 | 显示全部楼层
void EEPROM_Write_O(unsigned int M_ADD, unsigned char Data)
{
    unsigned char M_ADD_h,M_ADD_l;
        unsigned int i = 0;
        M_ADD_h = (unsigned char)(M_ADD >> 8);
        M_ADD_l = (unsigned char)(M_ADD & 0x00ff);
        do
        {
            I2C_Stop(1);       
            I2C_Start();                                  
                Write_I2C_Control(M_ADD_h,0);
                i++;
        }while(I2C_Ackn() && i < 1000);                                  
        Write_I2C_Byte(M_ADD_l);       
        Write_I2C_Byte(Data);               
        I2C_Stop(1);                                 
}
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-8-6
在线时间
6 小时
 楼主| 发表于 2018-8-24 15:35:24 | 显示全部楼层
/**********************************************************
*函数介绍:产生IIC停止信号
*输入函数:mod = 1,保护(可用于写),mod = 0不保护(可用于读)
*输出函数:
*返回值  :
***********************************************************/
void I2C_Stop (unsigned char mod)
{
    SETBIT(I2C_DIR_SDA,SDA);                          
        CLEARBIT(I2C_PORT_SDA,SDA);                             
        CLEARBIT(I2C_PORT_SCL,SCL);                            
        SETBIT(I2C_PORT_SCL,SCL);
        NOP();NOP();NOP();NOP();NOP();               
        NOP();NOP();NOP();NOP();NOP();
        if(mod == 1)
            CLEARBIT(I2C_EP_WP,EP_WP);
        else
                SETBIT(I2C_EP_WP,EP_WP);               
        NOP();NOP();NOP();NOP();NOP();               
        NOP();NOP();NOP();NOP();NOP();                          
        SETBIT(I2C_PORT_SDA,SDA);       
        NOP();NOP();NOP();NOP();NOP();
        NOP();NOP();NOP();NOP();NOP();
        NOP();NOP();NOP();NOP();NOP();
        NOP();NOP();NOP();NOP();NOP();
        NOP();                  
}
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-8-6
在线时间
6 小时
 楼主| 发表于 2018-8-24 15:36:32 | 显示全部楼层
图片不知道怎么上传的,分批贴上来了。麻烦大家能指导指导。目前没有头绪
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-8-25 01:59:08 | 显示全部楼层
唤醒片试试吧,这种极个别的
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-8-6
在线时间
6 小时
 楼主| 发表于 2018-8-25 08:41:53 | 显示全部楼层
正点原子 发表于 2018-8-25 01:59
唤醒片试试吧,这种极个别的

是“换芯片”吧,你意思是换一颗24LC16芯片,还是换其他种类的存储芯片呢?
另:第一次管理原回复我,有点小激动
回复

使用道具 举报

43

主题

228

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1074
金钱
1074
注册时间
2012-1-10
在线时间
238 小时
发表于 2018-8-25 13:04:26 | 显示全部楼层
将芯片WP管脚使用起来。
回复

使用道具 举报

3

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
53
金钱
53
注册时间
2018-8-6
在线时间
6 小时
 楼主| 发表于 2018-8-29 14:06:50 | 显示全部楼层
magicoctoy 发表于 2018-8-25 13:04
将芯片WP管脚使用起来。

5楼的函数里就是对WP管脚的使用。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 14:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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