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.

[参考译文] 编译器/CC2541:I2C 时钟设置

Guru**** 2539500 points
Other Parts Discussed in Thread: CC2541

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/564665/compiler-cc2541-i2c-clock-settings

器件型号:CC2541

工具/软件:TI C/C++编译器

您好!
借助 swrc257 >>软件示例、我们能够了解 i2c 与 cc2541的连接流程、并对使用 i2c 接口的 keyfobdemo 示例代码进行了如下更改

//>>在 KeyFobApp_Init 函数中
//在 CC2541上启用 I2C。
I2CWC &=~0x80;

//启用时钟速率为33kHz 的 I2C 模块。
//起始位向主器件发出信号。
I2CCFG =(I2CCFG 和~I2CCFG_CR)| I2CCFG_CR_DIV_960 | I2CCFG_ENS1 | I2CCFG_STA;

//启用全局中断
EA = 1;

//>>在 performPeriodicTask 函数中
//清除 I2C (P2) CPU 中断标志。 //添加 Idris
P2IF = 0;
//通过设置[IEN2.P2IE = 1]来启用来自 I2C 的中断。
IEN2 |= IEN2_P2IE;

//>>在 I2C_ISR 函数中
//清除 I2C CPU 中断标志。
P2IF = 0;

//如果发送了启动或重新启动条件...
IF (((I2CSTAT = 0x08 || I2CSTAT = 0x10))
{
//发送从机地址和 R/W 访问。
I2cData =(slave_address << 1)| WRITE_TO_SLAVE;
//结束启动条件。
I2CCFG &=~I2CCFG_STA;
}
//发送 I2C 字节
I2cData =值; //assigned value=0x01
//如果从机地址或数据字节已发送并已确认...
IF (I2CSTAT = 0x18 || I2CSTAT = 0x28)
{
//生成停止条件。
I2CCFG |= I2CCFG_STO;
//通过设置[IEN2.I2CIE = 0]来禁用来自 I2C 的中断。
IEN2 &=~IEN2_P2IE;
}
// I2CCFG.SI 标志必须在 ISR 结束时由软件清除。
I2CCFG &=~I2CCFG_SI;

但我们无法在示波器上看到时钟周期。
我们是否遗漏了什么??

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请帮帮我们。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Syed、
    请查看 SensorTag 项目、了解如何将 I2C 与 BLE 项目配合使用。 请查看 hal_i2c.c 中的实现