Thread 中讨论的其他器件:SysConfig、 CC3220SF、 DRV8850
您好!
在我的设计中、我使用2个 PWM 和 I2C 主设备。
I2C 和 PWM 均按预期单独工作。 当我启用第二个 PWM 时出现问题。
在我为 第二个 PWM 调用 PWM_open()后, I2C_open()成功返回,但 I2C_transfer()总是失败返回。
在调用 PWM_OPEN ()和 I2C_TRANSFERT()后、我探测 I2C 引脚上没有任何活动。
我感觉 PWM 会以某种方式干扰其引脚配置的 I2C 寄存器。
下面是我的设置:
引脚16 - SCL
PIN17--SDA
PIN2-IN1H 在该引脚上启用 PWM 会导致此问题。
PIN64--IN2H
在寄存器视图中进行调试时、我将会看到它。 我无法读取寄存器。
我使用的是较旧版本的 SimpleLink SDK、而不是 SysConfig。
下面是 CC3220SF_LAUNCHXL.c 和 CC3220SF_LAUNCHXL.h 文件中引脚的配置。
/*
*========================================= 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_16_I2C_SCL、
.dataPin = I2CCC32XX_PIN_17_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;
/*
*========================================= PWM ================================================
*
#include
#include
#define CONFIG_PWM_COUNT 2.
/*
*==== pwmTimerCC32XX 对象===
*
PWMTimerCC32XX_Object pwmTimerCC32XX 对象[CONFIG_PWM_COUNT];
/*
*==== pwmTimerCC32XXHWAttrs ===
*
CONST PWMTimerCC32XX_HWAttrsV2 pwmTimerCC32XXHWAttrs[CONFIG_PWM_COUNT]={
/* IN1H */
{
pwmPin = PWMTimerCC32XX_PIN_02、//
}、
/* IN2H */
{
pwmPin = PWMTimerCC32XX_PIN_64、/* 64 */
}、
};
/*
*==== PWM_CONFIG ===
*
CONST PWM_Config PWM_CONFIG[CONFIG_PWM_COUNT]={
/* IN1H */
{
.fxnTablePtr =&PWMTimerCC32XX_fxnTable、
.object =&pwmTimerCC32XX 对象[IN1H]、
hwAttrs =&pwmTimerCC32XXXHWAttrs[IN1H]
}、
/* IN2H */
{
.fxnTablePtr =&PWMTimerCC32XX_fxnTable、
.object =&pwmTimerCC32XX 对象[IN2H]、
hwAttrs =&pwmTimerCC32XXXHWAttrs[IN2H]
}、
};
const uint_least8_t IN1H_const = IN1H;
const uint_least8_t IN2H_const = IN2H;
const uint_least8_t PWM_count = CONFIG_PWM_COUNT;
/*!
*@def CC3220SF_LAUNCHXL_I2CName
*@CC3220SF_LAUNCHXL 开发板上 I2C 名称的简要枚举
*
typedef 枚举 CC3220SF_LAUNCHXL_I2CName{
CC3220SF_LAUNCHXL_I2C0 = 0、
CC3220SF_LAUNCHXL_I2CCOUNT
}CC3220SF_LAUNCHXL_I2CName;
/*!
*@def CC3220SF_LAUNCHXL_PWMName
*@CC3220SF_LAUNCHXL 开发板上 PWM 名称的简要枚举
*
typedef enum CC3220SF_LAUNCHXL_PWMName{
IN1H = 0、
IN2H、
CC3220SF_LAUNCHXL_PWMCOUNT
}CC3220SF_LAUNCHXL_PWMName;