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/CC1350:cc1350

Guru**** 2391415 points
Other Parts Discussed in Thread: CC1350

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/789735/ccs-cc1350-cc1350

器件型号:CC1350

工具/软件:Code Composer Studio

我需要在 cc1350上快速实施 I2C 从设备。

不过、I2C 驱动程序似乎仅针对主设备情况编写。

是否有任何用于 I2C 从设备快速实现的示例/驱动程序。

感谢你的帮助

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

    转至此页面:
    dev.ti.com/.../
    然后选择"API ->外设->"[i2c.h]..."
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、Tomasz、

    感谢您的回答。
    根据您的建议、我尝试配置 I2C 从器件、该从器件会将数据字节传输到主器件(例如 TI 驱动程序示例中的 i2ctmp007)。

    这是短代码。 它仍然不工作。 此外、如果在 debugf 模式下、寄存器 sctl 不会根据下面的程序行被更改为0x00001、这不允许启用 I2C 从器件。
    请尽可能提供建议。

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    I2C_init();

    //////////// I2C 时钟////////////////////////////////////////////////////////////////////////////////////////////////////////////
    IOCPortConfigureSet (IOID_4、IOC_PORT_MCU_I2C_MSSCL、IOC_STD_INPUT);
    ////////// I2C 数据//////////////////////////////////////////////////////////////////////
    IOCPortConfigureSet (IOID_5、IOC_PORT_MCU_I2C_MSSDA、IOC_STD_INPUT);

    PRCMPeripheralRunEnable (PRCM_Periph_I2C0);
    PRCMLoadSet();
    PRCMPeripheralSlepEnable (PRCM_Periph_I2C0);
    PRCMLoadSet();
    PRCMPeripheralDeepSlepEnable (PRCM_Periph_I2C0);
    PRCMLoadSet();


    ///为 I2C 模块加电///
    POWER_setDependency (7);

    ////////////////// 启用 I2C 从设备//////////////////////////////////////////////////////////////////////////////////////////////////////////
    I2CSlaveEnable (I2C0_BASE);

    //////////////////// 设置地址//////////////////////////////////////////////////////////////////////////////////////////////
    I2CSlaveAddressSet (I2C0_BASE、0x0a);

    //////////////////////// 设置要传输的数据字节////////////////////////////////////////////////////////////////////////
    I2CSlaveDataPut (I2C0_BASE、0x55);

    //////////////////////////// 启用 sctl 寄存器的 DA 控制位-不起作用!!!!! ////////////////////////
    HWREG (I2C0_BASE + I2C_O_SCTL)=0x00000001;

    ////////////////// 循环、直到我们看到主器件发出传输数据请求- GET OUT/////////////
    while (I2CSlaveStatus (I2C0_BASE)!= I2C_SLAVE_ACT_TREQ);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Boris、

    您是否启用了从器件模块的时钟?

    HWREGBITW (I2C0_BASE + I2C_O_MCR、I2C_MCR_SFE_BITN)= 1; 

    参考:

    http://dev.ti.com/tirex/content/simplelink_cc13x0_sdk_3_10_00_11/docs/driverlib_cc13xx_cc26xx/cc13x0/driverlib/group__i2c__api.html#ga7e4e0a642688a64cc028219445156854

    此致、

    R.M.

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    问题似乎是在强化某种域并设置一些奇怪的限制。
    此外、引脚应配置为开漏。
    当然、如果您提供示例会更好、因为挖掘如此小的细节需要花费太多时间。

    PRCMPowerDomainOn (PRCM_DOMAIN_PERIPh);

    POWER_setDependency (PowerCC26XX_Periph_I2C0);
    //设置电源可靠性和限制
    Power_setDependency (PowerCC26XX_Periph_GPIO);

    /*设置待机、断电和空闲模式的限制*/
    power_setConstraint (PowerCC26XX_SB_disallow);
    power_setConstraint (PowerCC26XX_IDLE_PD_Disallow);

    PRCMLoadSet();
    PRCMPeripheralRunEnable (PRCM_Periph_I2C0);//启用 I2C 模块
    PRCMPeripheralRunEnable (PRCM_Periph_GPIO);
    PRCMLoadSet();

    此致
    Boris