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.

[参考译文] LAUNCHXL-CC1352R1:I2C 配置

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

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/1334287/launchxl-cc1352r1-i2c-configuration

器件型号:LAUNCHXL-CC1352R1
主题中讨论的其他器件:SysConfig

大家好、我想使用 CC1352电路板和 OV7670摄像头配置 I2C 协议。 根据 I2C 基准、ı 编写了以下代码:

void i2cStart(){
//初始化 I2C 驱动器
I2C_init ();

//初始化 I2C 参数
I2C_Params_init (&i2cParams);
i2cParams.bitrate = I2C_400kHz;

//打开 I2C
i2cHandle = I2C_open (0、&i2cParams);
if (i2cHandle == NULL){
//处理 I2C 初始化错误
返回;

ı、我不 应该在 I2C_open 函数的第一个参数中写入什么。  

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

    Hi Musa,

    请查看我们 SDK 的 i2ctmp 示例以及文档: https://dev.ti.com/tirex/explore/content/simplelink_cc13xx_cc26xx_sdk_7_10_02_23/docs/drivers/doxygen/html/_i2_c_8h.html

    它展示了如何使用驱动程序和 SysConfig。

    此致、

    亚瑟

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

    我看着她的眼睛。 但是、我需要有关以下代码的一些帮助:

    //全局变量
    I2C_Handle i2cHandle;
    I2C_Params i2cParams;
    I2C_Transaction i2cTransaction ={0};
    void i2cStart()
    // I2C 驱动器的一次性初始化
    I2C_init ();
    //初始化可选的 I2C 总线参数
    I2C_Params_init (&i2cParams);
    i2cParams.bitrate = I2C_400kHz;
    //打开 I2C 总线以供使用
    i2cHandle = I2C_open (CC1352_I2C_Instance、&i2cParams);
    if (i2cHandle == NULL){
    //打开 I2C 时出错
    while (1){}

    在该函数中、  

    i2cHandle = I2C_open (CC1352_I2C_Instance、&i2cParams);

    此行会停止该函数、对于 CC1352_I2C_INSTALL = 0、此行不起作用、并且没有错误消息 CC1352_I2C_INSTALL = 0x19、它会转到 while 循环和 store。 我会逐步观察这一点。 如何找到 CC1352_I2C_Instance 的真实值?  

    另外、有没有 printf vs 函数在 CCS 上打印输出? system_printf()无法正常工作。

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

    Hi Musa,

    必须在 SysConfig 工具中定义该实例。 例如、如果您想保留与当前名称相同的名称、它将如下所示:

    打印效果开始时、您有多个选项、但您可以使用 Display.h 模块以及 Display_printf、正如我在该 E2E 主题中所做的那样:

    https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1333776/cc1312r-queue-unable-to-delete-element

    此致、

    亚瑟

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

    感谢回复,如图片中所示,我得到了这个错误。 如何解决该问题?

    提前感谢。

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

    Hi Musa,

    您可以查看生成的 SysConfig 文件、例如 ti_drivers_config.h:

    您能否仔细检查 SysConfig 生成的常数并在程序中使用该常数?  

    确保在构建之前保存 SysConfig 文件。

    此致、

    亚瑟

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

     我是 ti_drivers_config.h、无法解决问题。 我有2个 ti_drivers_config.c 文件、这是正常的吗?

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

    Hi Musa,

    这实际上是不正常的、至少来自一个默认示例。

      

    您是否可以删除不是由 SysConfig 生成的文件? 基本上、保留 Debug\syscfg 文件夹中的内容。

    此致、

    亚瑟

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

    //全局变量
    I2C_Handle i2cHandle;
    I2C_Params i2cParams;
    I2C_Transaction i2cTransaction ={0};
    void i2cStart()
      // I2C 驱动器的一次性初始化
      I2C_init ();
      //初始化可选的 I2C 总线参数
      I2C_Params_init (&i2cParams);
      i2cParams.bitrate = I2C_400kHz;
      //打开 I2C 总线以供使用
      i2cHandle = I2C_open (CC1352_IC2_instance_const、&i2cParams);
      if (i2cHandle == NULL){
        //打开 I2C 时出错
        while (1){}
      }

    通过逐步观察,代码停留在行:  i2cHandle = I2C_OPEN(CC1352_IC2_Instance_const,&i2cParams);

    ı 怎么能解决这个问题,即使它没有返回 NULL?  这是因为函数,还是应该是全局变量?  

    我真的很感谢你能提供的任何帮助。

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

    器件型号:LAUNCHXL-CC1352R1

    大家好、我想使用 I2C 协议将摄像头(OV7670)连接到器件。 在我的源文件中,我写了一个这样的函数:  

    void deviceInit (void){

      I2C_init ();
      //初始化可选的 I2C 总线参数
      I2C_Params_init (&i2cParams);
      i2cParams.bitrate = I2C_400kHz;
      //打开 I2C 总线以供使用
      i2cHandle = I2C_open (CC1352_IC2_instance_const、&i2cParams);
      if (i2cHandle == NULL){
      //打开 I2C 时出错
        while (1){}
      }

    当我单步执行代码时,它停止在这一行:  i2cHandle = I2C_OPEN(CC1352_IC2_Instance_const,&i2cParams);

    它甚至没有返回 NULL。  

    //全局变量
    I2C_Handle i2cHandle;
    I2C_Params i2cParams;
    I2C_Transaction i2cTransaction ={0};

    我也在源文件中创建了这些变量。

    我该如何解决这个问题并使连接工作,任何建议都会被接受。

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

    Hi Musa,  

    我加入这两个线程、似乎是指相同的问题。  

    请问、您的项目起点是什么?  

    Arthur 参考的是 i2ctmp 示例、因为它设置了使 i2c 驱动程序正常工作所需的一切。

    如果您要使用其他一些工程作为起点、是否在 SysConfig 上启用了 i2c?  

    此致、

    SID

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

    您好、很抱歉这么晚才回复、如果我理解正确、我的起点是  i2ctmp 示例。 我必须在器件和 OV7670摄像头模块之间设置 I2C 连接。   由于没有找到示例工程、因此我唯一的引用是  i2ctmp 示例。  

    我 在 SysConfig 上启用了 i2c。

    从我的上一个问题中你可以理解到、Arthur 的回答解决了一些与配置有关的问题、然而、我仍然被困在代码部分上。

    欢迎提供任何建议或反馈。