最近用430写和HMC5883通信的程序,用的是内部串口的IIC模式,写寄存器没有问题,但是在读的过程中总是多读一位,比如我要读0x01地址上的数据,回来的却是0x02上的数据。在示波器上看后,发现在读的过程中,430连续接收了两次,第一次是0x01的,第二次是0x02,结果0x02上的数就把0x01的数覆盖了,不知道是哪里设置的问题,查了5883的寄存器,没有关于IIC连续发送的设定。在430中寄存器配置如下:
Flash_WriteChar(IIC_CTL0,0x0f);//主控模式,IIC模式,同步,单主机
Flash_WriteChar(IIC_CTL1,0xc0);//选择SMCLK时钟
Flash_WriteChar(IIC_BR0,0x10);//100kbps
Flash_WriteChar(IIC_BR1,0x00);
Flash_WriteChar(IIC_I2CSA,0x1e);
请大神们帮忙分析下,到底是哪里的问题,多谢! |