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

Отправлено Илья Гаврилов 13 апреля 2002 г. 17:06
В ответ на: Подкинте инфу по сопряжению ADSP-2181 и AVR по SPI шине. Заранее спасибо отправлено Andy Дюх 10 апреля 2002 г. 12:44

У меня мастером работает AVR. Ноги соединены
DT0 - MISO
DR0 - MOSI
SCLK0 - SCK
TFS0 - RFS0 - PB4

В ADSP инициализация такая:
ar = RFSR | RFSW | TFSR | TFSW | 7;
dm(Sport0_Ctrl_Reg) = ar;

В AVR инициализация такая:
CBI( PORTB, 4 );
SPCR = (1<// SPI enabled, SPI interrupt disabled
// MSB first, master, CPHA=0, CPOL=1, Fclk = Fosc/4
tmp = SPSR;
tmp = SPDR; // clear SPIF
// SPI cycle WITHOUT frame sync
SPDR = 0;
while ( !( SPSR & (1< ;
tmp = SPDR;
}

AVR должен инициализировать SPI после ADSP. Цикл без фреймсинка нужен, поскольку SPORT проглатывает два первых клока после инициализации.

Ну и собственно обмен:
BYTE spi( BYTE c )
{
SBI( PORTB, 4 ); // fsync high
SPDR = c;
while ( !( SPSR & (1< ;
CBI( PORTB, 4 ); // fsync low
return SPDR;
}

В ADSP жизнь происходит по прерываниям.

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

Ответы


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

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

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

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

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


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

E-mail: info@telesys.ru