I2CMasterSlaveAddrSet( I2C6_BASE, 0x4A, true); //控制传输方向为主机写 I2CMasterDataPut( I2C6_BASE, 0x01 ); //写入主机数据(TMP100控制寄存器地址) I2CMasterControl( I2C6_BASE, I2C_MASTER_CMD_BURST_SEND_START ); //start+从机地址+主机数据传输 while( I2CMasterErr(I2C6_BASE) | I2CMasterBusy(I2C6_BASE) ); I2CMasterDataPut( I2C6_BASE, 0xED ); //写入主机数据(TMP100控制寄存器内容) I2CMasterControl( I2C6_BASE, I2C_MASTER_CMD_BURST_SEND_CONT ); //主机数据传输 while( I2CMasterErr(I2C6_BASE) | I2CMasterBusy(I2C6_BASE) ); delay_ms(35); I2CMasterDataPut( I2C6_BASE, 0x00 ); //读取温度 I2CMasterControl( I2C6_BASE, I2C_MASTER_CMD_BURST_SEND_FINISH ); //start+从机地址+主机数据+stop传输 while( I2CMasterErr(I2C6_BASE) | I2CMasterBusy(I2C6_BASE) ); delay_ms(25); I2CMasterSlaveAddrSet( I2C6_BASE, 0x4A, true); //控制传输方向为主机写 I2CMasterControl( I2C6_BASE, I2C_MASTER_CMD_BURST_RECEIVE_START ); while( I2CMasterErr(I2C6_BASE) | I2CMasterBusy(I2C6_BASE) ); Result_H = I2CMasterDataGet( I2C6_BASE ); delay_ms(325); I2CMasterControl( I2C6_BASE, I2C_MASTER_CMD_BURST_RECEIVE_FINISH ); //start+从机地址+主机数据+stop传输 while( I2CMasterErr(I2C6_BASE) | I2CMasterBusy(I2C6_BASE) ); delay_ms(325); Result_L = I2CMasterDataGet( I2C6_BASE ); //读出转换结果的低八位 delay_ms(325);
为什么用100kHz的频率读不了数据?设置的精度是0.0625度,为什么每次温度变化是0.5度?