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.

[参考译文] RTOS/CC2650:I2C 数据速率和解锁

Guru**** 2553450 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/573433/rtos-cc2650-i2c-data-rate-and-unblocking

器件型号:CC2650

工具/软件:TI-RTOS

大家好、这是我第一次尝试固件、所以请耐心等待。  

在文件 SensorTagApp bsp_i2c.c 中、i2cParams 似乎有两种不同的初始化。 首先、在 bspI2cInit 中、我们有 i2cParams.bitrate = I2C_400kHz。 其次、在 bspI2cSelect 中、我们将 i2cParams.bitrate 设置为默认 I2C_100kHz。 为什么有两种不同的比特率、这两种不同的比特率用于什么? 就我所说的、唯一重要的是第二个、因为所有读取实际数据的调用都使用 sensor_select。 以不同的方式设置比特率的目的是什么?  

2.如何设置从 mpu9250 FIFO 的非阻塞式读操作? 以下对 bspI2cSelect 的修改是否有效? 我认为  在  可能建议使用信标进行更好的回调、但我不够详细地理解这一建议。  

提前感谢!  

Allan  

 

 

volatile bool lastI2cResult = false;
void myI2C_Callback (I2C_Handle foo、I2CTransaction* bar、bool status)
{
lastI2cResult = status;
}
bool getI2cResult()
{
bool ret = lastI2cResult;
lastI2cResult = false;
返回 lastI2cResult;
}
bool bspI2cSelectNonBlocking (uint8_t newInterface、uint8_t address)
{ 
------------------ 未粘贴的代码------------------------------------------------------- if (newInterface!= interface) {
------------------ 未粘贴的代码-------------------------------------------------------
//将定制设置为 NULL,选择 I2C 接口0
I2C_Params_init (&i2cParams);
//修改比特率和非阻塞
i2cParams.bitrate = I2C_400kHz;
i2cParams.transferMode = I2C_MODE_CALLACK;
i2cParams.transferCallbackFxn = myI2C_Callback;
------------------ 未粘贴的代码------------------------------------------------------- 
}
返回 i2cHandle != NULL;
}

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

    您好!

    我建议您直接使用 TI-RTOS I2C 驱动程序。

    您可以在 C:\ti_tirtos_cc13xx_cc26xx_2_20_01_08\products\tidrivers_cc13xx_cc26xx_2_20_01_10\packages/ti\drivers\I2C.h 中找到有关如何使用 I2C 驱动程序的详细信息

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

    您好、Allan、

    我将尝试回答您的问题。 I2C 总线支持两种 Vlock 速度(100 KHz 或400 KHz)、您需要根据传感器选择要使用的速度、您需要在传感器数据表中搜索该信息。  

    如果您调试程序、您可以检查位速率是否更改为400KHz。 如果您想更好地了解函数的功能、请阅读库(I2CCC26XX.h、I2C.h 等)中的示例。

    I2C_Params_init (&i2cParams);
    //修改比特率和非阻塞
    i2cParams.bitrate = I2C_400kHz; 



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

    您好、Miguel、Christin。

    感谢您的回复。 根据你的建议,我想重新拟订我的问题1。

    我的观察结果是 sensorTag 有两个 i2c 总线。 总线#0最初被设定为400kHz、但是一旦 MPU9250在总线#1上被访问、两个总线被设定为100kHz。 我的问题是、这是故意完成的、还是错误(监督)。  

    谢谢!  
    Allan  

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

    您提到的代码已过时。 请下载 BLE SDK 2.2.1以获取最新版本(ti.com/blestack)。 安装后、您可以在 SensorI2C.. c 中找到相关代码