Part Number: CC2640R2F
Tool/software: TI-RTOS
Hi,
I'm using Sable-x R2 (CC2640R2F 5XD) with simplelink_cc2640r2_sdk_1_50_00_58 SDK. I'm trying to use SPP peripheral and ADC with DMA at the same time. When i call ADCBuf_init() function, debug hangs. My ADC configuration is like:
#define ADCBUFFERSIZE (100)
/*!
* @def CC2640R2_LAUNCHXL_GPTimerName
* @brief Enum of GPTimer parts
*/
typedef enum CC2640R2_LAUNCHXL_GPTimerName {
CC2640R2_LAUNCHXL_GPTIMER0A = 0,
CC2640R2_LAUNCHXL_GPTIMER0B,
CC2640R2_LAUNCHXL_GPTIMER1A,
CC2640R2_LAUNCHXL_GPTIMER1B,
CC2640R2_LAUNCHXL_GPTIMER2A,
CC2640R2_LAUNCHXL_GPTIMER2B,
CC2640R2_LAUNCHXL_GPTIMER3A,
CC2640R2_LAUNCHXL_GPTIMER3B,
CC2640R2_LAUNCHXL_GPTIMERPARTSCOUNT
} CC2640R2_LAUNCHXL_GPTimerName;
/*!
* @def CC2640R2_LAUNCHXL_GPTimers
* @brief Enum of GPTimers
*/
typedef enum CC2640R2_LAUNCHXL_GPTimers {
CC2640R2_LAUNCHXL_GPTIMER0 = 0,
CC2640R2_LAUNCHXL_GPTIMER1,
CC2640R2_LAUNCHXL_GPTIMER2,
CC2640R2_LAUNCHXL_GPTIMER3,
CC2640R2_LAUNCHXL_GPTIMERCOUNT
} CC2640R2_LAUNCHXL_GPTimers;
uint16_t sampleBufferOne[ADCBUFFERSIZE];
uint16_t sampleBufferTwo[ADCBUFFERSIZE];
uint32_t microVoltBuffer[ADCBUFFERSIZE];
uint32_t buffersCompletedCounter = 0;
#define BOARD_ADCCOUNT 4
/*
* =============================== ADCBuf ===============================
*/
ADCBufCC26XX_Object adcBufCC26xxObjects[1];
/*
* This table converts a virtual adc channel into a dio and internal analogue
* input signal. This table is necessary for the functioning of the adcBuf
* driver. Comment out unused entries to save flash. Dio and internal signal
* pairs are hardwired. Do not remap them in the table. You may reorder entire
* entries. The mapping of dio and internal signals is package dependent.
*/
const ADCBufCC26XX_AdcChannelLutEntry ADCBufCC26XX_adcChannelLut[BOARD_ADCCOUNT] = {
{IOID_8, ADC_COMPB_IN_AUXIO6},
{IOID_9, ADC_COMPB_IN_AUXIO5},
{IOID_10, ADC_COMPB_IN_AUXIO4},
{IOID_11, ADC_COMPB_IN_AUXIO3}
};
const ADCBufCC26XX_HWAttrs adcBufCC26xxHWAttrs[1] = {
{
.intPriority = ~0,
.swiPriority = 0,
.adcChannelLut = ADCBufCC26XX_adcChannelLut,
.gpTimerUnit = CC2640R2_LAUNCHXL_GPTIMER0A,
.gptDMAChannelMask = 1 << UDMA_CHAN_TIMER0_A,
}
};
const ADCBuf_Config ADCBuf_config[1] = {
{
&ADCBufCC26XX_fxnTable,
&adcBufCC26xxObjects[0],
&adcBufCC26xxHWAttrs[0]
}
};
const uint_least8_t ADCBuf_count = BOARD_ADCCOUNT;
/*
* =============================== ADC ===============================
*/
ADCCC26XX_Object adcCC26xxObjects[BOARD_ADCCOUNT];
const ADCCC26XX_HWAttrs adcCC26xxHWAttrs[BOARD_ADCCOUNT] = {
{
.adcDIO = IOID_8,
.adcCompBInput = ADC_COMPB_IN_AUXIO6,
.refSource = ADCCC26XX_FIXED_REFERENCE,
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
.inputScalingEnabled = true,
.triggerSource = ADCCC26XX_TRIGGER_MANUAL,
.returnAdjustedVal = false
},
{
.adcDIO = IOID_9,
.adcCompBInput = ADC_COMPB_IN_AUXIO5,
.refSource = ADCCC26XX_FIXED_REFERENCE,
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
.inputScalingEnabled = true,
.triggerSource = ADCCC26XX_TRIGGER_MANUAL,
.returnAdjustedVal = false
},
{
.adcDIO = IOID_10,
.adcCompBInput = ADC_COMPB_IN_AUXIO4,
.refSource = ADCCC26XX_FIXED_REFERENCE,
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
.inputScalingEnabled = true,
.triggerSource = ADCCC26XX_TRIGGER_MANUAL,
.returnAdjustedVal = false
},
{
.adcDIO = IOID_11,
.adcCompBInput = ADC_COMPB_IN_AUXIO3,
.refSource = ADCCC26XX_FIXED_REFERENCE,
.samplingDuration = ADCCC26XX_SAMPLING_DURATION_2P7_US,
.inputScalingEnabled = true,
.triggerSource = ADCCC26XX_TRIGGER_MANUAL,
.returnAdjustedVal = false
}
};
const ADC_Config ADC_config[BOARD_ADCCOUNT] = {
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[0], &adcCC26xxHWAttrs[0]},
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[1], &adcCC26xxHWAttrs[1]},
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[2], &adcCC26xxHWAttrs[2]},
{&ADCCC26XX_fxnTable, &adcCC26xxObjects[3], &adcCC26xxHWAttrs[3]},
};
const uint_least8_t ADC_count = BOARD_ADCCOUNT;
/*
* =============================== GPTimer ===============================
* Remove unused entries to reduce flash usage both in Board.c and Board.h
*/
GPTimerCC26XX_Object gptimerCC26XXObjects[CC2640R2_LAUNCHXL_GPTIMERCOUNT];
const GPTimerCC26XX_HWAttrs gptimerCC26xxHWAttrs[CC2640R2_LAUNCHXL_GPTIMERPARTSCOUNT] = {
{ .baseAddr = GPT0_BASE, .intNum = INT_GPT0A, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT0, .pinMux = GPT_PIN_0A, },
{ .baseAddr = GPT0_BASE, .intNum = INT_GPT0B, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT0, .pinMux = GPT_PIN_0B, },
{ .baseAddr = GPT1_BASE, .intNum = INT_GPT1A, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT1, .pinMux = GPT_PIN_1A, },
{ .baseAddr = GPT1_BASE, .intNum = INT_GPT1B, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT1, .pinMux = GPT_PIN_1B, },
{ .baseAddr = GPT2_BASE, .intNum = INT_GPT2A, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT2, .pinMux = GPT_PIN_2A, },
{ .baseAddr = GPT2_BASE, .intNum = INT_GPT2B, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT2, .pinMux = GPT_PIN_2B, },
{ .baseAddr = GPT3_BASE, .intNum = INT_GPT3A, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT3, .pinMux = GPT_PIN_3A, },
{ .baseAddr = GPT3_BASE, .intNum = INT_GPT3B, .intPriority = (~0), .powerMngrId = PowerCC26XX_PERIPH_GPT3, .pinMux = GPT_PIN_3B, },
};
const GPTimerCC26XX_Config GPTimerCC26XX_config[CC2640R2_LAUNCHXL_GPTIMERPARTSCOUNT] = {
{ &gptimerCC26XXObjects[CC2640R2_LAUNCHXL_GPTIMER0], &gptimerCC26xxHWAttrs[CC2640R2_LAUNCHXL_GPTIMER0A], GPT_A },
{ &gptimerCC26XXObjects[CC2640R2_LAUNCHXL_GPTIMER0], &gptimerCC26xxHWAttrs[CC2640R2_LAUNCHXL_GPTIMER0B], GPT_B },
{ &gptimerCC26XXObjects[CC2640R2_LAUNCHXL_GPTIMER1], &gptimerCC26xxHWAttrs[CC2640R2_LAUNCHXL_GPTIMER1A], GPT_A },
{ &gptimerCC26XXObjects[CC2640R2_LAUNCHXL_GPTIMER1], &gptimerCC26xxHWAttrs[CC2640R2_LAUNCHXL_GPTIMER1B], GPT_B },
{ &gptimerCC26XXObjects[CC2640R2_LAUNCHXL_GPTIMER2], &gptimerCC26xxHWAttrs[CC2640R2_LAUNCHXL_GPTIMER2A], GPT_A },
{ &gptimerCC26XXObjects[CC2640R2_LAUNCHXL_GPTIMER2], &gptimerCC26xxHWAttrs[CC2640R2_LAUNCHXL_GPTIMER2B], GPT_B },
{ &gptimerCC26XXObjects[CC2640R2_LAUNCHXL_GPTIMER3], &gptimerCC26xxHWAttrs[CC2640R2_LAUNCHXL_GPTIMER3A], GPT_A },
{ &gptimerCC26XXObjects[CC2640R2_LAUNCHXL_GPTIMER3], &gptimerCC26xxHWAttrs[CC2640R2_LAUNCHXL_GPTIMER3B], GPT_B },
};
/* =============================== UDMA ===============================
*/
UDMACC26XX_Object udmaObjects[CC2640R2_SABLEXR2_UDMACOUNT];
const UDMACC26XX_HWAttrs udmaHWAttrs[CC2640R2_SABLEXR2_UDMACOUNT] = {
{
.baseAddr = UDMA0_BASE,
.powerMngrId = PowerCC26XX_PERIPH_UDMA,
.intNum = INT_DMA_ERR,
.intPriority = ~0
}
};
const UDMACC26XX_Config UDMACC26XX_config[CC2640R2_SABLEXR2_UDMACOUNT] = {
{
.object = &udmaObjects[CC2640R2_SABLEXR2_UDMA0],
.hwAttrs = &udmaHWAttrs[CC2640R2_SABLEXR2_UDMA0]
},
};