[an error occurred while processing this directive]
Ответ:
(«Телесистемы»: Конференция «Цифровые сигнальные процессоры (DSP) и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено bv 24 февраля 2005 г. 18:39
В ответ на: Перестаёт работать I2C при повышении частоты TMS5509? отправлено Andre_l 24 февраля 2005 г. 16:32

у Тексаса есть небольшие проблемы с вычислением прескалеров
я пользую вот так и все работает давно и надежно
(возьми что нужно)

void I2C_setup(I2C_Setup *pSetup)
{
ASSERT( pSetup->rate >= 10 && pSetup->rate <= 400);

UINT nSetup = I2C_I2CMDR_RMK(pSetup->free, 0, 0, 0, 1, 1, pSetup->addrmode,0,pSetup->dlb,0, 0, 0, pSetup->bitbyte);

I2C_FSET(I2CMDR, IRS, 0); // !!! reset module
// IRS must be 0 while you configure/reconfigure the I2C module. Forcing IRS
// to 0 can be used to save power and to clear error conditions.
// spru146a.pdf p.19

I2C_RSET(I2CMDR, nSetup);

// set own address (if master don't care)
I2C_RSET(I2COAR, pSetup->ownaddr);

// calculating properly clocking see spru146a.pdf p.5,6
// calculating IPSC
// module_clock = dsp_clock/(IPSC+1)
// I want module_clock = 10 MHz always (must be in range 7-12MHz)
//ASSERT( (pSetup->sysinclock % 12) == 0); // must be module 12
UINT ipsc_val = pSetup->sysinclock / 10 - 1;
I2C_RSET(I2CPSC, ipsc_val);

// calculating the ICCLKL and ICCLKH register values
// bit_rate = module_clock / [ (ICCL+d)+ (ICCH+d) ] spru146a p.6
// parameter d depends on IPSC
UINT d_val;

switch (ipsc_val)
{
case 0:
d_val = 7;
break;
case 1:
d_val = 6;
break;
default:
d_val = 5;
}

UINT iccl_val = (10000/2/pSetup->rate) - d_val;

I2C_RSET(I2CCLKL, iccl_val);
I2C_RSET(I2CCLKH, iccl_val);

I2C_FSET(I2CMDR, IRS, 1); // reset out

// create lock with default attrbutes
hLockI2C = LCK_create(NULL);
ASSERT(hLockI2C);

g_usPerByte = 10000/pSetup->rate; // (~10bit)

}

Составить ответ  |||  Конференция  |||  Архив

Ответы


Отправка ответа

Имя (обязательно): 
Пароль: 
E-mail: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru