首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

mcf52235的I2C问题

mcf52235的I2C问题

我启动了I2C后,怎么从机就是不应答,请教下
void mcf52235_iic_init(void)
{
MCF_GPIO_PASPAR |= 0x01;//MCF_GPIO_PASPAR_SCL_TXD2 | MCF_GPIO_PASPAR_SDA_RXD2;
MCF_I2C_I2FDR = 0x15; //divided by 640,braud:93.75k bps
MCF_I2C_I2AR = 0xf0; //slave address
MCF_I2C_I2CR = (0 | MCF_I2C_I2CR_IEN );
MCF_I2C_I2CR |= MCF_I2C_I2CR_MSTA ;
}
void SETD(uint8 Addr,uint8 Value)
{
InterruptDisable;
MCF_GPIO_PORTNQ &= 0xbf;
SomeNop;
MCF_GPIO_PORTNQ |= 0x40;
SomeNop;
while((MCF_I2C_I2SR & MCF_I2C_I2SR_IBB) != 0);//等待总线空闲
MCF_I2C_I2CR |= MCF_I2C_I2CR_MTX;//设置为发送模式
MCF_I2C_I2CR |= MCF_I2C_I2CR_MSTA;//设置主模式,产生START信号
MCF_I2C_I2DR = Addr;
while((MCF_I2C_I2SR & MCF_I2C_I2SR_IBB) == 0);//等待启动总线

while((MCF_I2C_I2SR & MCF_I2C_I2SR_IBB) != 0);//等待总线空闲

MCF_I2C_I2CR |= MCF_I2C_I2CR_MTX;//设置为发送模式
MCF_I2C_I2CR |= MCF_I2C_I2CR_MSTA;//设置主模式
MCF_I2C_I2DR = Value;
while((MCF_I2C_I2SR & MCF_I2C_I2SR_IBB) == 0);//等待启动总线

while((MCF_I2C_I2SR & MCF_I2C_I2SR_IBB) != 0);//等待总线空闲
SomeNop;
Delay1ms(1);//约300us
MCF_GPIO_PORTNQ &= 0xbf;
MCF_I2C_I2SR &= 0xef;//清IAL
Delay1ms(1);
InterruptEnable
}
希望你与广大的师兄,师姐们交流!
有做过的,请帮忙看看,我用示波器看波形,第9个脉冲一直都是高电平,也就是没有产生应答啊,不知道怎么回事?
希望你与广大的师兄,师姐们交流!
从机是什么芯片?I2C地址对吗?
海纳百川  有容乃大
从机是DS1302,地址是对的,就是不应答啊
希望你与广大的师兄,师姐们交流!
换一块芯片试试?
海纳百川  有容乃大
我也换过了啊,你帮我看下,我哪些初始化的对吗?
对了,那些停止信号是由MCF52235自动给的吧,不用程序编写的吧,就象是从机给应答信号一样的吧.
斑竹是否有例程,能否发出来,让我参考下,谢谢了!
希望你与广大的师兄,师姐们交流!
如果你看过波形,起始信号和波特率都是对的,而没有应答信号,只能说从机或连线有问题了。再仔细检查一下吧。
海纳百川  有容乃大
是啊,我看过波形了,反复的试,但是有更奇怪的事情,波形指示是第9个脉冲是一个高电平,但是看MCF52235的状态寄存器的I2SR的应答位,却说是0,即有应答,这个是怎么回事啊.
希望你与广大的师兄,师姐们交流!
把波形贴出来看看?
海纳百川  有容乃大
请麻烦看下,谢谢!
希望你与广大的师兄,师姐们交流!
[upload=image/pjpeg]uploadImages/BOXING.JPG[/upload]
刚才没有贴成功
希望你与广大的师兄,师姐们交流!
看起来好像是第一个字节还没有发送完,第二个字节就提前发送了。检查一下你的程序。
海纳百川  有容乃大
第一个字节是发完了(0X8E),你看第9个脉冲时,SDA(蓝)却是高,可是你看我旁边贴出来的I2SR却是有收到ACK,所以就发了第二个啊,但是更有奇怪的是,我现在发的第二个字节是0X00,如果我发0X80,则只会有一个脉冲,而不会有9个脉冲了,也就说,只要碰到了SDA为高电平,估计就被当作是停止信号,就不发了.我都搞不明白了

[此贴子已经被作者于2008-4-7 17:06:42编辑过]

希望你与广大的师兄,师姐们交流!
你外接小一些的上拉电阻试试。
海纳百川  有容乃大
上拉电阻已经是1.5K了,应该是没有问题的了,我现在觉得是软件的问题.
希望你与广大的师兄,师姐们交流!
返回列表