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

📄 lib_ssc.h

📁 基于 at91sam7s256 的i2c驱动源码
💻 H
字号:
// ----------------------------------------------------------------------------
//         ATMEL Microcontroller Software Support  -  ROUSSET  -
// ----------------------------------------------------------------------------
// DISCLAIMER:  THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
// IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
// DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
//*----------------------------------------------------------------------------
//* File Name           : lib_ssc.c
//* Object              : SSC working on I2S and DSP mode
//* Creation            : 08/Dec/2005 JPP
//* V 1.00  28-Jun-2006 JPP change for EK
//*----------------------------------------------------------------------------
#ifndef lib_ssc_h
#define lib_ssc_h

// Global declarations
#define   	SAMPLEFRAME          (8)
#define   	SAMPLE_RATE          (16000)
#define 	SLOT_BY_FRAME        (2)
#define 	BITS_BY_SLOT         (16)

//                  I2S mode
//         _   _   _
// TK   __| |_| |_| |_---------------------------------
//      ____                             _____________
// TF       |___________________________|              |
//      ____ ___ ___ ___             ___ ___        ___
// TD   ____|___|___|___|-----------|___|___|------|___|
//                n   n-1             0    n          0
//              |                       |
// Data         | DATA_OUT_L            |DATA_OUT_R
//                  DSP mode
#define AT91C_I2S_MASTER_TX_SETTING(nb_bit_by_slot, nb_slot_by_frame)( +\
									   AT91C_SSC_CKS_DIV   +\
                            		   AT91C_SSC_CKO_CONTINOUS      +\
                                       AT91C_SSC_START_FALL_RF +\
                            		   ((1<<16) & AT91C_SSC_STTDLY) +\
                            		   ((((nb_bit_by_slot*nb_slot_by_frame)/2)-1) <<24))

//* Configuration to set in the SSC Transmit Frame Mode Register
//* Parameters : nb_bit_by_slot : 8, 16 or 32 bits
//* 			 nb_slot_by_frame : number of channels
#define AT91C_I2S_TX_FRAME_SETTING(nb_bit_by_slot, nb_slot_by_frame)( +\
									(nb_bit_by_slot-1)  +\
                            		AT91C_SSC_MSBF   +\
                            		(((nb_slot_by_frame-1)<<8) & AT91C_SSC_DATNB)  +\
                            		(((nb_bit_by_slot-1)<<16) & AT91C_SSC_FSLEN) +\
                            		AT91C_SSC_FSOS_NEGATIVE)

//        _   _   _
// TK   _| |_| |_| |_---------------------------------
//          ___                                    ___
// TF   ___|   |__________________________________|   |
//      _______ ___ ___             ___ ___        ___
// TD   _______|___|___|-----------|___|___|------|___|
//              n   n-1             0    n          0
//             |                       |
// Data        | DATA_OUT_L            |DATA_OUT_R


//* Configuration to set in the SSC Transmit Clock Mode Register
//* Parameters :  nb_bit_by_slot : 8, 16 or 32 bits
//* 			  nb_slot_by_frame : number of channels
#define AT91C_DSP_MASTER_TX_SETTING(nb_bit_by_slot, nb_slot_by_frame)( +\
				(unsigned int)AT91C_SSC_CKS_DIV   +\
                (unsigned int)AT91C_SSC_CKO_CONTINOUS      +\
                (unsigned int)AT91C_SSC_START_FALL_RF +\
                (unsigned int) ((((nb_bit_by_slot*nb_slot_by_frame)/2)-1) <<24))

//* Configuration to set in the SSC Transmit Frame Mode Register
//* Parameters : nb_bit_by_slot : 8, 16 or 32 bits
//* 			 nb_slot_by_frame : number of channels
#define AT91C_DSP_TX_FRAME_SETTING(nb_bit_by_slot, nb_slot_by_frame)( +\
				(nb_bit_by_slot-1)  +\
                AT91C_SSC_MSBF   +\
                (((nb_slot_by_frame-1)<<8) & AT91C_SSC_DATNB)  +\
                AT91C_SSC_FSOS_POSITIVE)

// *****************************************************************************


extern void      AT91F_SSC_Start(void);
extern void      AT91F_SSC_Stop(void);

#endif

⌨️ 快捷键说明

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