51单片机模拟I2C总线
时间:10-02
整理:3721RD
点击:
EEPROM与单片机通信,前者用的芯片是AT24C02,在启动程序遇到问题。
根据时序图,“在scl为高电平期间,sda出现下降沿则为启动信号。”
我的程序:
void start()
{
scl=1;
delayms();
sda=1;
delayms();
sda=0;
delayms();
}
而且调用之前做了scl=1和sda=1的初始化,烧尽单片机后无效。
后来有效,是把程序改成:
void start()
{
sda=1;
delayms();
scl=1;
delayms();
sda=0;
delayms();
}
我有点想不通,这两个程序貌似差不多,为什么我的程序会不对?哪里理解错了?求助各位大虾~~
根据时序图,“在scl为高电平期间,sda出现下降沿则为启动信号。”
我的程序:
void start()
{
scl=1;
delayms();
sda=1;
delayms();
sda=0;
delayms();
}
而且调用之前做了scl=1和sda=1的初始化,烧尽单片机后无效。
后来有效,是把程序改成:
void start()
{
sda=1;
delayms();
scl=1;
delayms();
sda=0;
delayms();
}
我有点想不通,这两个程序貌似差不多,为什么我的程序会不对?哪里理解错了?求助各位大虾~~
总的来说没有区别,如果你上个程序,sda延时由高到低稍微长一点就有效了
程序上电复位后,电压没有完全升起来,操作EEPROM是有问题!