主题中讨论的其他器件:MSP430G2553、 MSP-FET
#define SLAVE_ADDRESS 0x0D /**< AD5933的地址。 */ #define BAUD_RATE 12 /**<波特率值。 */ #define SDA_PIN 0x00 // msp430F5529 UCB0SDA 引脚 #define SCL_PIN 0x01 // msp430F5529 UCB.S.引脚 P1DIR |= BIT1; P1OUT |= BIT1; P1OUT ^=(BIT1);//打开 LED (在发送所有初始化数据时关闭) P3REN |= SDA_PIN + SCL_PIN; P3SDA_PIN |= SDA_PIN + SCL_PIN; P3SEL_PIN;+ SCL_PIN //将 I2C 引脚分配给 USCI_B0 UCB0CTL1 |= UCSWRST; //启用 SW 复位 UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC; // I2C 主设备,同步模式 UCB0CTL1 = UCSSEL_2 + UCSWRST; //使用 SMCLK、保持软件复位 UCB0BR0 =波特率; //设置预分频 器 UCB0BR1 = 0; UCB0I2CSA = SLAVE_ADDRESS; //设置从地址 UCB0CTL1 &=~UCSWRST; //清除 SW 复位,恢复操作 // UCB0IE = UCNACKIE;//使用和不使用此行进行尝试, UCB0IE |= UCTXIE 没有区别; //启用 TX 就绪中断 P1OUT ^=(BIT1);// 在(UCB0STAT 和 UCBBUSY)时关闭 LED ;
这是我的代码。 我知道我的板可以工作、因为 LED 闪烁正常、但我始终会在最后一个 while 循环中卡住。
此代码也是根据 MSP430G2553与 AD5933的通信进行调整的、在该通信中它运行良好。 我根据数据表更改了所有必要的端口和引脚。
这与另一个系统的另一个区别是、现在我使用 MSP-FET 闪存仿真工具和一个微 UBS 供电 、而不是使用迷你 USB 端口。 但我不知道这可能会或不会影响我的代码。
看来 MSP 的 STAT 从未改变、通信也未建立。 有人能帮我解决这个问题吗? 我不知道初始化有什么问题。 问题可能在于中断? 我应该怎么做?
提前感谢大家为我提供帮助。