TMS320F28062 芯片,采用双串口工作,发送与接收都采用中断方式,。SCIA发送与接收可以正常工作,SCIB发送数据正常 ,问题是SCIB接收数据没有产生中断,请问一下,SCIB在初始化配置与SCIA有什么 不同,需要注意什么地方?
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.
TMS320F28062 芯片,采用双串口工作,发送与接收都采用中断方式,。SCIA发送与接收可以正常工作,SCIB发送数据正常 ,问题是SCIB接收数据没有产生中断,请问一下,SCIB在初始化配置与SCIA有什么 不同,需要注意什么地方?
配置了,所有配置参照SCIA配置的
// GPIO_setMode(obj->gpioHandle,GPIO_Number_18,GPIO_18_Mode_SPICLKA);
GPIO_setDirection(obj->gpioHandle,GPIO_Number_18,GPIO_Direction_Output);
GPIO_setMode(obj->gpioHandle,GPIO_Number_18,GPIO_18_Mode_SCITXDB);
// SPIA CS->Motor1_DRV8301
// GPIO_setMode(obj->gpioHandle,GPIO_Number_19,GPIO_19_Mode_SPISTEA_NOT);
GPIO_setPullup(obj->gpioHandle, GPIO_Number_19, GPIO_Pullup_Enable);
GPIO_setQualification(obj->gpioHandle, GPIO_Number_19, GPIO_Qual_ASync);
GPIO_setMode(obj->gpioHandle,GPIO_Number_19,GPIO_19_Mode_SCIRXDB);
您中断函数是怎么写的呢?
有使用FIFO功能?那是否有清标志
SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flag
SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all|=0x100; // Issue PIE ack位
例程:C:\ti\controlSUITE\device_support\f2806x\v151\F2806x_examples_ccsv5\scia_loopback_interrupts
清标志的,问题是一次中断也没进。
__interrupt void sciaRxFifoIsrB(void)
{
uint16_t rx2_status=0;
test_c4 = 8 ;
rece2_time=0;
rx2_status=SCI_getDataBlocking(mySciB);
/*
if(rece2_size<(p_len-1))
{
if(r2_mark==0)
{
rdataA2[rece2_size] = (rx2_status<<8) & 0xff00 ;
r2_mark=1;
}
else
{
rdataA2[rece2_size] = rdataA2[rece2_size] + rx2_status;
rece2_size=rece2_size+1;
r2_mark=0;
}
}
*/
SCI_clearRxFifoOvf(mySciB); // Clear Overflow flag
SCI_clearRxFifoInt(mySciB); // Clear Interrupt flag
PIE_clearSCIInts(myPie);
return;
}
这个是串口配置
void mx_scib_Init(void)
{
mySciB = SCI_init((void *)SCIB_BASE_ADDR, sizeof(SCI_Obj));
// 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
SCI_disableParity(mySciB); //Odd parity
SCI_setNumStopBits(mySciB, SCI_NumStopBits_One); //One stop bit
SCI_setCharLength(mySciB, SCI_CharLength_8_Bits);//8 bit
// enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
SCI_enableTx(mySciB); //enable TX,
SCI_enableRx(mySciB); //enable RX,
SCI_enableTxInt(mySciB); //enable TX interrupt
SCI_enableRxInt(mySciB); //enable RX interrupt
SCI_enableLoopBack(mySciB);
SCI_setBaudRate(mySciB,SCI_BaudRate_9_6_kBaud);
SCI_disableLoopBack(mySciB); // Enable loop back
SCI_enable(mySciB);
return;
}