⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 TI 无线传输芯片CC1100用 TMS320C5509 驱动的发送程序
💻 C
字号:
#include <csl_dma.h>
#include <csl_irq.h>
#include <csl_gpio.h>
#include <stdio.h>
#include <csl.h>
#include <csl_mcbsp.h>
/* Reference start of interrupt vector table   */

/* This symbol is defined in file, vectors.s55 */

int *Uaddr,*Vaddr;
Uint16 *dstaddr,*dstaddr1;
unsigned int dataconst=40000;
extern void VECSTART(void);

void delayS();
void delayL();

extern void RFSendPacket(Uint16 *txBuffer, Uint16 size);
extern void initSPI();
interrupt void INT1Isr(void);          /* INT1 interrupt */
interrupt void dmaRcvIsr(void);        /* DMA receive interrupt */

extern DMA_Handle hDMAfifo;
volatile int oneframe=0;

void main()
{
  CSL_init();
  CHIP_RSET(XBSR,0x0a01);       /*EMIF为全EMIF接口*/

  initPLL();  /*设置系统的运行速度为144MHz*/
  initGPIO();
//  initI2C();
  initEMIF();/*初始化DSP的外部SDRAM*/
  initSPI();
  initDMA();
 // init_cc();
  delayS();

  GPIO_RSET(IODIR,0xFF); 

  IRQ_setVecs((Uint32)(&VECSTART));     /* set IVPD/IVPH to start of interrupt vector table */
    
  IRQ_clear(IRQ_EVT_INT1);              /* clear any pending interrupts for INT1 */
  IRQ_clear(IRQ_EVT_DMAC0);
  IRQ_plug(IRQ_EVT_INT1,&INT1Isr);      /* place INT1 interrupt service addresses at associate vector */
  IRQ_plug(IRQ_EVT_DMAC0,&dmaRcvIsr);
  IRQ_enable(IRQ_EVT_INT1);             /* enable INT1 interrupt in IER2 register */
  IRQ_enable(IRQ_EVT_DMAC0); 
  IRQ_globalEnable();
 

 GPIO_RSET(IODATA,0x40); 
 for(;;)
 {
 Uint16 i,j,k; 
 if(oneframe==1)
 {
   dstaddr=(Uint16 *)0x30000;
   dstaddr1=(Uint16 *)0x40000;
   k=0;
   Uaddr = (int *)0x120000;
   for(i=0;i<128;i++)
   {
    for(j=0;j<256;j++)
	{
    dstaddr1[k++]=(dstaddr[i*256+j]>>8);
	}
    for(j=0;j<256;j++)
	{
    dstaddr1[k++]=(dstaddr[i*256+j+32768]>>8);
	}
   }
   RFSendPacket(dstaddr1, 44);  //176/4=44;
   for(i=0;i<32768;i++)
   {
   Uaddr[i] = 128;
   }
  ;
  }
 }
 } 
 


interrupt void INT1Isr(void)   
{
   Uint16 intflag;
   GPIO_RSET(IODATA,0x0);    //该中断是FIFO的读中断,停止对FIFO的写操作
   intflag = CHIP_FGET(IFR1,INT1)|0x0001;
   if(intflag==0x0001)
   {
     DMA_start(hDMAfifo);                /* enable DMA receiver*/
	 IRQ_enable(IRQ_EVT_INT1);
     IRQ_globalEnable();
	// IRQ_globalRestore(old_intm);
  //	 GPIO_RSET(IODATA,0x08);  
     return;
   }
   else
   {  
    IRQ_globalEnable();
   // GPIO_RSET(IODATA,0x08); 
     return;
   }
}


interrupt void dmaRcvIsr(void)
{
   DMA_stop(hDMAfifo);
   oneframe=1;
   IRQ_globalEnable();
   return;
}



void delayS()
{
	int j = 0;
	for(j = 0;j<10;j++);
}

void delayL()
{
	int j = 0;
	for(j = 0;j<1000;j++);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -