微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI蓝牙设计交流 > cc2541 i2c 问题

cc2541 i2c 问题

时间:10-02 整理:3721RD 点击:

Hello,

     cc2541的i2c配置为master模式与从器件通讯。定时从器件中读取数据。i2c程序会出现运行到i2cMstStrt()函数的 

              while ((I2CCFG & I2C_SI) == 0);

     这句代码时一直没有返回。

    i2c的配置与初始化都是使用BLE-CC254x-1.3里面的代码。请问如何解决。

    谢谢。

roy

试一下这个帖子里的示例代码   http://e2e.ti.com/support/low_power_rf/f/538/t/172539.aspx

Hi Susan,

    连接里面的代码应该是多了作为slave模式的数据读写,而master模式的代码并没多少改变。

    其实在while循环哪里没有返回,会是什么原因造成呢?总线的start信号应该不需要slave的响应的,为什么I2C_SI这个标志位不改变呢?是不是i2c的中断被关闭了?

     谢谢。

roy

Hi,

    问题找到了,原来是i2c没有enable导致的。不明白为什么没有调用过i2c_disable命令,但i2c会无端关闭。现在每次操作前都enable一下就ok。

roy

这个问题我也遇到过,解决方法和你的一样,后来发现手册上是这样写的:

The I2C configuration and state is not retained in power modes PM2 and PM3. It must be reconfigured after coming out of sleep mode

没错,就是这个问题,把宏定义POWER_SAVING注释掉,就可以正常运行,可见是进入睡眠的问题

学习了!

请问如何enable IIC 模块?就是调用 HalI2CInit 函数?还是需要其他函数?我在定时器响应函数里面添加了

HalI2CInit(0x1c,i2cClock_123KHZ);
HalI2CWrite(1,&tx[index]);
HalI2CRead(1,&rx[index]); 但是还是卡在 i2cMstStrt 里面的第一个while那里。

我发现了一点有意思的地方我看driver api.pdf 里面HalI2CInit 是没有参数的,但是我找的这个驱动是有参数的,但是区别应该不大吧?

zhao,

     您好,请问你的问题解决了吗?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top