Description
Source
Call Graph
Start Line: 218
void AT73C213_Enable(unsigned int Fs, unsigned int sampleSize, unsigned int numChannels, unsigned char isClock384, unsigned int masterClock)
{
// Configure the SPI peripheral chip select
SPI_ConfigureNPCS(BOARD_AT73C213_SPI,
BOARD_AT73C213_SPI_NPCS,
AT73C213_SPI_NPCSCONFIG(masterClock));
// DAC startup sequence
// De-assert reset
AT73C213_Write(AT73C213_DAC_RST,
AT73C213_DAC_RST_RSTZ
| AT73C213_DAC_RST_RESFILZ);
// Precharge and turn on master power
AT73C213_Write(AT73C213_DAC_PRECH,
AT73C213_DAC_PRECH_ONMSTR
| AT73C213_DAC_PRECH_ALL);
// Enable line out drivers
AT73C213_Write(AT73C213_DAC_CTRL,
AT73C213_DAC_CTRL_ONLNOL
| AT73C213_DAC_CTRL_ONLNOR);
// TODO 500 ms delay
// Stop precharging
AT73C213_Write(AT73C213_DAC_PRECH, AT73C213_DAC_PRECH_ONMSTR);
// TODO 1ms delay
// Enable DACs
AT73C213_Write(AT73C213_DAC_CTRL,
AT73C213_DAC_CTRL_ONLNOL
| AT73C213_DAC_CTRL_ONLNOR
| AT73C213_DAC_CTRL_ONDACL
| AT73C213_DAC_CTRL_ONDACR);
// Select master clock speed
if (isClock384) {
AT73C213_Write(AT73C213_DAC_CSFC, AT73C213_DAC_CSFC_OVRSEL);
}
// Output DAC register values
unsigned int i;
TRACE_DEBUG_WP("DAC register values:\n\r");
for (i=0; i <= AT73C213_PA_CTRL; i++) {
TRACE_DEBUG_WP(" - @0x%02X = 0x%02X\n\r", i, AT73C213_Read(i));
}
// Unmute channels
AT73C213_SetMuteStatus(0, 0);
// Configure the SSC
SSC_Configure(BOARD_AT73C213_SSC,
BOARD_AT73C213_SSC_ID,
Fs * sampleSize * 8 * numChannels,
masterClock);
SSC_ConfigureTransmitter(BOARD_AT73C213_SSC,
AT73C213_TCMR(sampleSize, numChannels),
AT73C213_TFMR(sampleSize, numChannels));
SSC_EnableTransmitter(BOARD_AT73C213_SSC);
}