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

📄 akm4516a.c

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 C
字号:
//=====================================================================  
//    TEXAS INSTRUMENTS INCORPORATED PROPRIETARY INFORMATION             
// Property of Texas Instruments -- For Unrestricted Internal Use Only   
// Unauthorized reproduction and/or distribution is strictly prohibited  
// This product is protected under copyright law and trade secret law as 
// an unpublished work.Created 1987,(C) Copyright 1997 Texas Instruments.
// All rights reserved.                                                  
//=====================================================================  

#include "akm4516a.h"
#include "pers_conf_a9.h"
#include "vspi.h"


//---------------------------------------------------------
//NAME        : AKM_ConfigChipForSpi                    
//DESCRIPTION : VSPI on SPI mode to perseus port           
//PARAMETERS  : None                                       
//RETURN VALUE: None                                       
//LIMITATIONS : None                                       
//---------------------------------------------------------
void AKM_ConfigChipForSpi(void)
{
  // Configure VSPI in SPI mode
  set_vspi_mode();

  // Configure Clock polarity
  set_vspi_clk_pol();
}

//---------------------------------------------------------
//NAME        : AKM_InitSpiForCodec                     
//DESCRIPTION :config spi at ?? Hz for device 0            
//PARAMETERS  :None                                        
//RETURN VALUE:None                                        
//LIMITATIONS :None                                        
//---------------------------------------------------------
void AKM_InitSpiForCodec(void)
{
  // Setup 1 register :
  //	- enable internal clock
  //	- set Pre-scale clock divisor to 16
  //	- enable interrupt for read/write process only.
  VSPI_InitSet1 (VSPI_RUN_CLOCK, VSPI_SET1_PTV16, VSPI_DISABLE_IT_WRITE, VSPI_ENABLE_IT_READWRITE);

  // Setup 2 register :
  //	- Active RISING edge of the clock for device 0
  //	- Set negative level on nTSPEN signal for device 0
  //	- Set level trigger on nTSPEN signal for device 0
  VSPI_InitSet2 (VSPI_DEV0_RISING_EDGE_CLOCK, VSPI_DEV0_NEGATIVE_LEVEL_SIG, VSPI_DEV0_LEVEL_TRIGGER_SIG);
   
}

//---------------------------------------------------------
//NAME        :  AKM_WriteSpi                             
//DESCRIPTION :  write message on spi                      
//PARAMETERS  :  write_message (message to write)          
//RETURN VALUE:  None                                      
//LIMITATIONS :  None                                      
//---------------------------------------------------------
void AKM_WriteSpi(UWORD16 write_message)
{
  // write data to transmit register
  VSPI_writeTxMsb (write_message);

  // start write 16 bits transfer 
  VSPI_InitCtrl (VSPI_DEACTIV_RDWR_PROCESS, VSPI_ACTIV_WR_PROCESS, VSPI_CTRL_NB_16, VSPI_DEVICE_0, DMA_DIS);
  
  // wait end of transmission
  while (VSPI_IsWriteEnd() != True);

  // stop write 16 bits transfer 
  VSPI_InitCtrl (VSPI_DEACTIV_RDWR_PROCESS, VSPI_DEACTIV_WR_PROCESS, VSPI_CTRL_NB_16, VSPI_DEVICE_0, DMA_DIS);

}

//---------------------------------------------------------
//NAME        :  AKM_WriteReadSpi                        
//DESCRIPTION :  write/read cycle on spi                   
//PARAMETERS  :  write_read_message : address of register  
//               to read + dummy data                      
//RETURN VALUE:  register to read value                    
//LIMITATIONS :  None                                      
//---------------------------------------------------------
UWORD16 AKM_WriteReadSpi(UWORD16 write_read_message)
{

  // write data to transmit register
  VSPI_writeTxMsb (write_read_message);

  // start write/read 16 bits transfer 
  VSPI_InitCtrl (VSPI_ACTIV_RDWR_PROCESS, VSPI_DEACTIV_WR_PROCESS, VSPI_CTRL_NB_16, VSPI_DEVICE_0, DMA_DIS);
  
  // wait end of transmission
  while (VSPI_IsReadEnd() != True);

  // stop write/read 16 bits transfer 
  VSPI_InitCtrl (VSPI_DEACTIV_RDWR_PROCESS, VSPI_DEACTIV_WR_PROCESS, VSPI_CTRL_NB_16, VSPI_DEVICE_0, DMA_DIS);

  // return read data
  return((VSPI_readRxLsb()& DATA_MASK)); 
   
}

//---------------------------------------------------------
//NAME        :  AKM_WriteCodecRegister                  
//DESCRIPTION : write to codec register                    
//PARAMETERS  : register address, value to write           
//RETURN VALUE: None                                       
//LIMITATIONS : None                                       
//---------------------------------------------------------
void AKM_WriteCodecRegister(UWORD16 register_addr, UWORD16 write_message)
{
  // write value to CODEC register
  AKM_WriteSpi(write_message | WRITE_OP_CODE | register_addr);
}

//---------------------------------------------------------
//NAME        :  AKM_ReadCodecRegister                   
//DESCRIPTION : read a codec register                      
//PARAMETERS  : address of register to read                
//RETURN VALUE: codec register value                       
//LIMITATIONS : None                                       
//---------------------------------------------------------
UWORD16 AKM_ReadCodecRegister(UWORD16 register_to_read)
{
return (AKM_WriteReadSpi(register_to_read | READ_OP_CODE | DUMMY_DATA));
}

//---------------------------------------------------------
//NAME        :  AKM_ConfigCodecForI2sRecord           
//DESCRIPTION :config codec for wave file record in I2S    
//PARAMETERS  : None                                       
//RETURN VALUE: None                                       
//LIMITATIONS : None                                       
//---------------------------------------------------------
void  AKM_ConfigCodecForI2sRecord(void)
{
 //UWORD16 register_value;

 // write and read some pipo pour essai
 AKM_WriteCodecRegister( INPUT_PGA_CONTROL_LCH_ADDR , 0x000F);

 AKM_WriteCodecRegister( OVERFLOW_STATUS_ADDR , 0x0055);

 //register_value = AKM_ReadCodecRegister( AUTO_RECOVERY_CONTROL_1_ADDR);
 AKM_ReadCodecRegister( AUTO_RECOVERY_CONTROL_1_ADDR);

// jl to do 
}

//---------------------------------------------------------
//NAME        : AKM_ConfigCodecForI2sPlay              
//DESCRIPTION : config codec for playing recorded wave file
//PARAMETERS  : None                                       
//RETURN VALUE: None                                       
//LIMITATIONS : None                                       
//---------------------------------------------------------
void  AKM_ConfigCodecForI2sPlay(void)
{
// jl to do 
}  

⌨️ 快捷键说明

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