TI中文支持网
TI专业的中文技术问题搜集分享网站

TM4C123 I2C配置不对,发不出SCL和SDA

int I2C_write(unsigned char SLAVE_ADDRESS,unsigned char reg_addr,unsigned char data)

{

unsigned char datasend;
datasend=data;
I2CMasterSlaveAddrSet(I2C1_BASE, SLAVE_ADDRESS, false);//false代表主模块发送,从模块接收。true代表主模块从从模块读取。
// I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_START);//发送开始指令
I2CMasterDataPut(I2C1_BASE,reg_addr);//将发送的地址放入数据存储器中
// 主模块开始发送数据
I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_START);//发送开始指令
// I2CMasterDataPut(I2C1_BASE,reg_addr);//将发送的地址放入数据存储器中

I2CMasterDataPut(I2C1_BASE,datasend);//将要发送的数据放入存储器中

I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_SINGLE_SEND);
//while(!(I2CSlaveStatus(I2C1_BASE) & I2C_SLAVE_ACT_RREQ))
// {
// }

while((I2CMasterBusy(I2C1_BASE) ))
{
}

I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_STOP);

/* */

//I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_STOP);//数据发送结束后,发送结束指令

}

int I2C_read(unsigned char SLAVE_ADDRESS,unsigned char reg_addr)
{

unsigned char datarecieve;
// datarecieve=data;
// I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_START);
I2CMasterSlaveAddrSet(I2C1_BASE, SLAVE_ADDRESS, false);
I2CMasterDataPut(I2C1_BASE,reg_addr);
I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_SEND_START);

I2CMasterSlaveAddrSet(I2C1_BASE, SLAVE_ADDRESS,true);//true 代表主机接收

I2CMasterControl(I2C1_BASE, I2C_MASTER_CMD_BURST_RECEIVE_CONT);
// while(!(I2CSlaveStatus(I2C1_BASE) & I2C_SLAVE_ACT_TREQ))
// {
// }
datarecieve=I2CMasterDataGet(I2C1_BASE);
// UARTprintf(" Sending: '%c' . . . ", data[i]);//读取从主机接收到的字节

return 0;

}

shuang di:

麻烦大家帮我看一下哪里出问题了 

xyz549040622:

回复 shuang di:

不是有官方的例程吗,照着官方的配置就是没问题的。大部分都是初始化的问题。

赞(0)
未经允许不得转载:TI中文支持网 » TM4C123 I2C配置不对,发不出SCL和SDA
分享到: 更多 (0)