реклама на сайте
подробности

 
 
> Алгоритм программирования частоты TWI
LoLo
сообщение Apr 18 2011, 09:43
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 40
Регистрация: 22-12-08
Пользователь №: 42 664



Как программируется частота TWI в AT91sam7x? Какой алгоритм?
Если можно, то функцию привести.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Georg_M_B0
сообщение Apr 18 2011, 16:12
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 1-02-07
Пользователь №: 24 958



Вообщето непонятно почему спрашиваете, вот из Атмеловского примера:

//------------------------------------------------------------------------------
/// Configures a TWI peripheral to operate in master mode, at the given
/// frequency (in Hz). The duty cycle of the TWI clock is set to 50%.
/// \param pTwi Pointer to an AT91S_TWI instance.
/// \param twck Desired TWI clock frequency.
/// \param mck Master clock frequency.
//------------------------------------------------------------------------------
void TWI_ConfigureMaster(AT91S_TWI *pTwi, unsigned int twck, unsigned int mck)
{
unsigned int ckdiv = 0;
unsigned int cldiv;
unsigned char ok = 0;

TRACE_DEBUG("TWI_ConfigureMaster()\n\r");
SANITY_CHECK(pTwi);

#ifdef AT91C_TWI_SVEN // TWI slave
// SVEN: TWI Slave Mode Enabled
pTwi->TWI_CR = AT91C_TWI_SVEN;
#endif
// Reset the TWI
pTwi->TWI_CR = AT91C_TWI_SWRST;
pTwi->TWI_RHR;

// TWI Slave Mode Disabled, TWI Master Mode Disabled
#ifdef AT91C_TWI_SVEN // TWI slave
pTwi->TWI_CR = AT91C_TWI_SVDIS;
#endif
pTwi->TWI_CR = AT91C_TWI_MSDIS;

// Set master mode
pTwi->TWI_CR = AT91C_TWI_MSEN;

// Configure clock
while (!ok) {
#if defined(__ARMCC_VERSION)
cldiv = ((mck / (2 * twck)) - 3) / pow(2, ckdiv);
#else
cldiv = ((mck / (2 * twck)) - 3) / power(2, ckdiv);
#endif
if (cldiv <= 255) {

ok = 1;
}
else {

ckdiv++;
}
}

ASSERT(ckdiv < 8, "-F- Cannot find valid TWI clock parameters\n\r");
TRACE_DEBUG("Using CKDIV = %u and CLDIV/CHDIV = %u\n\r", ckdiv, cldiv);
pTwi->TWI_CWGR = 0;
pTwi->TWI_CWGR = (ckdiv << 16) | (cldiv << 8) | cldiv;
}


Вызов
TWI_ConfigureMaster(AT91C_BASE_TWI, TWCK, BOARD_MCK);

TWCK частота TWI в герцах,
BOARD_MCK частота прцесора в герцах.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 18:01
Рейтинг@Mail.ru


Страница сгенерированна за 0.01377 секунд с 7
ELECTRONIX ©2004-2016