分享 收藏 返回

单片机/MCU论坛

zhaofu007 关注 私信

[资料] oki mcu i2c通信问题

2012-8-13 14:56

本帖最后由 eehome 于 2013-1-5 09:58 编辑

请看下面代码为oki mcu(ML610Q411) 读写外部EEPROM(24C02),但是通信不成功。用示波器测的SDA引脚发送完器件地址的高四位便停止了。请高手帮忙解决。

void I2C_Init(void)

{

I2C0CON = 0x00;  //stop communication,acknowLEDgment data "0"

I2C0MOD = 0x13;  //Enable I2C,standard mode

}

unsigned char WaitAck(void)

{

return (!I20ACR);

}

void Write24C02(unsigned char add,unsigned dat) {

I2C0CON = 0x01;

I2C0SA = 0xA0;

WaitAck();

I2C0CON = 0x01;

I2C0TD = add;

WaitAck();

I2C0CON = 0x01;

I2C0TD = dat;

WaitAck();

I2C0CON = 0x02;

}

unsigned char Read24C02(unsigned char add) {

unsigned char data;

I2C0CON = 0x01;

I2C0SA = 0xA0;

WaitAck();

I2C0CON = 0x01;

I2C0TD = add;

WaitAck();

I2C0CON = 0x05;

I2C0SA = 0xA1;

WaitAck();

data = I2C0RD;

I2C0CON = 0x81;

I2C0CON = 0x02;

return data;

}







回帖(3)

欧阳里

2012-8-13 15:30:37

彭春

2012-8-13 21:28:34
不全呢,读写都不成功吗?还是读出数据有误码?EEPROM需要一定的工作电压才能正常读写,电压稳定后再操作!

zhaofu007

2012-8-14 20:04:00
引用: lstcspring 发表于 2012-8-13 21:28
不全呢,读写都不成功吗?还是读出数据有误码?EEPROM需要一定的工作电压才能正常读写,电压稳定后再操作! ...

读写均不成功,每次写的时候时钟只来4个脉冲就停止了,所以只发送了器件地址的高四位就停止了.如果我不用mcu的i2c模块,只是用IO口模拟i2c的话读写都正常。

更多回帖