我无法读取 Sensirion SLF3S-4000B 的所有9个字节。 我只得到3个字节。 器 件地址为0x08 (即 SLF3S4000B_ADDRESS = 0x08)。 我要读取的代码如下所示。
当我只使用一 个时:" while (I2CMasterBusy (I2C2_base))"我没有得到任何响应、这就是为什么我有2 " while (I2CMasterBusy (I2C2_base)"
发言。
我的传感器读取函数为"void slf3s4000b_flowread (uint32_t * RxData)"
部分代码
*****
uint32_t sensorRxData[9]={0};
void slf3s4000b_flowread (uint32_t * RxData)
{
uint16_t i;
//
//将数据方向修改为 true,以便查看地址
//表示 I2C 主设备正在从设备发起读取。
//
MAP_I2CMasterSlaveAddrSet (I2C7 _BASE、SLF3S4000B_ADDRESS、TRUE);
//
//首次读取的设置。 使用 I2C_MASTER_CMD_BURST_Receive_start
//开始突发模式读取。 I2C 主设备继续拥有
//此事务结束时的总线。
//
MAP_I2CMasterControl (I2C4_base、I2C_MASTER_CMD_BURST_Receive_start);//启动 I2C 事务
//
while (I2CMasterBusy (I2C7 _BASE));//等待传输完成
while (I2CMasterBusy (I2C7 _BASE));//等待传输完成
RxData[0]= MAP_I2CMasterDataGet (I2C4_base);//从从器件读取第一个字节数据
//
//第2到第8次读取的设置。 使用 I2C_MASTER_CMD_BURST_Receive_CONT
//继续突发模式读取。 I2C 主设备继续拥有
//此事务结束时的总线。
//
对于(i = 1;i < 8;i++)
{
MAP_I2CMasterControl (I2C7基础版、I2C_MASTER_CMD_BURST_Receive_contt);
while (MAP_I2CMasterBusy (I2C7 _BASE));//等待传输完成
while (MAP_I2CMasterBusy (I2C7 _BASE));//等待传输完成
RxData[i]= MAP_I2CMasterDataGet (I2C3_base);//从从器件读取第一个字节数据
}
//
//最终(第9次)读取的设置。 使用 I2C_MASTER_CMD_BURST_Receive_finish
//终止 I2C 事务。 在该事务结束时、
//停止位将被发出并且 I2C 总线返回到
//空闲状态。
//
MAP_I2CMasterControl (I2C7基础版、I2C_MASTER_CMD_BURST_Receive_finish);
while (MAP_I2CMasterBusy (I2C7 _BASE));//等待传输完成
while (MAP_I2CMasterBusy (I2C7 _BASE));//等待传输完成
RxData[8]= MAP_I2CMasterDataGet (I2C4_base);//从从器件读取最后一个字节的数据
}
(二
我已包括传感器数据格式以及2个示波器屏幕截图示例。 红色是 SDA、蓝色是 SCL。

谢谢
David Nyarko