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.

[参考译文] TM4C123GH6PM:使用板对板和存储器的 SPI 和 I2C 通信相关主题

Guru**** 2522140 points
Other Parts Discussed in Thread: TM4C123GH6PM

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1331162/tm4c123gh6pm-spi-and-i2c-communication-using-board-to-board-and-memory-related-topic

器件型号:TM4C123GH6PM

大家好!

 我对 Tiva C 系列 TM4c123gh6pm 有一定的怀疑

1.进行板对板通信时、应该选择中断方式或者轮询方式。 这是更好的、为什么会这样。
2.在使用 I2C 协议进行板对板操作时,我设计了一个如下的函数。

void I2C1_Write_byte (int slave_address、unsigned char slave_memory_address、unsigned char 数据);


int I2C1_READ_BYTE (int slave_address、unsigned char slave_memory_address);

在进行板对板操作时、我不知道要使用哪个参数来代替 SLAVE_MEMORY_ADDRESS。 代码完美地工作从板,但板对板,我不知道。 尝试在2个 Tiva C 系列板之间进行通信时需要注意哪些事项。  

3、关于我所附的图像。 读取寄存器和写入寄存器都在同一位置、具有相同的存储器偏移量。 它的内部工作方式。 处理器如何知道我使用的寄存器是读取/写入寄存器。

如果有什么微不足道的东西,请提前原谅我! 不管怎样、我很想知道答案。

谢谢。此

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

    您好!

      

    您好!

     抱歉、我目前正在旅行。 我将在下星期一回复您。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Unknown 说:
    1. 在进行板对板通信时、应使用中断方法或轮询方法。 这是更好的、为什么会这样。
    [/报价]

    您好!

     这实际上取决于您的应用程序的复杂性。 如果唯一的应用仅是 I2C 发送/接收、则轮询可能就足够了。 请看一下 C:\ti\TivaWare_C_Series-2.2.0.295\examples\boards\ek-tm4c123gxl-boostxl-sensub\HUMIDITY_sht21_Simple 中的此示例。 这个使用轮询。 如果你有一个同时进行很多操作的复杂应用、那么我建议你使用中断。

    [报价 userid="596474" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1331162/tm4c123gh6pm-spi-and-i2c-communication-using-board-to-board-and-memory-related-topic "]

    2.在使用 I2C 协议进行板对板操作时,我设计了一个如下的函数。

    void I2C1_Write_byte (int slave_address、unsigned char slave_memory_address、unsigned char 数据);


    int I2C1_READ_BYTE (int slave_address、unsigned char slave_memory_address);

    在进行板对板操作时、我不知道要使用哪个参数来代替 SLAVE_MEMORY_ADDRESS。 代码完美地工作从板,但板对板,我不知道。 尝试在2个 Tiva C 系列板之间进行通信时需要注意哪些事项。  

    [/报价]

    您需要阅读从器件数据表、了解要通过的 SLAVE_MEMORY_ADDRESS。 自定义函数的第一个参数是标识要与之通信的从器件的地址。 例如、I2C 总线上可能有10个 I2C 器件。 slave_address 指示要与哪个设备进行通信。 如果器件是存储器件、则需要提供要访问的存储器位置。 假设您要写入0x100处的存储器位置、然后为 slave_memory_address 输入该值。 同样、您需要阅读从器件数据表、以了解如何读取或写入特定地址。  

    。 附加的图像的相关问题。 读取寄存器和写入寄存器都在同一位置、具有相同的存储器偏移量。 它的内部工作方式。 处理器如何知道我使用的寄存器是读取/写入寄存器。
    [/报价]

    读和写共用同一个寄存器。 在内部、地址解码器将考虑 R/W 信号、以了解处理器是在写入还是读取寄存器。  

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

    "您需要阅读从器件数据表、了解要通过的 SLAVE_MEMORY_ADDRESS。  "

    先生,

     正如我提到过的、从器件是另一个 Tiva C 系列板。 所有寄存器都是32位。 因此、我不知道如何处理此从器件存储器地址? 我将看看您所说的示例。

    谢谢!