|
采用5438的UCB2,配置成IIC模式,配置程序如下:
P9DIR |= 0x06;
P9OUT |= 0x06;
P9SEL |= 0x06;
UCB2CTL1 |= UCSWRST;//reset the iic
UCB2CTL0 |= UCMODE_3 + UCMST + UCSYNC;//iic
UCB2CTL1 |= UCSSEL_3 + UCTR;//iic
UCB2CTL1 &= ~UCSWRST;//reset the iic
UCB2BRW = I2c_baute_speed; //set the baute speed 100kbps
UCB2I2COA |= I2c_self_address;
UCB2I2CSA |= I2c_sl××e_address;
UCB2IE = 0x03;//I2c_ie_control;//允许中断*/
配置完之后启动IIC:
UCB2CTL1 |= UCTXSTT; //start the iic
进入中断程序后总感觉不对,用示波器测试波形,发现IIC模块发出开始时序后接着发送7位从地址和写标志位(0xa0);然后SCL就没有脉冲了,这样从器件的第九位ACK就接收不到,UCTXSTT就不能自动复位,各位大侠看看该如何处理,谢谢!
启动之后进入的是UCB0的发送空中断向量,再这个终端里尝试修改为接收模式UCTR为0,结果除了ACK接收到外又多接收了一个0xff数据。等待指点中......
|
|