📄 lib_ssc.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 + -