请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号: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;
但我们无法在示波器上看到时钟周期。
我们是否遗漏了什么??