请问各们大虾,我这样写收发数据有错吗。为什么我收到的只是0XFF。
unsigned long i2c_read_byte(char addr) { I2CMasterSlaveAddrSet(I2C0_MASTER_BASE, 0x50, false); // 设置从机地址,准备写数据 I2CMasterDataPut(I2C0_MASTER_BASE, addr); //将要发送子地址放到特定寄存器,准备发送 I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_BURST_SEND_START); //发送地址数据到从机 // SysCtlDelay(1<<7); //延时 while(I2CMasterBusy(I2C0_MASTER_BASE)); I2CMasterSlaveAddrSet(I2C0_MASTER_BASE, 0x50, true); // 设置从机地址,准备读数据 I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_SINGLE_RECEIVE); //读取单个字节 while(I2CMasterBusy(I2C0_MASTER_BASE)); // SysCtlDelay(1<<7); return I2CMasterDataGet(I2C0_MASTER_BASE);
// I2CMasterDataPut(I2C_MASTER_BASE, data);//将要发送的数据放到特定寄存器,准备发送 // I2CMasterControl(I2C_MASTER_BASE, I2C_MASTER_CMD_SINGLE_SEND);//发送数据到从机 // SysCtlDelay(1<<7);//延时 } ///* void i2c_send_data(char addr,char data) { I2CMasterSlaveAddrSet(I2C0_MASTER_BASE, 0x50, false); // 设置从机地址,准备写数据 I2CMasterDataPut(I2C0_MASTER_BASE, addr); //将要读取的地址数据放到特定寄存器,准备发送 I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_BURST_SEND_START); //发送地址数据到从机 while(I2CMasterBusy(I2C0_MASTER_BASE)); I2CMasterDataPut(I2C0_MASTER_BASE, data); //将要读取的地址数据放到特定寄存器,准备发送 I2CMasterControl(I2C0_MASTER_BASE, I2C_MASTER_CMD_SINGLE_SEND); //发送地址数据到从机 while(I2CMasterBusy(I2C0_MASTER_BASE)); }
|