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/CC1352R:实现多个 I2C 主设备

Guru**** 2562120 points
Other Parts Discussed in Thread: SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/946875/ccs-cc1352r-realize-multiple-i2c-masters

器件型号:CC1352R
Thread 中讨论的其他器件:SysConfig

工具/软件:Code Composer Studio

HY、

如这里所述、我们还希望在一个系统中实现2个 I2C 总线。 我们以后只能使用它们是没有问题的。 在之前的系统中、我们通过两个 I2C 说明实现了该方案、在每个 I2C 开放软件上、将检查之前的调用是否正在寻址相同的 I2C、否则、它将使用不同的设置(即 SDA 和 SCL 的引脚)关闭并再次打开。

在当前项目中、我们使用最新的 CC1352 SDK 和 syscfg 进行系统配置。 在这种情况下、实现多个 I2C 的建议方法是什么? 在

ti\simplelink_cc13x2_26x2_sdk_4_20_00_35\sources\ti\ble5stack\hal\src\target\cc2650st\bsp_i2c.c

我找到了

void bspI2cAcquire (uint8_t newInterface、uint8_t address)
{
Semaphore_pend (semaphore_handle (&mutex)、BIOS_wait_forever);

slaveAddr = address;

// TBD:此概念是否适用于电源管理和 TI RTOS 样式驱动程序?
// 驾驶员是否应该被拆除并重新打开??
if (newInterface!= interface)
{ 

这种评论是什么意思? 我应该使用该代码还是自行实施?

此致

Harald

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

    您好 Harald、

    我要说的是、这里最简单的方法是使用两个描述符来执行您之前所做的操作。 当今的 SysConfig 不允许您设置同一硬件的2个实例、这意味着此处最简单的方法是仅定义驱动程序自己所需的结构。 所需信息并没有真正改变、只是生成信息的方式。

    至于注释(以及与其连接的代码)、它在理论上可以(或 CAN)工作、但这是一个风险性的举措、因为它可能会在 I2C 硬件拾取的线路上引入干扰。 如果您不幸运、它可能会将其解释为启动/停止条件、并且硬件最终处于不需要的状态。