请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
部件号:MSP432P401R 工具/软件:Code Composer Studio
各位同事,您好!
我正在尝试开发一个带有msp432和传感器tmp006的系统,我制作了一个示例代码,在这里我配置了DE I2C协议,但我没有得到传感器的温度。有人能帮我吗? 我将CCS与CMSIS一起使用,欢迎提供任何帮助。
提前感谢!
#define SCL_Pin BIT5 /*PIN 5*/
#define SDA_Pin BIT4 /*PIN 4*/
#define TMP006_ADDR (0x40) /*设备地址*/
uint8_t RXData[5]={0};
uint8_t RXDataPointer;
void TMP006_IRQ(void){/*I2C
引脚配置*/
P6->SEL0|= SCL_Pin | SCI_Pin; /*PIN 6.5 和*DPREP*I2*I2*////*EBISCIR0_EBISC1*EPOIC_ENTIF_EBIST_BISC1*/= 6.4
启用
EBISC1= EBIST_POIC_BISC1=
/*软件重置启用*/
EUSCI_B1->CTLW0 |= EUSCI_B_CTLW0_SWRST |/* 在重置模式下仍保留ESCI */
EUSCI_B_CTLW0_MODE_3|/*I2*I2*I2*I2*ESCI_SCI_SCI_SCI_SCI_STB0_STB1*MASTER
模式*/ E1000_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI_SCI0_SCI0_SC1=30=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=0=
/*要接收的字节数*/
EUSCI_B1->I2CSA = TMP006_ADDR; /*从属I2C特定地址*/
EUSCI_B1->CTLW0 &=~(EUSSCI_B_CTLW0_SWRST); /*RELESE eUSCI from RESET*/
EUSCI_B1->IE |_EIE|EUSCI_RXB /*启用接收中断*/
EUSCI_B_IE_NACKIE | /*启用nack interrupt */
EUSCI_B_IE_BCNTIE; /*启用字节计数器中断*/
}
void UartI2C_Task(void){
unsigned int I;
SCB->SCR |= SCB_SCR_SLEEPONEXIT_MSK; /*不唤醒PON EXIT ISR*/
(i = 2000;I>0;I;I;I;I--);
/*验证是否已发送停止条件/IF
(EUSCI_LWSCI_SCI_SCI_SCI_SC1_LWSTB1_LWSTB1; E_SCB1_SCI_SCB1_SCI_SCI_SCB1_LWSTB1; E=0; E_B_SCI_SCI_SCI_SCI_SCI_SC1_LWSTB1_LWSTB1_SC
__no_operation();
}/*I2C
中断服务例程*/
void EUSCIB0_IRQHandler(void){
IF (EUSSCI_B0->IFG & EUSCI_B_IFG_NACKIFG){
EUSCI_B0->IFG &=~ EUSCI_B_IFG_NACKIFG;
EUSCI_B0->CTLW0 || EUSCI_B_CTLW0_TXSTT;/*I2C 启动条件*/
}
IF (EUSSCI_B0->IFG & EUSCI_B_IFG_RXIFG0){
EUSCI_B0->IFG &=~ EUSCI_B_IFG_RXIFG0;
RXData[RXDataPointer+]= EUSCI_B0->RXBUF;/*获取TX数据*/
如果(RXDataPointer > sizeof (RXData)){
RXDataPointer = 0;
}
//从ISR退出时唤醒
scb->scr &=~scb_scr_SLEEPONEXIT_MSK; /*退出时唤醒DROM ISR*/
}
IF (EUSSCI_B0->IFG & EUSCI_B_IFG_BCNTIFG){
EUSCI_B0->IFG &=~ EUSCI_B_IFG_BCNTIFG;
}
}