请问各们大虾,我这样写收发数据有错吗。为什么我收到的只是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));
}
此帖出自
小平头技术问答
一周热门 更多>