This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28055: F28055 SCI's issues

Part Number: TMS320F28055
Other Parts Discussed in Thread: MOTORWARE, CONTROLSUITE

Hi Brett,

I'm using F28055 as communication controller in my project. 3 SCI ports are utilized. I setup same work mode for these 3 SCI ports and set loop back of test. SCIA works well, but SCIB and SCIC can not work normally. The program always waits for rx data ready after I sent a byte date to tx buffer. Can you tell me what generates this. CCS version is 6.1.2. Test code is from \ti\motorware_1_01_00_17\sw\solutions\instaspin_foc\boards\drv8312kit_revD\f28x\f2805xF\projects\ccs5\proj_lab01, SCI setup function as

void HAL_setupSCIs(HAL_Handle handle)
{
HAL_Obj *obj = (HAL_Obj *)handle;

//A port
SCI_setNumStopBits(obj->sciHandle[0], SCI_NumStopBits_One);
SCI_disableParity(obj->sciHandle[0]);
SCI_setCharLength(obj->sciHandle[0], SCI_CharLength_8_Bits);
SCI_enableRx(obj->sciHandle[0]);
SCI_enableTx(obj->sciHandle[0]);
SCI_setBaudRate(obj->sciHandle[0], SCI_BaudRate_9_6_kBaud); //9.6 * 4 = 38.4kBaud
//SCI_enableRxInt(obj->sciHandle[0]);
SCI_enableLoopBack(obj->sciHandle[0]); //set loopback for test
SCI_enable(obj->sciHandle[0]);

//B port
SCI_setNumStopBits(obj->sciHandle[1], SCI_NumStopBits_One);
SCI_disableParity(obj->sciHandle[1]);
SCI_setCharLength(obj->sciHandle[1], SCI_CharLength_8_Bits);
SCI_enableRx(obj->sciHandle[1]);
SCI_enableTx(obj->sciHandle[1]);
SCI_setBaudRate(obj->sciHandle[1], SCI_BaudRate_9_6_kBaud); //9.6 * 4 = 38.4kBaud
//SCI_enableRxInt(obj->sciHandle[1]);
SCI_enableLoopBack(obj->sciHandle[1]); //set loopback for test
SCI_enable(obj->sciHandle[1]);

//C port
SCI_setNumStopBits(obj->sciHandle[2], SCI_NumStopBits_One);
SCI_disableParity(obj->sciHandle[2]);
SCI_setCharLength(obj->sciHandle[2], SCI_CharLength_8_Bits);
SCI_enableRx(obj->sciHandle[2]);
SCI_enableTx(obj->sciHandle[2]);
SCI_setBaudRate(obj->sciHandle[2], SCI_BaudRate_9_6_kBaud); //9.6 * 4 = 38.4kBaud
//SCI_enableRxInt(obj->sciHandle[2]);
SCI_enableLoopBack(obj->sciHandle[2]); //set loopback for test
SCI_enable(obj->sciHandle[2]);

return;
}

GPIOs define as

// SCI-RX-DA-X
GPIO_setMode(obj->gpioHandle, GPIO_Number_28, GPIO_28_Mode_SCIRXDA);
GPIO_setPullup(obj->gpioHandle, GPIO_Number_28, GPIO_Pullup_Enable);
GPIO_setQualification(obj->gpioHandle, GPIO_Number_28, GPIO_Qual_ASync);

// SCI-TX-DA-X
GPIO_setMode(obj->gpioHandle, GPIO_Number_29, GPIO_29_Mode_SCITXDA);
GPIO_setPullup(obj->gpioHandle, GPIO_Number_29, GPIO_Pullup_Enable);

// SCI-TX-DB-Y
GPIO_setMode(obj->gpioHandle,GPIO_Number_14,GPIO_14_Mode_SCITXDB);
GPIO_setPullup(obj->gpioHandle, GPIO_Number_14, GPIO_Pullup_Enable);

// SCI-RX-DB-Y
GPIO_setMode(obj->gpioHandle,GPIO_Number_15,GPIO_15_Mode_SCIRXDB);
GPIO_setPullup(obj->gpioHandle, GPIO_Number_15, GPIO_Pullup_Enable);
GPIO_setQualification(obj->gpioHandle, GPIO_Number_15, GPIO_Qual_ASync);

// SCI-RX-DC-Z
GPIO_setMode(obj->gpioHandle,GPIO_Number_26,GPIO_26_Mode_SCIRXDC);
GPIO_setPullup(obj->gpioHandle, GPIO_Number_26, GPIO_Pullup_Enable);
GPIO_setQualification(obj->gpioHandle, GPIO_Number_26, GPIO_Qual_ASync);

// SCI-TX-DC-Z
GPIO_setMode(obj->gpioHandle,GPIO_Number_27,GPIO_27_Mode_SCITXDC);
GPIO_setPullup(obj->gpioHandle, GPIO_Number_27, GPIO_Pullup_Enable);

Thanks a lot

Winston