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

 
 
 
Reply to this topicStart new topic
> Не хватает портов SPI (AT91SAM7S64), Подключить два ADS1251
rals
сообщение Jul 2 2007, 15:14
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 29-06-06
Пользователь №: 18 472



Стоит задача - подключить два ADS1251. Какие порты можно использовать? Имеющийся SPI уже занят, да и мало одного.
Переходить на другую серию AT91 не хотелось бы.
Прикрепленный файл  ads1251.pdf ( 387.75 килобайт ) Кол-во скачиваний: 530

Прикрепленный файл  slyt222.pdf ( 192.29 килобайт ) Кол-во скачиваний: 319
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 2 2007, 17:05
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(rals @ Jul 2 2007, 18:14) *
Имеющийся SPI уже занят, да и мало одного.
Если я правильно понял ваш вопрос, то вы не до конца представляете как работает SPI. На один SPI можно повесить сколько угодно устройств, ибо выбор конкретного устройства осуществляется выводом ~CS устройства, а этот вывод вы можете управлять любым свободным выходом процессора. Если же вам "ну очень хочется" повесить устройства на разные SPI, то организуйте программный на любых свободных ножках PIO:
Код
uint8_t SPI_exchange(uint8_t data)
{
    uint8_t Counter;
    for(Counter = 0; Counter < 8; ++Counter)
    {
        on(SPI_CLK);
        if(data & (1<<7))
             on(SPI_MOSI);
        else
             off(SPI_MOSI);
        off(SPI_CLK):
        data <<= 1;
        if(signal(SPI_MISO))
            data |= 1;
     }
     return (data);
}


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
rals
сообщение Jul 2 2007, 19:04
Сообщение #3





Группа: Новичок
Сообщений: 5
Регистрация: 29-06-06
Пользователь №: 18 472



Цитата(Сергей Борщ @ Jul 2 2007, 21:05) *
Если я правильно понял ваш вопрос, то вы не до конца представляете как работает SPI. На один SPI можно повесить сколько угодно устройств, ибо выбор конкретного устройства осуществляется выводом ~CS устройства, а этот вывод вы можете управлять любым свободным выходом процессора. Если же вам "ну очень хочется" повесить устройства на разные SPI, то организуйте программный на любых свободных ножках PIO


В ADS1251 неполный SPI - там нет Chip Select.
Использовать программный SPI на два 24 битных АЦП не реально (частота выборки 10 кГц). У проца других забот полно.
Go to the top of the page
 
+Quote Post
proba
сообщение Jul 2 2007, 20:34
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 358
Регистрация: 29-05-05
Пользователь №: 5 526



програмныи SPI можно сделать через прерывание , от таимера. и считать данные из 2х АЦП одновременно. но если такои вожможности нет то стоит подумать о промежуточном накопителе на каком то 8битном, аттини / пик итд.
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Jul 3 2007, 06:48
Сообщение #5


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(rals @ Jul 2 2007, 22:04) *
В ADS1251 неполный SPI - там нет Chip Select.
Скачал даташит. Нет там SPI. Т.е. этот синхронный интерфейс, но это совсем не SPI. Неверный вопрос - неверный ответ laughing.gif. В таком случае proba дал неплохой совет, можно еще поставить буфера с третьим состоянием и через них полключать АЦП на существующий SPI.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
rals
сообщение Jul 3 2007, 09:19
Сообщение #6





Группа: Новичок
Сообщений: 5
Регистрация: 29-06-06
Пользователь №: 18 472



Цитата(Сергей Борщ @ Jul 3 2007, 10:48) *
это совсем не SPI. Неверный вопрос - неверный ответ

Вопрос заключался не в том, SPI там или нет. (Хотя на мой взгляд к SPI это инетрфейс ближе всего). Вопрос в том, на какой порт их повесить, с минимальными затратами времени проца.

Использовать SSC (без Frame Sync) в режиме ПДП, а Clock через внешний коммутатор по таймеру переключать с одного АЦП на другой.
Так возможно?
Go to the top of the page
 
+Quote Post
_4afc_
сообщение Jul 3 2007, 14:38
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 262
Регистрация: 13-10-05
Из: Санкт-Петербург
Пользователь №: 9 565



Цитата(rals @ Jul 3 2007, 13:19) *
Вопрос заключался не в том, SPI там или нет. (Хотя на мой взгляд к SPI это инетрфейс ближе всего). Вопрос в том, на какой порт их повесить, с минимальными затратами времени проца.

Использовать SSC (без Frame Sync) в режиме ПДП, а Clock через внешний коммутатор по таймеру переключать с одного АЦП на другой.
Так возможно?


можно подключить один на SPI другой на SSC
Подключение на SPI неудобно вооще, ибо требует для чтения постоянной выдачи информации в SPI.
Использовать SSC можно. Можно его тактовать снаружи и RF и RK, и в том числе от встроенных таймеров АРМа. Но вот внешний коммутатор для данных вам необходим поскольку ваш АЦП не освобождает линию. Неким внешним блоком надо закоммутировать данные так, чтоб они приходили на RD по очереди. Частота RK =2*3*8*10000Гц. RF может быть на ваш вкус - или меандром соответствующим номеру канала или подсвечивать первый байт.
RF,RK,RD - как входы. При таком раскладе проще поставить PLD или вторую AT91 (Мне удавалось считать программно 4 канала АДМ частотой 130кГц, каждый со своей синхрой, фильтрануть скользящим окном с выдачей далее по SSC с частотой до 16кГц. На MCK=48МГц.)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 15th August 2025 - 05:34
Рейтинг@Mail.ru


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