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.

[参考译文] EK-TM4C123GXL:I2C 从设备初始化

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/572177/ek-tm4c123gxl-i2c-slave-initialization

器件型号:EK-TM4C123GXL
主题中讨论的其他器件:TM4C123

我正在尝试将 TM4C 配置为从设备、以便与用于 I2C 的 Raspberry Pi 3主设备配合使用。 我使用的是直接寄存器访问、而不是 TivaWare。 我找不到任何有关这方面的文档。 我使用了以下代码、但它不会写入调试器中的 I2C 寄存器。 我尝试写入 SCSR 寄存器以将其作为从机启用、但它仍然为0。 我是否在初始化中缺少某些内容?  

// I2C0SCL 连接到 PB2
// I2C0SDA 连接到 PB3

void I2C_Slave_Init (void){
  SYSCTL_RCGCI2C_R |= 0x0001;//激活 I2C0
  SYSCTL_RCGCGPIO_R |= 0x0002;//激活端口 B
  while (((SYSCTL_PRGPIO_R&0x0002)==0){};//准备好了?

  GPIO_PORTB_AFSEL_R |= 0x0C;// 3)在 PB2、3上启用 alt funt
  GPIO_PORTB_ODR_R |= 0x08;// 4)仅在 PB3上启用开漏
  GPIO_PORTB_DEN_R |= 0x0C;// 5)在 PB2、3上启用数字 I/O

// 6)将 PB2、3配置为 I2C
  GPIO_PORTB_PCTL_R =(GPIO_PORTB_PCTL_R&0xFFFFFF)+ 0x00003300;
  GPIO_PORTB_AMSEL_R &=~0x0C;// 7)禁用 PB2、3上的模拟功能

  I2C0_SCSR_R |= 0x01;//启用从设备
  I2C0_Soar_R =(I2C0_Soar_R 和~0x7F)| 0x3C;// 9)从器件地址

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jessica:
    您会发现、如果您使用 Tivaware、此论坛上的反馈要快得快。 我是否可以建议您这样做? TI 鼓励开发人员避免使用直接注册。
    如果您只需将 i2c.h 包含在您的项目中并使用 Tivaware Driverlib 用户指南第16章中解释的函数、您就能够快速实现您的目标。
    此致
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好 Bruno

    感谢您对 DRM 降级的支持以及对 TivaWare 使用的支持...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Amit 和 Bruno、您好!

    虽然我知道您建议使用 TivaWare 的原因、但我更喜欢使用 DRM、因为我喜欢在较低的抽象层进行编程、并知道器件中正在发生什么。 即使如此、我也尝试了将 TivaWare 用于该项目、并遇到了一些问题。 似乎只有适当的文档可以将 TM4C123设置为主器件。 我已经查看了 TivaWare 中的 i2c.h 和其他示例、包括 slave_receive_int.c、它们都初始化了主器件。 我想将 TM4C123设置为与 Raspberry Pi 3配合使用的从设备、并且在尝试使用此代码时、其他设备无法识别它。 我已经阅读过 Tivaware Driverlib 用户指南和 TM4C123数据表几次、仍然遇到问题。

    但正如我说过的、对于这个项目、我想使用直接注册表。 数据表不是很清楚在将 TM4C123用作从器件时需要设置什么、并且由于某种原因、当我尝试写入寄存器时、这些位不会被设置。

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

    我们对 DRM 的支持极少(当然、我们可以帮助您过渡到 TivaWare)。 设置控制时、SCSR 是一个 WO 寄存器。 执行读操作时、寄存器返回的状态与控制模式的写路径特性不同。