请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR6989 工具/软件:Code Composer Studio
你(们)好
我尝试使用单个 i2c 函数读取单个或多个字节。 下面是代码的一部分
unsigned char * i2c_data;
unsigned char RX_Data; unsigned char * i2c_read (unsigned char SLV_addr、unsigned char reg_addr、unsigned int len){ unsigned char data[36]; unsigned int i = 0; while (UCB1STAT 和 UCBBUSY); UCB1I2CSA = SLV_addr; UCB1CTLW0 |= UCTR | UCTXSTT; while (UCB1CTLW0和 UCTXSTT); UCB1TXBUF = REG_addr; while (!(UCB1IFG & UCTXIFG0)); UCB1CTLW0 &=~UCTR; UCB1CTLW0 |= UCTXSTT; while (UCB1CTLW0和 UCTXSTT); for (i = 0;i < len;i++) { if (i == len - 1) { UCB1CTLW0 |= UCTXSTP; } while (!(UCB1IFG & UCRXIFG0)); DATA[i]= UCB1RXBUF; } while (UCB1CTLW0和 UCTXSTP); return (data); }
当我根据所需的值检查读取值时、该值为 true、但当我尝试打印该值时、我会收到垃圾邮件。
I2C_DATA = i2c_read_bytes2 (BME280_I2C_address、BME280_CHIP_ID_ADDR、1);
IF (i2c_data[0]= 0x60)
{
UART_PUs ("芯片地址为:");
sprintf (RX_Data、"%x"、i2c_data);
UART_Ps (RX_Data);
UART_PUs ("\r\n");
}
它正在打印2Ðð 而不是60
此致
Vijay