从 I2C 器件上的寄存器读取单个字节不会遇到任何问题、但在读取2个字节时、我的以下问题显然存在一些错误。 有人可以给我一个指针吗? 谢谢!
int I2CReceive (uint32_t SLAVE_CHN、uint8_t reg、uint8_t num_of _args)
{
内部 ITEMP;
//指定我们正在向 从器件写入(寄存器地址)
I2CMasterSlaveAddrSet (I2C2_base、slave_address_base_slave_chn、false);
//指定要读取的寄存器
I2CMasterDataPut (I2C2_base、reg);
//将控制字节和寄存器地址字节发送到从器件
I2CMasterControl (I2C2_base、I2C_MASTER_CMD_SINGLE_SEND);
//等待 MCU 完成事务
while (I2CMasterBusy (I2C2_base));
//SysCtlDelay (6000);
//指定我们将从从从器件读取
I2CMasterSlaveAddrSet (I2C2_base、slave_address_base_slave_chn、true);
if (num_of_args=1){
//This section works!
//发送控制字节并从我们的寄存器中读取
//specified
I2CMasterControl (I2C2_base、I2C_MASTER_CMD_SINGLE_Receive);
//等待 MCU 完成事务
while (I2CMasterBusy (I2C2_base));
//返回从指定寄存器提取的数据
return (short) I2CMasterDataGet (I2C2_base);
}
否则{
//num_of_args==2、这将不起作用
I2CMasterControl (I2C2_base、I2C_MASTER_CMD_BURST_Receive_start);
//等待 MCU 完成事务
while (I2CMasterBusy (I2C2_base));
//返回从指定寄存器提取的数据
ITEMP= I2CMasterDataGet (I2C2_base);
I2CMasterControl (I2C2_base、I2C_MASTER_CMD_BURST_Receive_finish);
//等待 MCU 完成事务
while (I2CMasterBusy (I2C2_base));
//返回从指定寄存器提取的数据
ITEMP= ITEMP| I2CMasterDataGet (I2C2_base)<<8;
返回 ITEMP;
}
}


