Other Parts Discussed in Thread: CONTROLSUITE, AMC1306E25, TMDSDOCK28379D, AMC1306EVM, C2000WARE, AMC1306M25
Tool/software: Code Composer Studio
I'm trying to master the SDFM of TI F28377D chip, temporarily running a single-core application (core 2 is not used). My current setup is based on the sdfm_pwm_sync_cpu01 example provided with controlSUITE, with the following adaptations:
- There are only SD1_D1, SD1_D2, SD1_C1 and SD1_C2 connected (GPIOs 16 to 19). Filters 2 and
- The data is in Manchester encoding, therefore Sdfm_configureInputCtrl() receives MODE_2 as input.
- The clock, even if not required by the Manchester encoding, is supplied from one of the eCAP modules.
I have connected voltage source to the setup to emulate some kind of input for SD, and I do see some Manchester-encoded data on the corresponding DSP leg. However, running this example (or, to that matter, any sdfm example), I finish reading of the first result in the Sdfm1_ISR routine and fall to the following trap:
__interrupt void Sdfm1_ISR(void)
{
uint32_t sdfmReadFlagRegister = 0;
static uint16_t loopCounter1 = 0;
//
// Read SDFM flag register (SDIFLG)
//
sdfmReadFlagRegister = Sdfm_readFlagRegister(gPeripheralNumber);
if(loopCounter1 <= MAX_SAMPLES)
{
//
// Read each SDFM filter output and store it in respective filter
// result array
//
Filter1_Result[loopCounter1] = SDFM1_READ_FILTER1_DATA_16BIT;
Filter2_Result[loopCounter1] = SDFM1_READ_FILTER2_DATA_16BIT;
Filter3_Result[loopCounter1] = SDFM1_READ_FILTER3_DATA_16BIT;
Filter4_Result[loopCounter1++] = SDFM1_READ_FILTER4_DATA_16BIT;
//
// Clear SDFM flag register
//
Sdfm_clearFlagRegister(gPeripheralNumber,sdfmReadFlagRegister);
sdfmReadFlagRegister = Sdfm_readFlagRegister(gPeripheralNumber);
⇐ Here sdfmReadFlagRegister is 2147484416
if(sdfmReadFlagRegister != 0x0)
{
ESTOP0;
⇐ And, sure enough, I finish here
}
}
I tried disabling fiters 2, 3 and 4, to no success. What are the ways to continue from here.



