Hello,
I am trying to burn my program into flash to boot, but McBSP can't transmit data in boot mode(directly SPI boot mode).
I have checked that the program could run into EDMA Interrupt service function, but can't detect an interrupt transfer completion code in IPRH register. My EDMA Interrupt service function is shown above:
void EDMA_isr()
{
......
if(GET_BIT(IPRH,McBSPx_EDMA_Ch[McBSP_TO_DSP2]-32)) //the result of send to DSP2
{
REG_WRITE(ICRH,1<<5);
SendFlag = 1;
}
......
}
Then I test my program in debug mode using a simulator, the program works great in first time, but when I debug my program again without re power, it also can not detect an interrupt transfer completion code in IPRH register. When I click the SYSTEM RESET button in CCS, also only the first time It could works normally. And CPU RESET button doesn't work.
My EDMA parameter options are set as shown above:
myParamSetupMcBSP0Trans.option = CSL_EDMA3_OPT_MAKE(CSL_EDMA3_ITCCH_DIS, \ CSL_EDMA3_TCCH_DIS, \ CSL_EDMA3_ITCINT_DIS, \ CSL_EDMA3_TCINT_EN, \ CSL_EDMA3CC2_XEVT0_MCBSP_A, \ CSL_EDMA3_TCC_NORMAL,\ CSL_EDMA3_FIFOWIDTH_NONE, \ CSL_EDMA3_STATIC_DIS, \ CSL_EDMA3_SYNC_A, \ CSL_EDMA3_ADDRMODE_INCR, \ CSL_EDMA3_ADDRMODE_INCR);
Attached: my main() function
void main()
{
int i;
while(1)
{
// Initial the McBSP registers
mcbsp_init(McBSP_TO_DSP2,199,1);
EDMAInit_McBSP();
McBSP_intc_setup();
RESET_BIT(McBSP_SPCR(McBSP_TO_DSP2), FRST);
RESET_BIT(McBSP_SPCR(McBSP_TO_DSP2), GRST);
RESET_BIT(McBSP_SPCR(McBSP_TO_DSP2), XRST);
for(i = 0; i < BUFFER_SIZE; ++i)
McBSP_src[i] = i;
SET_BIT(McBSP_SPCR(McBSP_TO_DSP2), FRST);
SET_BIT(McBSP_SPCR(McBSP_TO_DSP2), GRST);
SET_BIT(McBSP_SPCR(McBSP_TO_DSP2), XRST);
while(!(SendFlag == 1));
SendFlag = 0;
RESET_BIT(McBSP_SPCR(McBSP_TO_DSP2), XRST);
}
}
I am wonder how could make McBSP transmit data in BOOT mode. Thanks.
Regards,
Xu Tsou