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

📄 frequency.c

📁 学校自己使用的DSP课件
💻 C
📖 第 1 页 / 共 3 页
字号:
                             //USB/Normal(bits 0)                  0 Clock mode select: 0 = Normal
                             //----- 0001 0000 0000 1100            
                             
  mcbsp0_write_rdy(0x1201);  //REG9 Digital Interface Activation
  asm(" nop ");              //Address  (bits 15-9) 0001001
                             //X        (bits 8-1)         00000000  Reserved
                             //ACT      (bits 0)                   1 Activate interface 1 = Active
                             //----- 0001 0010 0000 0001
  Delay(0);                  //延迟 4000*CPU 时钟周期
  asm(" nop ");

}

/*
*************************************************************************
- 函数名称 : void mcbsp0_write_rdy(UINT16 out_data);
- 函数说明 : MCBSP0发送一个数据
- 输入参数 : data
- 输出参数 : 无
- 补充说明 : 内部带是否发送完成的判断
**************************************************************************
*/


void mcbsp0_write_rdy(UINT16 out_data) 

{  
    UINT16 j;
    
    *(unsigned int*)McBSP0_SPSA=0x0001;  //McBSP0_SPSA  指向 SPCR2
 
    while ((*(unsigned int *)McBSP0_SPSD&0x0002)==0); 
   
         //mask XRDY bit,XRDY = 1 Transmitter is ready for new data in DXR[1,2].
    
    for(j=0;j<50;j++); //delay
       
    *(unsigned int *)McBSP0_DXR1= out_data;
    
}


/*
*************************************************************************
- 函数名称 : void mcbsp0_init_SPI(void);
- 函数说明 : MCBSP0设置为SPI模式
- 输入参数 : 无
- 输出参数 : 无
- 补充说明 : 
**************************************************************************
*/
void mcbsp0_init_SPI(void)
 
