Beispiel #1
0
    EDMA_FMK (CNT, FRMCNT, NULL)       |  // Frame count
    EDMA_FMK (CNT, ELECNT, BUFFSIZE),     // Element count

    (Uint32)&gBufferRcvPing,              // Dest address

    EDMA_FMKS(IDX, FRMIDX, DEFAULT)    |  // Frame index value
    EDMA_FMKS(IDX, ELEIDX, DEFAULT),      // Element index value

    EDMA_FMK (RLD, ELERLD, NULL)       |  // Reload element
    EDMA_FMK (RLD, LINK, NULL)            // Reload link
};

/* McBSP codec data channel configuration */
static MCBSP_Config mcbspCfg1 = {
        MCBSP_FMKS(SPCR, FREE, NO)              |
        MCBSP_FMKS(SPCR, SOFT, NO)              |
        MCBSP_FMKS(SPCR, FRST, YES)             |
        MCBSP_FMKS(SPCR, GRST, YES)             |
        MCBSP_FMKS(SPCR, XINTM, XRDY)           |
        MCBSP_FMKS(SPCR, XSYNCERR, NO)          |
        MCBSP_FMKS(SPCR, XRST, YES)             |
        MCBSP_FMKS(SPCR, DLB, OFF)              |
        MCBSP_FMKS(SPCR, RJUST, RZF)            |
        MCBSP_FMKS(SPCR, CLKSTP, DISABLE)       |
        MCBSP_FMKS(SPCR, DXENA, OFF)            |
        MCBSP_FMKS(SPCR, RINTM, RRDY)           |
        MCBSP_FMKS(SPCR, RSYNCERR, NO)          |
        MCBSP_FMKS(SPCR, RRST, YES),

        MCBSP_FMKS(RCR, RPHASE, SINGLE)         |
Beispiel #2
0
#pragma DATA_SECTION(Buffer_in_pong, ".datenpuffer");
short Buffer_in_pong[BUFFER_LEN];
#pragma DATA_SECTION(Buffer_in_peng, ".datenpuffer");
short Buffer_in_peng[BUFFER_LEN];
#pragma DATA_SECTION(Buffer_out_ping, ".datenpuffer");
short Buffer_out_ping[BUFFER_LEN];
#pragma DATA_SECTION(Buffer_out_pong, ".datenpuffer");
short Buffer_out_pong[BUFFER_LEN];
#pragma DATA_SECTION(Buffer_out_peng, ".datenpuffer");
short Buffer_out_peng[BUFFER_LEN];

//Configuration for McBSP1 (data-interface)
MCBSP_Config datainterface_config =
{
		/* McBSP Control Register */
        MCBSP_FMKS(SPCR, FREE, NO)              |	//  Freilauf
        MCBSP_FMKS(SPCR, SOFT, NO)         		|		//EIGEN!!!:		beim Debuggen stoppt auch die Übertragung bei einem Stop
        MCBSP_FMKS(SPCR, FRST, YES)             |	// Framesync ist ein
        MCBSP_FMKS(SPCR, GRST, YES)             |	// Reset aus, damit läuft der Samplerate- Generator
        MCBSP_FMKS(SPCR, XINTM, XRDY)          	|		//EIGEN!!!:		XINT is generated on every serial element by tracking the XRDY bits in SPCR (Muss Interrupt nicht an EDMA weitergegeben werden?)
        MCBSP_FMKS(SPCR, XSYNCERR, NO)          |	// empfängerseitig keine Überwachung der Synchronisation
        MCBSP_FMKS(SPCR, XRST, YES)             |	// Sender läuft (kein Reset- Status)	
        MCBSP_FMKS(SPCR, DLB, OFF)              |	// Loopback (Kurschluss) nicht aktiv
        MCBSP_FMKS(SPCR, RJUST, RZF)            |	// rechtsbündige Ausrichtung der Daten im Puffer
        MCBSP_FMKS(SPCR, CLKSTP, DISABLE)       |	// Clock startet ohne Verzögerung auf fallenden Flanke (siehe auch PCR-Register)
        MCBSP_FMKS(SPCR, DXENA, OFF)            |	// DX- Enabler wird nicht verwendet
        MCBSP_FMKS(SPCR, RINTM, RRDY)           |	// Sender Interrupt wird durch "RRDY-Bit" ausgelöst
        MCBSP_FMKS(SPCR, RSYNCERR, NO)          |	// senderseitig keine Überwachung der Synchronisation
        MCBSP_FMKS(SPCR, RRST, YES),				// Empfänger läuft (kein Reset- Status)

		/* Empfangs-Control Register */
Beispiel #3
0
#define BUFFER_LEN 50000
/* Ping-Pong buffers. Place them in the compiler section .datenpuffer */
/* How do you place the compiler section in the memory?     */
#pragma DATA_SECTION(Buffer_in_ping, ".datenpuffer");
short Buffer_in_ping[BUFFER_LEN];
#pragma DATA_SECTION(Buffer_in_pong, ".datenpuffer");
short Buffer_in_pong[BUFFER_LEN];
#pragma DATA_SECTION(Buffer_out_ping, ".datenpuffer");
short Buffer_out_ping[BUFFER_LEN];
#pragma DATA_SECTION(Buffer_out_pong, ".datenpuffer");
short Buffer_out_pong[BUFFER_LEN];

//Configuration for McBSP1 (data-interface)
MCBSP_Config datainterface_config = {
		/* McBSP Control Register */
        MCBSP_FMKS(SPCR, FREE, NO)              |	//  Freilauf
        MCBSP_FMKS(SPCR, SOFT, YES)		        |	// YES:  Soft mode is enabled. During emulation halt, serial port clock stops after completion of current transmission.
        MCBSP_FMKS(SPCR, FRST, YES)             |	// Framesync ist ein
        MCBSP_FMKS(SPCR, GRST, YES)             |	// Reset aus, damit läuft der Samplerate- Generator
        MCBSP_FMKS(SPCR, XINTM, XRDY)           |	// XINT is driven by XRDY (end-of-word) and end-of-frame in A-bis mode.
        MCBSP_FMKS(SPCR, XSYNCERR, NO)          |	// empfängerseitig keine Überwachung der Synchronisation
        MCBSP_FMKS(SPCR, XRST, YES)             |	// Sender läuft (kein Reset- Status)	
        MCBSP_FMKS(SPCR, DLB, OFF)              |	// Loopback (Kurschluss) nicht aktiv
        MCBSP_FMKS(SPCR, RJUST, RZF)            |	// rechtsbündige Ausrichtung der Daten im Puffer
        MCBSP_FMKS(SPCR, CLKSTP, DISABLE)       |	// Clock startet ohne Verzögerung auf fallenden Flanke (siehe auch PCR-Register)
        MCBSP_FMKS(SPCR, DXENA, OFF)            |	// DX- Enabler wird nicht verwendet
        MCBSP_FMKS(SPCR, RINTM, RRDY)           |	// Sender Interrupt wird durch "RRDY-Bit" ausgelöst
        MCBSP_FMKS(SPCR, RSYNCERR, NO)          |	// senderseitig keine Überwachung der Synchronisation
        MCBSP_FMKS(SPCR, RRST, YES),			// Empfänger läuft (kein Reset- Status)
		/* Empfangs-Control Register */
        MCBSP_FMKS(RCR, RPHASE, SINGLE)         |	// Nur eine Phase pro Frame
	                                                                           \
	    0x0001, /* Set-Up Reg 8       Sample rate control */                     \
	            /* X       0          reserved */                                \
	            /* CLKOUT  0          clock output divider: 2 (MCLK/2) */        \
	            /* CLKIN   0          clock input divider: 2 (MCLK/2) */         \
	            /* SR,BOSR 00000      sampling rate: ADC 48 kHz, DAC 48 kHz in USB mode*/  \
	            /* USB/N   1          clock mode select (USB/normal): USB */     \
	                                                                             \
	    0x0001  /* Set-Up Reg 9       Digital interface activation */            \
	            /* XX..X   00000000   reserved */                                \
	            /* ACT     1          not reseted */                                  \
	};
//Konfig Struktur McBSP0
static MCBSP_Config mcbspforAIC23Cfg = {
        /* McBSP Control Register */
		MCBSP_FMKS(SPCR, FREE, NO)              |	// Deaktivierter Freilauf
        MCBSP_FMKS(SPCR, SOFT, NO)              |	// Clock stoppt beim debuggen (sofort)
        MCBSP_FMKS(SPCR, FRST, YES)             |	//															/*********/
        MCBSP_FMKS(SPCR, GRST, YES)             |	// Reset aus, damit läuft der Samplerate- Generator
        MCBSP_FMKS(SPCR, XINTM, XRDY)           |	// Sender Interrupt wird durch "XRDY-Bit" ausgelöst
        MCBSP_FMKS(SPCR, XSYNCERR, NO)          |	// keine Überwachung der Synchronisation
        MCBSP_FMKS(SPCR, XRST, YES)             |	//															/*********/
        MCBSP_FMKS(SPCR, DLB, OFF)              |	// Loopback  nicht aktiv
        MCBSP_FMKS(SPCR, RJUST, RZF)            |	// Right justify and zero fill
        MCBSP_FMKS(SPCR, CLKSTP, NODELAY)       |	// Clock startet ohne Verzögerung auf fallenden Flanke (siehe auch PCR-Register)
        MCBSP_FMKS(SPCR, DXENA, OFF)            |	// DX- Enabler wird nicht verwendet
        MCBSP_FMKS(SPCR, RINTM, RRDY)           |	// Sender Interrupt wird durch "RRDY-Bit" ausgelöst
        MCBSP_FMKS(SPCR, RSYNCERR, NO)          |	//  keine Überwachung der Synchronisation
        MCBSP_FMKS(SPCR, RRST, YES),			// Empfänger läuft (kein Reset- Status)
		/* Empfangs-Control Register */
        MCBSP_FMKS(RCR, RPHASE, DEFAULT)        |	// Nur eine Phase pro Frame
	//				1	RESERVED
	//				2	In SPI mode, clock starts with delay. Triggering edge depends on CLKXP.
	//				3	In SPI mode, clock starts without delay. Triggering edge depends on CLKXP.
	//	10-8	RESERVED
	//	7	DXENA	DX Enable. If set, DX is enabled.
	//	6	RESERVED
	//	5-4	RINTM	Receive Interupt (RINT) Enable.
	//				0	RINT driven by RRDY, end of word and end of frame
	//				1	RINT generated by end of block and end of frame
	//				2	RINT generated by new frame sync
	//				3	RINT generated by RSYNCERR
	//	3	RSYNCERR Receive Sync Error. If set then error has been detected.
	//	2	RFULL	Receive Shift Register Full. If set then RSR is full.				STATUS
	//	1	RRDY	Receiver Ready. If set then receiver ready for new data in DRR to be read.	STATUS
	//	0	RRST	Receiver Reset. If not set then receiver disabled.
	MCBSP_FMKS(SPCR, FREE, NO) |		//Do not run clock when halted
	MCBSP_FMKS(SPCR, SOFT, NO) |		//Clocks stop instantly
	MCBSP_FMKS(SPCR, FRST, YES) |		//Generate Frame Sync
	MCBSP_FMKS(SPCR, GRST, YES) |		//Generate Sample Rate
	MCBSP_FMKS(SPCR, XINTM, XRDY) |		//XINT driven by XRDY
	MCBSP_FMKS(SPCR, XSYNCERR, NO) |	//Error checking used
	MCBSP_FMKS(SPCR, XRST, YES) |		//Enable Transmitter
	MCBSP_FMKS(SPCR, DLB, OFF) |		//No digital loop back
	MCBSP_FMKS(SPCR, RJUST, RZF) |		//Right justify, 0 fill
	MCBSP_FMKS(SPCR, CLKSTP, DISABLE) |	//Clock stop disabled
	MCBSP_FMKS(SPCR, DXENA, OFF) |		//DX disabled
	MCBSP_FMKS(SPCR, RINTM, RRDY) |		//RINT driven by RRDY
	MCBSP_FMKS(SPCR, RSYNCERR, NO) |	//Error checking used
	MCBSP_FMKS(SPCR, RRST, YES),		//Enable Receiver
	
	//RCR - Receive Control Register