24C1024与24C02的驱动是否通用?我用24C02的驱动(模拟IO口)向24C1024的0x01地址写入数据0x01,读写都不正常?谁能提供24C1024的驱动参考下,谢谢! |
【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
万利STM32F107VC 原理图
STM32F103 ADC多通道检测必须要DMA吗?
【官方例程】STM32F107以太网官方例程
可参考我的代码,分别是读写一个字节,和读写一页:
评分
查看全部评分
你好,帮我看下,这个代码哪里错误,要怎么修改?谢谢
void at24c1024_response(void) //at24c1024应答响应信号;SCL高电平下,如果at24c1024收到数据,则会SDA拉低
{
unsigned int x=0;
at24c1024_scl_set();
systick_delay_us(5);
while((at24c1024_sda_io())&&(x<5000))x++; //等待是否有应答,如果一段时间应答不成功,则默认为应答成功
at24c1024_scl_clr();
systick_delay_us(5);
}
unsigned char at24c1024_read_byte(void) //从at24c1024读出数据
{
unsigned char x,y;
at24c1024_scl_clr();
systick_delay_us(5);
at24c1024_sda_set();
systick_delay_us(5);
for(x=0;x<8;x++)
{
at24c1024_scl_clr();
systick_delay_us(5);
y=(y<<1)|at24c1024_sda_io();
systick_delay_us(5);
at24c1024_scl_set();
systick_delay_us(5);
}
return y;
}
void at24c1024_write_byte1(unsigned int byte) //向at24c1024写入数据
{
unsigned int x,y;
for(x=0;x<16;x++)
{
y=byte&0x8000;
at24c1024_scl_clr();
systick_delay_us(5);
if(y==0){at24c1024_sda_clr();}
else{at24c1024_sda_set();}
systick_delay_us(5);
at24c1024_scl_set();
systick_delay_us(5);
byte=byte<<1;
systick_delay_us(5);
}
at24c1024_scl_clr();
systick_delay_us(5);
at24c1024_sda_clr();
systick_delay_us(5);
}
void at24c1024_write_data(unsigned char add,unsigned char data) //给at24c1024指定地址写入数据
{
at24c1024_start();
at24c1024_write_byte(0xA0); //0xA0:写数据,0xA1:读数据;
at24c1024_response();
at24c1024_write_byte1(add);
at24c1024_response();
at24c1024_write_byte1(data);
at24c1024_response();
at24c1024_stop();
systick_delay_ms(10);
}
unsigned char at24c1024_read_data(unsigned char add) //从A24C1024指定地址中读出数据
{//0xA0:写数据,0xA1:读数据;
unsigned int data;
at24c1024_start();
at24c1024_write_byte1(0xA0);
at24c1024_response();
at24c1024_write_byte1(add);
at24c1024_response();
at24c1024_start();
at24c1024_write_byte1(0xA1);
at24c1024_response();
data=at24c1024_read_byte();
at24c1024_stop();
systick_delay_ms(10);
return data;
}
你好,16位地址通过以下代码处理,已经测试通过,
SI2C_Send(addr>>8); //发送高8位地址
SI2CIsAck(); //等待应答
SI2C_Send(addr%256); //发送低8位地址
那17位地址改如何处理?
谢谢!
评分
查看全部评分
你好,我知道地址的个数不一样,但是写0x01地址是不是一样的?
24c1024是16bit地址,地址0x01应改为0x0001
评分
查看全部评分
谢谢您,晚上回去地址改成0x0001试试
谢谢,晚上回去地址改成0x0001试试
评分
查看全部评分
这个是在24C02的基础上修改的
非常感谢您,我仔细看看
你好,能把完整的24C1024驱动发我参考下吗?私发也可以,6135135@qq.com