关于CC2541的硬件I2C
- TI的hal库已经写好了相关的驱动,不需要自己硬着头皮去看数据手册了,hal_i2c.c文件存放路径是:C:\Texas Instruments\BLE-CC254x-1.4.2.2\Components\hal\target\CC2541ARC,这个文件夹里的hal_i2c.c包含了主和从的驱动。
- 硬件I2C只有CC2541才具备,CC2540用usb控制器取代了I2C。
- hal_i2c.h头默认初始化的是slave,需要在宏定义里把HAL_I2C_MASTER改为TRUE
#if !defined HAL_I2C_MASTER
#define HAL_I2C_MASTER FALSE
#endif
#if !defined HAL_I2C_SLAVE
#if HAL_I2C_MASTER
#define HAL_I2C_SLAVE FALSE
#else
#define HAL_I2C_SLAVE TRUE
#endif
#endif
- 工程的预处理器需要添加HAL_I2C=TRUE,编译的时候需要这个宏,不加也行,把头里无关宏删除干净就行。
- 初始化为master设备时不需要写地址寄存器I2CADDR,这是从设备或者多主机时候才用的,无需理会。因此初始化函数只需要传入时钟参数。
HalI2CInit(i2cClock_267KHZ);
- 读函数说明,应答是由硬件自动控制的,库函数仅实现了从零地址寄存器开始读取的方法——START、写器件地址|方向读、写buffer数据、STOP。无法完成指定寄存器地址读取,需要自己实现。