Part Number: C2000WARE
Tool/software:
Dear All
I am currently working on implementing the RX interrupt method for the SCI-D port on the TSM320F28377s.
However, I am facing an issue where the interrupt is not being triggered.
I have attached my code for your reference.
Could you please review it and let me know what might be wrong?
Thank you for your assistance.
Best regards,
sjkim
#include "F28x_Project.h"
#define CPU_FREQ 60E6
#define LSPCLK_FREQ CPU_FREQ/4
#define SCI_FREQ 115200//100E3
#define SCI_PRD ((LSPCLK_FREQ/(SCI_FREQ*8))-1)
interrupt void scidRxFifoIsr(void);
void scid_fifo_init(void);
volatile bool g_bGotRx = false;
void setScidRxinitInterrupts(void)
{
EALLOW;
PieVectTable.SCID_RX_INT = &scidRxFifoIsr;
EDIS;
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // Enable the PIE block
PieCtrlRegs.PIEIER8.bit.INTx5 = 1; // Enable SCID RX interrupt
//IER |= M_INT8; // Enable CPU INT8
IER |= PIEACK_GROUP8; // Enable CP
}
void main(void)
{
char ReceivedChar;
InitSysCtrl();
InitGpio();
DINT;
InitPieCtrl();
IER = 0x0000;
IFR = 0x0000;
InitPieVectTable();
EALLOW;
GPIO_SetupPinMux(47, GPIO_MUX_CPU1, 15); // SCI-d RX Pin: GPIO47
GPIO_SetupPinOptions(47, GPIO_INPUT, (GPIO_PUSHPULL | GPIO_SYNC));
GPIO_SetupPinMux(46, GPIO_MUX_CPU1, 15); // SCI-d TX Pin: GPIO46
GPIO_SetupPinOptions(47, GPIO_OUTPUT, GPIO_PUSHPULL);
EDIS;
scid_fifo_init(); // Init SCI-D
setScidRxinitInterrupts();
EINT;
ERTM;
while(1)
{
if(g_bGotRx) {
printfPort('D',(char*)"Got()\r\n");
g_bGotRx = false;
}
if(ScidRegs.SCIFFRX.bit.RXFFST)
{
ReceivedChar = ScidRegs.SCIRXBUF.all;
printfPort('D',"<RxD>%02x\r\n", ReceivedChar);
}
}
}
interrupt void scidRxFifoIsr(void)
{
uint16_t receivedChar;
receivedChar = ScidRegs.SCIRXBUF.all;
ScidRegs.SCITXBUF.all = receivedChar;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP8;
g_bGotRx = true;
printfPort('D',(char*)"receivedCha\r\n");
}
void scid_fifo_init()
{
ScidRegs.SCICCR.all = 0x0007;
ScidRegs.SCICTL1.all = 0x0003;
ScidRegs.SCICTL2.bit.TXINTENA = 1;
ScidRegs.SCICTL2.bit.RXBKINTENA = 1;
ScidRegs.SCIHBAUD.all = 0x0000;
ScidRegs.SCILBAUD.all = SCI_PRD;
ScidRegs.SCICTL1.all = 0x0023;
ScidRegs.SCIFFTX.all = 0xC022; //TX FIFO
ScidRegs.SCIFFRX.all = 0x0022; //RX FIFI
ScidRegs.SCIFFCT.all = 0x00;
ScidRegs.SCICTL1.all = 0x0023;
ScidRegs.SCIFFRX.bit.RXFIFORESET = 1;
}

