打印

MSP430G2553串口的iic模式应用遇到一个问题

[复制链接]
550|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shisizai|  楼主 | 2017-8-19 14:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近用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);
请大神们帮忙分析下,到底是哪里的问题,多谢!

相关帖子

沙发
shisizai|  楼主 | 2017-8-19 14:04 | 只看该作者
在读寄存器的时候 程序如下:
    UCB0CTL1 |= UCTR + UCTXSTT;
    delay_us(40);
   UCB0TXBUF = 0x04;//被读地址,但是返回的是0x05的数据??
    delay_us(40);
    UCB0CTL1 &= ~UCTR;
    UCB0CTL1 |= UCTXSTT;
   delay_us(40);
    DAT = UCB0RXBUF;
   delay_us(40);
    UCB0CTL1 |= UCTR + UCTXSTP;

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

192

帖子

3

粉丝