Код
//++++++++++++++++++++++++++--SSC--+++++++++++++++++++++++++++++++++++++++++++++
void AT91F_SSC_Conf ()
{
// Setup ssc
AT91F_SSC_CfgPMC(); /* Enable MCK clock */
// pio Special configuration
AT91F_SSC_CfgPIO();
//* Disable interrupts
AT91C_BASE_SSC->SSC_IDR = 0xfff;
//* Reset receiver and transmitter
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_TXDIS;
//* Define the Clock Mode Register
AT91C_BASE_SSC->SSC_CMR = 92; //100 кГц
//* Write the Transmit Clock Mode Register
AT91C_BASE_SSC->SSC_TCMR = (4<<16) & AT91C_SSC_STTDLY | AT91C_SSC_START_CONTINOUS | AT91C_SSC_CKI | AT91C_SSC_CKO_CONTINOUS | AT91C_SSC_CKS_DIV;
//* Write the Transmit Frame Mode Register
AT91C_BASE_SSC->SSC_TFMR = (32<<0) & AT91C_SSC_DATLEN;
}
//AT91F_SSC_Start
void AT91F_SSC_Start(void)
{
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_TXEN;
AT91C_BASE_SSC->SSC_THR = datA; //Запись 32-битного слова в буфер передатчика
}
// AT91F_SSC_Stop
void AT91F_SSC_Stop(void)
{
//* Reset receiver and transmitter
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_TXDIS;
}
void AT91F_SSC_Conf ()
{
// Setup ssc
AT91F_SSC_CfgPMC(); /* Enable MCK clock */
// pio Special configuration
AT91F_SSC_CfgPIO();
//* Disable interrupts
AT91C_BASE_SSC->SSC_IDR = 0xfff;
//* Reset receiver and transmitter
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_TXDIS;
//* Define the Clock Mode Register
AT91C_BASE_SSC->SSC_CMR = 92; //100 кГц
//* Write the Transmit Clock Mode Register
AT91C_BASE_SSC->SSC_TCMR = (4<<16) & AT91C_SSC_STTDLY | AT91C_SSC_START_CONTINOUS | AT91C_SSC_CKI | AT91C_SSC_CKO_CONTINOUS | AT91C_SSC_CKS_DIV;
//* Write the Transmit Frame Mode Register
AT91C_BASE_SSC->SSC_TFMR = (32<<0) & AT91C_SSC_DATLEN;
}
//AT91F_SSC_Start
void AT91F_SSC_Start(void)
{
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_TXEN;
AT91C_BASE_SSC->SSC_THR = datA; //Запись 32-битного слова в буфер передатчика
}
// AT91F_SSC_Stop
void AT91F_SSC_Stop(void)
{
//* Reset receiver and transmitter
AT91C_BASE_SSC->SSC_CR = AT91C_SSC_SWRST | AT91C_SSC_TXDIS;
}
Правильно ли так конфигурировать SSC без использования PDMA-контроллера? И значительно ли разгружает процессор использования PDMA при передачи?