Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: TWI (i2c) driver не работает на bf537 :(
Форум разработчиков электроники ELECTRONIX.ru > Цифровая обработка сигналов - ЦОС (DSP) > Алгоритмы ЦОС (DSP)
sse
VisualDSP++4.5 Build may 2006
bf537 rev.2
Эмулятора нет. На COM порт статистику вывожу

Ножки резистором подтянул. Смотрю осцилл SDA, SCL - не дергается (а должен же хоть один байт передать. ACK конечно нет)

все функции возвращают SUCCESS.
вот урезано, что я написал:

adi_int_Init(...);
adi_pwr_Init(...);

adi_dev_Init( devmgr_storage,
sizeof(devmgr_storage),
&response_count,
&devmgr_handle,
&imask_storage
);

adi_dev_Open(
devmgr_handle,
&ADITWIEntryPoint,
0,
NULL,
&twi_handle,
ADI_DEV_DIRECTION_BIDIRECTIONAL,
NULL,
NULL,
NULL
);

adi_twi_bit_rate rate={100,50};
ADI_DEV_CMD_VALUE_PAIR twiConfigTable[]= // configuration table for the TWI driver
{
{ ADI_TWI_CMD_SET_HARDWARE, (void *)ADI_INT_TWI },
{ ADI_DEV_CMD_SET_DATAFLOW_METHOD, (void *)ADI_DEV_MODE_SEQ_CHAINED },
{ ADI_TWI_CMD_SET_FIFO, (void *)0x0000 },
{ ADI_TWI_CMD_SET_RATE, (void *)(&rate) },
{ ADI_TWI_CMD_SET_LOSTARB, (void *)1 },
{ ADI_TWI_CMD_SET_ANAK, (void *)0 },
//{ ADI_TWI_CMD_SET_SCCB, 0 },
{ ADI_TWI_CMD_SET_DNAK, (void *)0 },
{ ADI_DEV_CMD_SET_DATAFLOW, (void *)TRUE },
{ ADI_DEV_CMD_END, NULL }
};

te_1 = adi_dev_Control( twi_handle,
ADI_DEV_CMD_TABLE,
twiConfigTable
);

twiOutbound_SEQ_1D_Buffer.Buffer.Data = twiOutbound_Buff;
twiOutbound_SEQ_1D_Buffer.Buffer.ElementWidth = 1;
twiOutbound_SEQ_1D_Buffer.Buffer.CallbackParameter = NULL;
twiOutbound_SEQ_1D_Buffer.Buffer.pAdditionalInfo = (void *)9;
twiOutbound_SEQ_1D_Buffer.Buffer.ProcessedFlag = FALSE;
twiOutbound_SEQ_1D_Buffer.Buffer.pNext = NULL;
twiOutbound_SEQ_1D_Buffer.Direction = ADI_DEV_DIRECTION_OUTBOUND;

twiOutbound_Buff[0] = 0x5;
twiOutbound_Buff[1] = 0x4;
twiOutbound_Buff[2] = 0x7;
twiOutbound_Buff[3] = 0x6;
twiOutbound_Buff[4] = 0x3;
twiOutbound_SEQ_1D_Buffer.Buffer.ElementCount = 200;


adi_dev_Write( twi_handle,
ADI_DEV_SEQ_1D,
(ADI_DEV_BUFFER *)&twiOutbound_SEQ_1D_Buffer
);

В чем проблема может быть??? help.gif
Mihail Gluhowchenko
TWI какойто странный в BF долго ловил асциллографом, что не так, а потом все заработало и тьфу тьфу тьфу все работает smile.gif
Я писал свой драйвер с нуля, используя Линуксовый драйвер, на епромку писать получаеться медленно smile.gif
Чего и вам советую попробуте хотябы так

if ( !(bfin_read_TWI_CONTROL() & TWI_ENA) )
return 10;

while(bfin_read_TWI_MASTER_STAT() & BUSBUSY);

/* Set Transmit device address */
bfin_write_TWI_MASTER_ADDR(0x50);

/* FIFO Initiation. Data in FIFO should be discarded before start a new operation.*/
bfin_write_TWI_FIFO_CTL(0x3);
ssync();
bfin_write_TWI_FIFO_CTL(0);
ssync();

/* Transmit first data */
bfin_write_TWI_XMT_DATA8(iface.transPtr[iface.cur_write++]);
ssync();

/* clear int stat */
bfin_write_TWI_INT_STAT(MERR|MCOMP|XMTSERV|RCVSERV);

/* Interrupt mask . Enable XMT interrupt */
bfin_write_TWI_INT_MASK(MCOMP | MERR | XMTSERV);
ssync();

bfin_write_TWI_MASTER_CTL(((iface.writeNum) << 6));

/* Master enable */
bfin_write_TWI_MASTER_CTL(bfin_read_TWI_MASTER_CTL() | MEN | ((CONFIG_TWICLK_KHZ>100) ? FAST : 0));
ssync();
Должен пройти заголовок и один байтик smile.gif, от этого и пляшите если не прошол значит, читаем внимательно документацию smile.gif
sse
Цитата(Mihail Gluhowchenko @ Jul 13 2007, 07:21) *
Я писал свой драйвер с нуля, используя Линуксовый драйвер, на епромку писать получаеться медленно smile.gif
Чего и вам советую попробуте хотябы так


Драйвера ещё не писал. Разбираться нужно. Потом конечно понабится и уже знаю где. Но сейчас нужно быстрее сделать прототип на готовом...
Goblin_Nick
Для TWI есть примеры стандартные(не использующие правда драйвер), вроде работают.
sse
Цитата(Goblin_Nick @ Aug 7 2007, 14:29) *
Для TWI есть примеры стандартные(не использующие правда драйвер), вроде работают.

Без драйвера сразу всё завелось (там регистров чуть), но так не интересно sad.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.