This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/TM4C1231H6PM:TM4C123 I2C 问题,CAN#39;t SEND SCL 和 SDA

Guru**** 2440240 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/626836/compiler-tm4c1231h6pm-tm4c123-i2c-problem-can-t-send-scl-and-sda

器件型号:TM4C1231H6PM
主题中讨论的其他器件:TM4C123

工具/软件:TI C/C++编译器

您好,大家好

我正在尝试 通过 I2C 与 TM4C123和 AD5934构建通信、

虽然我看不到 i2c_SDR 寄存器中的任何图

我无法从从器件接收到应答

我无法在 引脚上读取 SCL 和 SDA  

感谢大家的帮助

这是我的程序

int I2C_write (unsigned char slave_address、unsigned char reg_addr、unsigned char 数据)

unsigned dataschar end;
datasend=数据;
I2CMasterSlaveAddrSet (I2C1_base、slave_address、false);false代表主模块发送,从模块接收。true代表主模块从从模块读取。μ s
// I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_SEND_START);//发送开始指令
I2CMasterDataPut (I2C1_base、reg_addr);//将发送的地址放入数据存储器中
//主模块开始发送数据
I2CMasterControl (I2C1_base、I2C_MASTER_CMD_BURST_SEND_START);发送开始指令 μ s
// 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 datareceeve;
// datareceve=数据;
// 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_contt);
// while (!(I2CSlaveStatus (I2C1_base)& I2C_SLAVE_ACT_TREQ))
//{
//}
datareceev=I2CMasterDataGet (I2C1_base);
// UARTprintf ("正在发送:'%c'。 。 。 "、DATA[i]);//读取从主机接收到的字节

返回0;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您能否澄清您在 MCU 和外部总线之间的硬件设置? 您是否在 I2C 总线上的 SCL 和 SDA 上有适当的上拉电阻? 如果您使用示波器、您会看到 SCL 和 SDA 总线上的活动吗? 下面是一份有用的 I2C 应用手册、您会发现该手册很有用。 www.ti.com/.../spma073.pdf
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 SCL 和 SDA 上有上拉电阻、但在 CCS 中、当我写入"I2C MasterDataPut (I2C1_base、reg_addr)时、I2C_MDR 的寄存器始终显示为00000、没有变化。 我陷入抑郁
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好,我的 SCL 起初是1、在发送起始值后、它变为0、但 SDA 没有变化。我感到困惑
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    I2C_WRITE (0x0D、0x82、0xA3),该位是否不匹配?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您说的 SCL 上除了一个从高电平到低电平的转换之外、根本没有时钟脉冲? 您能显示波形吗?
    另请确保 SCL/SDA 引脚使用 GPIOPinConfigure()进行多路复用配置,GPIOPinTypeI2CSCL()用于 SCL 引脚,GPIOPinTypeI2C()用于 SDA 引脚。