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.

[参考译文] CCS/EK-TM4C123GXL:TMP007 I2C 与 TM4C123GXL 连接

Guru**** 2337880 points
Other Parts Discussed in Thread: TMP006, EK-TM4C123GXL, CC2640R2F
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/718293/ccs-ek-tm4c123gxl-tmp007-i2c-connection-with-tm4c123gxl

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

工具/软件:Code Composer Studio

你好! 我目前正在使用 Tiva C 系列板(型号:EK-TM4C123GXL) 、并借助 Code Composer 版本7.4将其与传感器 Booster Pack (BOOSTXL-SENSORS)连接。 我使用 的是资源浏览器中 TM4C123GXL=>I2C Examples=>TMP006的示例代码。 我已经修改了引脚配置以满足 Booster Pack 和电路板的要求、但我没有从串行端口获得任何数据输出。 我使用的串行端口是 Putty。   

此外,还有其它传感器的 API,例如惯性传感器

谢谢

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

    我不确定 TM4C123GXL=>I2C Examples=>TMP006代码是否适用于 BOOSTXL-SENSORS 的 TMP007。 但是、请尝试在下面更改它、看看它是否起作用。 下面的内容来自以下示例程序"C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c1294xl-bootstxl-senshub\temperature_tmp006"

    #define TMP006_I2C_ADDRESS 0x41

    更改为

    #define TMP007_I2C_ADDRESS 0x40

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

    您好 Jeff、

    请告诉我 Markel 的想法是否适用于 I2C 地址。

    关于此查询:

    [引用 user="Jeff Chris "]此外,还有其他传感器的 API,例如惯性传感器

    我们唯一具有示例代码的惯性传感器是 MPU9150、它是一个9轴加速计/陀螺仪。

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

    I2C 的"读取与写入"是否不需要(最低有效位)切换(Markel 的0x41与0x40)?

    如果事实证明-'displayerent I2C devices'的地址-相隔一个 lsb -无法成功!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、

    TMP006信息很难找到、但 DS 中的器件地址被指定为"1000XXX"、即7位、并且会内联、0x40和0x41都是有效地址。 因此、我假设 API 会将地址移动1以指示读取与写入(尽管我无法说我有时间对此进行交叉检查)。 在任何情况下、0x40和0x41都是有效地址、我认为 Markel 有一些信息我缺少、因为 TI 已将 BOOSTXL-SENSORS 数据表完全从网站上删除、使我对其机密视而不见。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我只建议使用0x40地址、因为这是在 CC2640R2F Launchpad 的 TMP007示例程序中定义的地址。 稍后我将详细介绍如何使 BOOSTXL-SENSORS 上的 TMP007适用于 TM4C Launchpad。

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

    谢谢、Ralph。   可能是我不是单独的、因为(通常)我在'SHIFTED I2C'地址的(时序)中"感到不舒服"。   (即、地址是否为所有 I2C 供应商引用的(始终)"提前"–并且"保留"?)

    例如-使用 Markel's (早期)的第一个地址值:  

    • 0x40 -当向左移位(一次)时产生0x80。   (这是 I2C 器件写操作)
    • 当 MCU 希望"读取"该器件时-它发出0x81

    和 Markel 的第二个地址:

    • 0x41-当向左移位(一次)时产生0x82。   (这也是 I2C 器件写入-并且与上面的地址(0x80)不同... 因此证明"合法"。)
    •  当 MCU 希望"读取" 该器件时-它发出0x83。  (再次避免冲突)

    获取 I2C 从器件的地址"正确"-这需要了解从器件(以及 MCU 的"该地址的处理")-这是一个经常出现在这里的问题-当 I2C 通信失败时...

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

    您好 CB1、

    我不想肯定这是否是 I2C 供应商的标准、但我继续寻找使用 TivaWare 中从地址的 API:

    void
    I2CMasterSlaveAddrSet (uint32_t ui32Base、uint8_t ui8SlaveAddr、
    bool bReceive)
    {
    //
    //检查参数。
    //
    assert (_I2CBaseValid (ui32Base));
    assert (!(ui8SlaveAddr & 0x80));
    
    //
    //设置主设备将与之通信的从设备的地址。
    //
    HWREG (ui32Base + I2C_O_MSA)=(ui8SlaveAddr << 1)| bReceive;
    } 

    因此、更改7位地址声明不会指示读取与写入的变化(这正是我所期望的、因为您通常不会只执行读取或只执行写入)。

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

    temperature_tmp006示例程序用于 EK-TM4C123GXL + BOOSTXL-SENSHUB。 如果要将此用作与 BOOSTXL-SENSORS 进行通信的基本程序、则需要更改 TEMP_INT 示例程序中使用的 I2C 引脚和 TMP_INT。 使用 Booster Pack Checker 工具检查 BOOSTXL-SENSHUB 和 BOOSTXL-SENSORS 引脚排列之间的差异。

    dev.ti.com/.../

    此外、我建议您使用 MSP432 SDK 中的 tmp007代码库、该代码库可在 C:\ti\simplelink_msp432p4_sdk_1_60_00_12\examples\nortos\MSP_EXP432P401R\demos\boostxl_sensorgui_msp432p401r\r 中找到

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

    您好 Ralph、

    您刚才提供的 API 代码'I2CMasterSlaveAddrSet()'揭示了以下内容:

    • 7位 I2CSlave 地址"左移一次"
    • 该移位会"释放" 'ui8SlaveAddr'的 lsb 以接收'bReceive' (读操作为'1'、写操作为'0')

    我之前的文章-描述了该过程:

    例如-使用 Markel's (早期)的第一个地址值:  

    • 0x40 -当向左移位(一次)时产生 0x80。   (这是 I2C 器件写操作)
    • 当 MCU 希望"读取"该器件时-它发出 0x81

    与 API "完全"兼容!   (对于 I2C 读取、单次"left shift"和"OR"输入"1"、对于 I2C 写入、均为"0"。)

    我已经检查了我们公司(其他3家 ARM MCU 供应商中的2家)的 I2C 管理-(或之前的移位)实际上是重复的...