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

 
 
 
Reply to this topicStart new topic
> TWI (i2c) driver не работает на bf537 :(
sse
сообщение Jul 12 2007, 11:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 8-03-05
Из: Россия, Суздаль
Пользователь №: 3 159



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


--------------------
Serj
Go to the top of the page
 
+Quote Post
Mihail Gluhowche...
сообщение Jul 13 2007, 03:21
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 732
Регистрация: 24-01-07
Из: Novosibirsk
Пользователь №: 24 710



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
Go to the top of the page
 
+Quote Post
sse
сообщение Jul 14 2007, 07:24
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 8-03-05
Из: Россия, Суздаль
Пользователь №: 3 159



Цитата(Mihail Gluhowchenko @ Jul 13 2007, 07:21) *
Я писал свой драйвер с нуля, используя Линуксовый драйвер, на епромку писать получаеться медленно smile.gif
Чего и вам советую попробуте хотябы так


Драйвера ещё не писал. Разбираться нужно. Потом конечно понабится и уже знаю где. Но сейчас нужно быстрее сделать прототип на готовом...


--------------------
Serj
Go to the top of the page
 
+Quote Post
Goblin_Nick
сообщение Aug 7 2007, 10:29
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 79
Регистрация: 23-10-06
Из: Тула
Пользователь №: 21 599



Для TWI есть примеры стандартные(не использующие правда драйвер), вроде работают.
Go to the top of the page
 
+Quote Post
sse
сообщение Aug 7 2007, 10:33
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 20
Регистрация: 8-03-05
Из: Россия, Суздаль
Пользователь №: 3 159



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

Без драйвера сразу всё завелось (там регистров чуть), но так не интересно sad.gif


--------------------
Serj
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 09:43
Рейтинг@Mail.ru


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