📄 dspboard.c
字号:
// 44000(小点) for Cs16x-060801.data
while(1)
{
// dataIO();
switch ( iBufferReady & BUFFER_IS_READY ) // ???是否逻辑与
{
case 1:
if ( !bDMA0On )
Buffer0Processing();
break;
case 2:
if ( !bDMA1On )
Buffer1Processing();
break ;
case 3:
if ( !bDMA0On )
Buffer0Processing();
if ( !bDMA1On )
Buffer1Processing();
break ;
default :
// no data
TSK_sleep(2);
break ;
}
}
}
Void readyReadFIFO()
{
// DMA 是否可用若不可用,跳向后面 ?????
// Buffer 是否可以用,若不可用,跳向后面
// 向 Buffer,构建DMA通道 ????
switch ( iBufferReady & BUFFER_IS_READY ) // ???是否逻辑与
{
case 0:
case 2:
if ( !bDMA0On )
{
// 现在的逻辑基本上只用DMA0了,加上DMA int后
iBufferReady = iBufferReady | BUFFER_0_WRITTEN ;
bDMA0On = TRUE ;
DMA_start( hDma0 ) ;
nRecordDMA0Miss ++ ;
}
else
{
nRecordDMA0Miss ++ ;
}
break ;
case 1:
if ( !bDMA1On )
{
iBufferReady = iBufferReady | BUFFER_1_WRITTEN ;
bDMA1On = TRUE ;
DMA_start( hDma1 ) ;
nRecordDMA1Miss ++ ;
}
else
{
nRecordDMA1Miss ++ ;
}
break ;
default:
// bo buffer ready
if ( !bDMA2On )
{
bDMA2On = TRUE ;
DMA_start( hDma2 ) ;
nRecordMissed = nRecordMissed + 1 ;
}
else
{
nRecordMissed = nRecordMissed + 1 ;
nRecordDMA2Miss = nRecordDMA2Miss + 1 ;
}
break ;
}
// SWI_post( &readFIFO_SWI ) ;
}
Void TransferDMA0()
{
bDMA0On = FALSE ;
}
Void TransferDMA1()
{
bDMA1On = FALSE ;
}
Void TransferDMA2()
{
bDMA2On = FALSE ;
}
Void readFIFO()
{
}
Void usb_int()
{
USB_evDispatch() ;
}
Void USB_bulkInDatHandler(USB_EpHandle hEpIn, USB_EpHandle hEpOut)
{
// nTranContent = // 1 for junk transfer, 2 for Data transfer, 3 for CRC transfer
// junk transfer stage: transfer 64 byte data, which has no meaning
// data transfer stage: transfer real PHA data
// CRC transfer stage: transfer 64 byte CRC data
if ( nTranContent == 1 )
{
if ( USB_isTransactionDone( hEpIn ) )
USB_postTransaction(&usbEpObjIn2, 64 , Endpt2Buff, USB_IOFLAG_NOSHORT ); // USB_IOFLAG_NONE);
}
else if ( nTranContent == 2 )
{
if ( mcaTranLength == 512 )
{
// 有问题吗
memcpy ( Endpt2Buff + 1 , mcaData512 + indexUSB * Endpt2BuffLen / 4 , Endpt2BuffLen / 2 ) ;
// 4 == ( 512 * 4 ) / ( 256 * 2 )
indexUSB ++ ;
if ( indexUSB >= 4 )
{
indexUSB = 0;
nTranContent = 3 ;
}
}
else if ( mcaTranLength == 1024 )
{
// 有问题吗
memcpy ( Endpt2Buff + 1 , mcaData1024 + indexUSB * Endpt2BuffLen / 4 , Endpt2BuffLen / 2 ) ;
// 8 == ( 1024 * 4 ) / ( 256 * 2 )
indexUSB ++ ;
if ( indexUSB >= 8 )
{
indexUSB = 0;
nTranContent = 3 ;
}
}
else if ( mcaTranLength == 2048 )
{
// 有问题吗
memcpy ( Endpt2Buff + 1 , mcaData2048 + indexUSB * Endpt2BuffLen / 4 , Endpt2BuffLen / 2 ) ;
// 16 == ( 2048 * 4 ) / ( 256 * 2 )
indexUSB ++ ;
if ( indexUSB >= 16 )
{
indexUSB = 0;
nTranContent = 3 ;
}
}
else if ( mcaTranLength == 8192 )
{
// 有问题吗
memcpy ( Endpt2Buff + 1 , mcaData + indexUSB * Endpt2BuffLen / 4 , Endpt2BuffLen / 2 ) ;
// 64 == ( 8192 * 4 ) / ( 256 * 2 )
indexUSB ++ ;
if ( indexUSB >= 64 )
{
indexUSB = 0;
nTranContent = 3 ;
}
}
// CRC校验
for ( j = 2 ; j <= Endpt2BuffLen / 2 ; j += 2 )
{
mcaDataCRC[ 15 ] += ( ( Endpt2Buff [ j ] ) % 2 ) ;
}
// USB传输
if ( USB_isTransactionDone( hEpIn ) )
USB_postTransaction(&usbEpObjIn2, Endpt2BuffLen , Endpt2Buff, USB_IOFLAG_NOSHORT );
}
else if ( nTranContent == 3 )
{
nTranContent = 1 ;
memcpy ( Endpt2Buff + 1 , mcaDataCRC , 32 ) ;
// USB传输
if ( USB_isTransactionDone( hEpIn ) )
USB_postTransaction(&usbEpObjIn2, 64 , Endpt2Buff, USB_IOFLAG_NOSHORT );
}
}
/*
Void USB_bulkInDatHandler(USB_EpHandle hEpIn, USB_EpHandle hEpOut)
{
// 128 == ( 16384 * 4 ) / ( 256 * 2 )
//if ( indexUSB >= 128 )
//{
// indexUSB = 0;
// indexUSB = indexUSB ;
//}
// 有问题
//memcpy ( Endpt2Buff + 1 , mcaData + indexUSB * Endpt2BuffLen / 4 , Endpt2BuffLen / 2 ) ;
//indexUSB ++ ;
//长度 2048 * 1000 * 2 = 0x3e8000
//if ( USB_isTransactionDone( hEpIn ) )
// USB_postTransaction(&usbEpObjIn2, 256, Endpt2Buff, USB_IOFLAG_NOSHORT );
//USB_postTransaction(&usbEpObjIn2, Endpt2BuffLen , Endpt2Buff, USB_IOFLAG_NOSHORT ); // USB_IOFLAG_NONE);
}
*/
Void USB_bulkInEvHandler()
{
// call the bulk in data handler routine.
// if DSP/BIOS used, a SWI can be posted to service the endpoint events.
// All USB event handler routines must be executed in the order the
// actual events arrived - to achieve this, if SWI used, all the USB
// event handler routines must be assigned the same priority level.
// USB_bulkInDatHandler(&usbEpObjIn2, &usbEpObjOut2);
SWI_post( &bulkIn_SWI );
}
Void USB_bulkOutDatHandler(USB_EpHandle hEpIn, USB_EpHandle hEpOut)
{
LOG_printf(&trace,"SWI_OUT");
if ( USB_isTransactionDone( hEpOut ) )
USB_postTransaction(hEpOut, Endpt2BuffLen, &Endpt2Buff, USB_IOFLAG_NONE );
}
Void USB_bulkOutEvHandler()
{
// call the bulk out data handler routine.
// if DSP/BIOS used, a SWI can be posted to service the endpoint events.
// All USB event handler routines must be executed in the order the
// actual events arrived - to achieve this, if SWI used, all the USB
// event handler routines must be assigned the same priority level.
// USB_bulkOutDatHandler(&usbEpObjIn2, &usbEpObjOut2);
SWI_post( &bulkOut_SWI );
}
/* Timer1Func调用周期:144Mhz/(9+1)/(14399+1) -->1ms */
Void Timer1Func()
{
if ( bCollectingIsOn )
{
nRecordTime = nRecordTime + 1 ;
}
uiSecond = uiSecond + 1;
/* uiSecond每增长1000次,代表一秒钟 */
if ( uiSecond > 1000 )
{
// mcaData512[256] ++;
// mcaData1024[256] += 10 ;
// mcaData2048[256] ++;
uiSecond = 0 ;
/* GPIO0: flash on/off every second */
//uiLed = GPIO_RGET( IODATA );
//uiLed = uiLed ^ 0x01 ;
//GPIO_RSET( IODATA , uiLed );
GPIO_RSET( IODATA , ( GPIO_RGET( IODATA ) ^ 0x01 ) );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -