gaoyang9992006 发表于 2023-11-13 16:43

从一个上古年间的板子上拆下来个EEPROM读取内部数据看看


就这个板子,竟然还能查到资料,以前我还买过这个牌子的电视盒呢,可以将电脑显示器变成电视机。
这个芯片型号是FM24C02C,容量小,只能放下256个字节。
为了方便利用RISC V内核的Arduino开发板读取
#include "Wire.h"

#define I2C_DEV_ADDR 0x50


void read_fm24c02(uint8_t reg)
{
uint8_t dat=0;
Wire.beginTransmission(I2C_DEV_ADDR);
Wire.write(reg);
Wire.endTransmission();
Wire.requestFrom(I2C_DEV_ADDR,1);
if (Wire.available())
{
    dat = Wire.read();          // 读取数据字节
}
Serial.println(dat,HEX);
}

void setup() {
Serial.begin(115200);
Wire.begin();
for(uint8_t i=0;i<0xFF;i++)
{
    Serial.print("REG[");Serial.print(i);Serial.print("]= 0x");
    read_fm24c02(i);
}

}

void loop() {

}
读取结果
REG= 0x31
REG= 0x30
REG= 0x4D
REG= 0x4F
REG= 0x4F
REG= 0x4E
REG= 0x53
REG= 0x45
REG= 0x5A
REG= 0x39
REG= 0x38
REG= 0xFF后面都是0xFF了,不再多写。

gaoyang9992006 发表于 2023-11-26 13:10

完善一下,补充上写入的
#include "Wire.h"

#define I2C_DEV_ADDR 0x50


uint8_t read_fm24c02(uint8_t reg)
{
uint8_t dat=0;
Wire.beginTransmission(I2C_DEV_ADDR);
Wire.write(reg);
Wire.endTransmission();
Wire.requestFrom(I2C_DEV_ADDR,1);
if (Wire.available())
{
    dat = Wire.read();          // 读取数据字节
}
return dat;
}

void write_fm24c02(uint8_t reg,uint8_t dat)
{
Wire.beginTransmission(I2C_DEV_ADDR);
Wire.write(reg);
Wire.write(dat);
Wire.endTransmission();
}

void setup()
{
Serial.begin(115200);
Wire.begin();
write_fm24c02(11,0xF0);
for(uint8_t i=0;i<0xFF;i++)
{
    Serial.print("REG[");Serial.print(i);Serial.print("]= 0x");Serial.println(read_fm24c02(i),HEX);   
}
}

void loop()
{

}

中国龙芯CDX 发表于 2023-11-29 12:43

这个芯片里面一般是参数设置吧

gaoyang9992006 发表于 2023-11-29 14:37

中国龙芯CDX 发表于 2023-11-29 12:43
这个芯片里面一般是参数设置吧

是的,是参数设置,不过那个主要的视频芯片也用不到了,拆下来这个存储芯片还能DIY用。

LOVEEVER 发表于 2023-11-29 19:42

楼主这个思想很棒支持一下
页: [1]
查看完整版本: 从一个上古年间的板子上拆下来个EEPROM读取内部数据看看