LM3S6916与AT24C32通信问题

2019-03-24 16:03发布

请问各们大虾,我这样写收发数据有错吗。为什么我收到的只是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));
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
deweyled
1楼-- · 2019-03-24 23:40
 精彩回答 2  元偷偷看……
o0pingu0o
2楼-- · 2019-03-25 01:13
< :TI_MSP430_内容页_SA7 --> 看看是不是没有使能你的I2C所在的GPIO口

一周热门 更多>

相关问题

    相关文章