请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC3220MOD 主题中讨论的其他器件:CC3220SF
您好!
我在自己的应用中使用 CC3220MODSF、I2C 接口连接到外部实时时钟。
使用以下设置:
接下来的两个文件是使用 Pinmux V4工具生成的
CC3220SF_LAUNCHXL.h:
/*! *@def CC3220SF_LAUNCHXL_I2CName *@CC3220SF_LAUNCHXL 开发板上 I2C 名称的简短枚举 */ typedef enum CC3220SF_LAUNCHXL_I2CName{ CC3220SF_LAUNCHXL_I2C0 = 0、 CC3220SF_LAUNCHXL_I2CCOUNT }CC3220SF_LAUNCHXL_I2CName;
CC3220SF_LAUNCHXL.c:
/* ================================================ I2C ================================================ */ #include #include I2CCC32XX_Object i2cCC3220SObjects[CC3220SF_LAUNCHXL_I2CCOUNT; const I2CCC32XX_HWAttrsV1 i2cCC3220SHWAttrs[CC3220SF_LAUNCHXL_I2CCOUNT ={ { baseAddr = I2CA0_BASE、 .intNum = INT_I2CA0、 .intPriority =(~0)、 clkPin = I2CCC32XX_PIN_03_I2C_SCL、 .dataPin = I2CCC32XX_PIN_04_I2C_SDA } }; const I2C_Config I2C_CONFIG[CC3220SF_LAUNCHXL_I2CCOUNT ={ { .fxnTablePtr =&I2CCC32XX_fxnTable、 .object =&i2cCC3220SObjects[CC3220SF_LAUNCHXL_I2C0]、 hwAttrs =&i2cCC3220SHWAttrs[CC3220SF_LAUNCHXL_I2C0] } }; const uint_least8_t I2C_count = CC3220SF_LAUNCHXL_I2CCOUNT;
main.c
//...
void main() { Board_initGeneral(); Board_initI2C(); //其他内容... I2C_Handle I2C; I2C_Params i2cParams; I2C_Transaction i2cTransaction; uint8_t TX[10]; uint8_t RX[10]={0}; I2C_Params_init (&i2cParams); i2cParams.bitrate = I2C_400kHz; i2cParams.transferMode = I2C_MODE_BLOCKING; I2C = I2C_open (Board_I2C0、&i2cParams); if (!i2c) { 报告("初始化 I26\r\n"\n 时出错"); } 其他 { int n = 0; while (1){ uint8_t stop[]={0x2E、0x01}; i2cTransaction.slaveAddress = 0xA2; i2cTransaction.writeBuf =停止; i2cTransaction.writeCount = 2; i2cTransaction.readBuf = 0; i2cTransaction.ReadCount = 0; 报告("%d\r\n"、I2C_transfer (i2c、&i2cTransaction)); } }
但是、无论 slaveAddress 是什么、传输的数据是什么或尝试读出的数据、我都会在 SCL (黄色)和 SDA (绿色)线路上得到这种行为、
并且 I2C_transfer 始终返回0 (false)。
出什么问题了?
此致
Jorg
