cc2541 I2C SCL/SDA 这2个引脚怎么配置成普通的i/o口使用,如果配置成普通的i/o口使用,怎么个用法呢。
配好了会不会像操作P0_1 = 1; 这种操作方式来操作引脚的高低电压呢?
我的本意是想将 cc2541 硬件i2c 换成软件i2c来做,硬件i2c不知道为什么就是不能工作。
Viki Shi:
论坛有类似问题,解答请看这边:http://www.deyisupport.com/question_answer/wireless_connectivity/f/45/t/23777.aspx
Yan:
ming,
可以当成普通GPIO用。你去user guide里面搜索一下 20.1.8 章,会告诉你怎么配置寄存器,关闭I2C,然后配置成GPIO。
硬件I2C如何工作,你可以看一下sensorTag的例程。
ming li17:
回复 Yan:
谢谢 YAN的回复,希望能帮我再看下
void i2c_Init(i2cClock_t clockRate){ I2CWC = 0x00;I2CADDR = 0;I2CCFG &= ~I2C_CLOCK_MASK;I2CCFG |= clockRate;I2CCFG |= (I2C_ENS1);}
uint8 I2C_write(uint8 mcmd){
I2CDATA = (mcmd); I2CCFG &= ~I2C_SI; while ((I2CCFG & I2C_SI) == 0);
}
uint8 I2C_Start(){I2CCFG &= ~I2C_SI; I2CCFG |= I2C_STA; while ((I2CCFG & I2C_SI) == 0); I2CCFG &= ~I2C_STA;I2C_write(0x78);
}
void I2C_Stop(){I2CCFG |= I2C_STO; I2CCFG &= ~I2C_SI; while ((I2CCFG & I2C_STO) != 0);}
void Write_Command(uint8 Data){I2C_Start();I2C_write(0x00);I2C_write(Data);I2C_Stop();}
void Write_Data(uint8 Data){I2C_Start();I2C_write(0x40);I2C_write(Data);I2C_Stop();}
这是我将oled作为slave的 i2c代码,slave地址是0x78,能不能帮我看看是否有问题,这是我参照 sensirTag 的代码,改的。拜托了!!