ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
176691
BBulat (24.12.2009 07:59, просмотров: 6810)
Не удается сконфигурировать модуль SSC в котроллере at91sam7s для работы в режиме TF. В основном цикле программы каждый раз обновляется datA при условии свободного буфера передатчика SSC. В начале передачи каждого 32-битного слова необходимо выдерживать паузу 4 такта. При окончании передачи SSC должен сам останавливаться. Вывод TF я не использую, но при этом условия старта - положительный уровень на выходе TF. 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 = 240; //100 кГц //* Write the Transmit Clock Mode Register AT91C_BASE_SSC->SSC_TCMR = (15 << 24) & AT91C_SSC_PERIOD | (4<<16) & AT91C_SSC_STTDLY | AT91C_SSC_START_HIGH_RF | (0x2 << 6) | AT91C_SSC_CKI | AT91C_SSC_CKO_DATA_TX | AT91C_SSC_CKS_DIV; //* Write the Transmit Frame Mode Register AT91C_BASE_SSC->SSC_TFMR = AT91C_SSC_FSDEN | AT91C_SSC_FSOS_HIGH | (0<<8) & AT91C_SSC_DATNB | (31<<0) & AT91C_SSC_DATLEN; } void AT91F_SSC_Start(void) { AT91C_BASE_SSC->SSC_CR = AT91C_SSC_TXEN; AT91C_BASE_SSC->SSC_THR = datA; } void main() { while(1) { if(AT91C_BASE_SSC->SSC_SR & AT91C_SSC_TXBUFE) {write(datA); AT91F_SSC_Start();} } } Как правильно настроить SSC в режиме TF? Во время начальной задержки передачи данных, поле (4<<16) & AT91C_SSC_STTDLY, на выходе TK будут идти тактовые импульсы? Если да, то возможно ли, чтобы они не шли во время начальной задержки?