单片机/MCU论坛
直播中

zhaofu007

13年用户 9经验值
擅长:便携及消费电子
私信 关注
[资料]

oki mcu i2c通信问题

本帖最后由 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)

oyl

2012-8-13 15:30:37
举报

lstcspring

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的话读写都正常。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分