本帖最后由 sphinz 于 2011-11-13 11:40 编辑
我现在正在做lm3s8962和MSP430F2013的I2C通信,流程是这样的:lm3s8962做主机,MSP430f2013做从机,8962定时发出接收数据请求,F2013发出两个数据。F2013参考的是msp430x20x3_usi_09.c的程序,并且DCO的频率设为8MHz;lm3s8962的程序是使用库函数,自己写的。
双芯片通信时,用示波器能够打到波形,波形中的地址位是正确的,但是数据位和我设定的值不一样。示波器打的时序图中,可以看出第二个数据位后没有应答位。
请问下高手,问题最有可能出在哪儿呢?
I2CMasterSlaveAddrSet(I2C0_MASTER_BASE,MSP430F2013_ADDR,true);
I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_BURST_RECEIVE_START);
while(I2CMasterBusy(I2C0_MASTER_BASE))
{
}
datah=I2CMasterDataGet(I2C0_MASTER_BASE); //读取到的高位
I2CMasterControl(I2C0_MASTER_BASE,I2C_MASTER_CMD_BURST_RECEIVE_FINISH);
while(I2CMasterBusy(I2C0_MASTER_BASE))
{
}
datal=I2CMasterDataGet(I2C0_MASTER_BASE);//读取到的低位
|