{
   //-------------------------------------------------------- 
  //复位 McBSP0
  *(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1
  *(unsigned int*)McBSP0_SPSD=0x0000;//设置SPCR1.0(RRST=0)
                  
  *(unsigned int*)McBSP0_SPSA=0x0001;//SPCR2
  *(unsigned int*)McBSP0_SPSD=0x0000;//设置SPCR1.0(XRST=0)
  //---------------------------------------------------------
  //延迟                            
  Delay(0);                  //延迟 4000*CPU 时钟周期                            
                             //等待复位稳定
  //---------------------------------------------------------                           
   //配置 McBSP0为 SPI 模式
  *(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1
  *(unsigned int*)McBSP0_SPSD=0x1800;
  //DLB    (bit 15)     0                 Digital loop back mode disabled
  //RJUST  (bit 14-13)   00               Right-justify and zero-fill MSBs in DRR[1,2]
  //CLKSTP (bit 12-11)     11                                
  //X      (bit 10-8)        000          Reserved                     
  //DXENA  (bit 7)              0         data transmit delay bit.DX enabler is off
  //ABIS   (bit 6)               0        A-bis mode is disabled
  //RINTM  (bit 5-4)              00      RINT driven by RRDY
  //RSYNER (bit 3)                  0     No synchronization error
  //RFULL  (bit 2)                   0    RBR[1,2] is not in overrun condition
  //RRDY   (bit 1)                    0   Receiver is not ready
  //RRST   (bit 0)                     0  Serial port receiver is disabled and in reset state
  //----------  0001 1000 0000 0000
  
  *(unsigned int*)McBSP0_SPSA=0x0001;//SPCR2
  *(unsigned int*)McBSP0_SPSD=0x0000;
  //X      (bit 15-10)  000000             Reseved
  //FREE   (bit 9)            0            Free running mode is disabled
  //SOFT   (bit 8)             0           SOFT mode is disabled                     
  //FRST   (bit 7)              0          Frame-synchronization logic is reset.                     
  //GRST   (bit 6)               0         Sample rate generator is reset
  //XINTM  (bit 5-4)              00       XINT driven by XRDY
  //XSYNER (bit 3)                  0      No synchronization error
  //XEMPTY (bit 2)                   0     XSR[1,2] is empty
  //XRDY   (bit 1)                    0    Transmitter is not ready
  //XRST   (bit 0)                     0   serial port transmitter is disabled and in reset state
 
  //----------  0000 0000 0000 0000
  
  *(unsigned int*)McBSP0_SPSA=0x000E;//PCR
  *(unsigned int*)McBSP0_SPSD=0x0A0C;
  //X      (bit 15-14)  00               Reseved
  //XIOEN  (bit 13)       0              DX, FSX and CLKX are configured as serial port
  //RIOEN  (bit 12)        0             DR, FSR, CLKR and CLKS are configured as serial port                             
  //FSXM   (bit 11          1            Frame synchronization is determined by the sample rate
                                         //generator                              
  //FSRM   (bit 10)          0           Frame-synchronization pulses generated by an external
                                         //device. FSR is an input pin                        
  //CLKXM  (bit 9)            1          CLKX is an output pin and is driven by the internal sample
                                         //rate generator.                     
  //CLKRM  (bit 8)             0         Receive clock (CLKR) is an input driven by an external
  //X      (bit 7)              0        Reserved                        
  //CLKS_STAT(bit 6)             0       CLKS pin status.                        
  //DX_STAT  (bit 5)              0      DX pin status.
  //DR_STAT  (bit 4)               0     DR pin status.
  //FSXP     (bit 3)                1    Frame-synchronization pulse FSX is active low
  //FSRP     (bit 2)                 1   Frame-synchronization pulse FSR is active low                                          
  //CLKXP    (bit 1)                  0  Transmit data sampled on rising edge of CLKX
  //CLKRP    (bit 0)                   0 Receive data sampled on falling edge of CLKR
  //---------- 0000 1010 0000 1100
  
  *(unsigned int*)McBSP0_SPSA=0x0002;//RCR1
  *(unsigned int*)McBSP0_SPSD=0x0040;//
  //X       (bit 15)   0                Reserved
  //RFRLEN1 (bit 14-8)  0000000         Receive Frame Length 1,RFRLEN1 = 000 0000 1 word per frame                                  
  //RWDLEN1 (bit 7-5)          010      Receive Word Length 1,RWDLEN1 = 010 16 bits
  //X       (bit 4-0)             00000 Reserved                                                                                                        
  //----- 0000 0000 0100 0000 
                                   
  *(unsigned int*)McBSP0_SPSA=0x0003;//RCR2
  *(unsigned int*)McBSP0_SPSD=0x0041;//  
  //RPHASE  (bit 15)    0                Receive Phases,RPHASE = 0 Single-phase frame
  //RFRLEN2 (bit 14-8)   0000000         Receive Frame Length 2,RFRLEN2 = 000 0000 1 word per frame
  //RWDLEN2 (bit 7-5)           010      Receive Word Length 2,RWDLEN2 = 010 16 bits
  //RCOMPAND(bit 4-3)              00    No companding, 
  //RFIG    (bit 2)                  0   Receive Frame Ignore
  //RDATDLY (bit 1-0)                 01 Receive data delay,1-bit data delay
  //----- 0000 0000 0100 0001
  
  *(unsigned int*)McBSP0_SPSA=0x0004;//XCR1
  *(unsigned int*)McBSP0_SPSD=0x0040;
  //X       (bit 15)   0                Reserved
  //XFRLEN1 (bit 14-8)  0000000         Transmit Frame Length 1,RFRLEN1 = 000 0000 1 word per frame                                  
  //XWDLEN1 (bit 7-5)          010      Transmit Word Length 1,RWDLEN1 = 010 16 bits
  //X       (bit 4-0)             00000 Reserved                                                                                                        
  //----- 0000 0000 0100 0000 
    
  *(unsigned int*)McBSP0_SPSA=0x0005;//XCR2
  *(unsigned int*)McBSP0_SPSD=0x0041;
  //XPHASE  (bit 15)    0                Transmit Phases,RPHASE = 0 Single-phase frame
  //XFRLEN2 (bit 14-8)   0000000         Transmit Frame Length 2,RFRLEN2 = 000 0000 1 word per frame
  //XWDLEN2 (bit 7-5)           010      Transmit Word Length 2,RWDLEN2 = 010 16 bits
  //XCOMPAND(bit 4-3)              00    No companding, 
  //XFIG    (bit 2)                  0   Transmit Frame Ignore
  //XDATDLY (bit 1-0)                 01 Transmit data delay,1-bit data delay
  //----- 0000 0000 0100 0001
  
  *(unsigned int*)McBSP0_SPSA=0x0006;//SRGR1
  *(unsigned int*)McBSP0_SPSD=0x0063;
  //FWID    (bit 15-8) 00000000          Frame Width 
  //CLKGDV  (bit 7-0)          0110 0100 Sample Rate Generator Clock Divider
                               //CLKG = CPUCLOCK/(CLKGDV+1)
                               // WHEN CPUCLOCK=10MHZ,CLKG=100K
  //---- 0000 0000 0110 0011
   
   *(unsigned int*)McBSP0_SPSA=0x0007;//SRGR2                                                           
   *(unsigned int*)McBSP0_SPSD=0x2000;
  //GSYNC    (bit 15) 0                don't care
  //CLKSP    (bit 14)  0               don't care
  //CLKSM    (bit 13)   1              Sample rate generator clock derived from CPU clock
  //FSGM     (bit 12)    0             Sample Rate Generator Transmit Frame-Synchronization Mode
                                       //in spi mode,must be =0 
  //FPER     (bit 11-0)   000000000000 Frame Period,this bits ignored 
  //------- 0010 0000 0000 0000 

  *(unsigned int*)McBSP0_SPSA=0x0001;//SPCR2    
  *(unsigned int*)McBSP0_SPSD=(*(unsigned int*)McBSP0_SPSD)|0x0040;
  //GRST = 1 Sample rate generator is pulled out of reset
   
  //延迟                            
  Delay(0);                  //延迟 4000*CPU 时钟周期                            
                             //等待时钟稳定
                             
  *(unsigned int*)McBSP0_SPSA=0x0000;//SPCR1    
  *(unsigned int*)McBSP0_SPSD=(*(unsigned int*)McBSP0_SPSD)|0x0001;
  //RRST=1

⌨️ 快捷键说明

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