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

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> скорость SPI, что быстрее програмный или апаратный?
rx3apf
сообщение Feb 19 2007, 20:36
Сообщение #16


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(=GM= @ Feb 19 2007, 20:24) *
Цитата(rx3apf @ Feb 19 2007, 16:58) *

Цитата(=GM= @ Feb 19 2007, 19:42) *

Цитата(yarunt @ Feb 19 2007, 08:10) *

Нужен быстрый вывод байта на SPI. Вопрос к знающим какой быстрее апаратный или програмный? И еще вопрос как реализовать по апаратному spi 9 бит....возможно ли это?

Ну раз SPI никак нельзя использовать для передачи 9 бит, попробуйте использовать USART в СИНХРОННОМ режиме для передачи 9 бит, он допускает работу до Fclk/2. Сам так не пробовал, но не вижу причин, которые могут помешать.

Вот только синхронный режим USART у AVR неполноценный. Обычно под "синхронным" понимается использование байтов синхронизации и указанное число битов данных, без старт- и стоп- битов, которые как раз свойственны асинхронной передаче. И вся "синхронность" - только в наличии дополнительного сигнала синхронизации и большей скорости. Как следствие - первый бит всегда будет нулевым, последний - "единичным". И использовать это для 9-битной передачи по SPI при всем желании невозможно физически...

Это что ж выходит, нельзя передать инфу без искажений от ведущего МК к ведомому в синхронном режиме? Что-то меня гложут сомнения(:-). Зачем тогда такой режим нужен?

_Информацию_ можно. Но структура информации будет такой же, как и в асинхронном режиме - т.е. старт-бит, данные, [паритет], стоп.


Цитата(rx3apf @ Feb 19 2007, 16:58) *
Обычно под "синхронным" понимается использование байтов синхронизации и указанное число битов данных, без старт- и стоп- битов, которые как раз свойственны асинхронной передаче.

Цитата(=GM= @ Feb 19 2007, 20:24) *
Что такое "байтов синхронизации"? Как-то сложно всё(:-).

Это (байты или биты синхронизации) используется в синхронных протоколах, когда нет возможности определить начало посылки иным способом. Типично - в беспроводных системах передачи данных. Идет шум или поток данных, некоторая последовательность проверяется коррелятором, при превышении порога (или точном совпадении - зависит от назначения) запускается приемник. Еще синхронные трансиверы типично умеют сами считать CRC16, поскольку скорости большие, и вычислять CRC программно - очень накладно.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Feb 20 2007, 02:29
Сообщение #17


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(rx3apf @ Feb 19 2007, 17:36) *
Цитата(=GM= @ Feb 19 2007, 20:24) *

Это что ж выходит, нельзя передать инфу без искажений от ведущего МК к ведомому в синхронном режиме? Что-то меня гложут сомнения(:-). Зачем тогда такой режим нужен?

_Информацию_ можно. Но структура информации будет такой же, как и в асинхронном режиме - т.е. старт-бит, данные, [паритет], стоп.

Ну так! Человек вроде и спрашивал
Цитата
Нужен быстрый вывод байта на SPI. Вопрос к знающим какой быстрее апаратный или програмный? И еще вопрос как реализовать по апаратному spi 9 бит....возможно ли это?

Вот он вытолкнет 9 бит, а на другой стороне примет, какое ему дело, что будет дополнительно передаваться старт и стоп биты? А вы говорите невозможно...
Цитата(rx3apf @ Feb 19 2007, 17:36) *
Цитата(=GM= @ Feb 19 2007, 20:24) *

Что такое "байтов синхронизации"? Как-то сложно всё(:-).

Это (байты или биты синхронизации) используется в синхронных протоколах, когда нет возможности определить начало посылки иным способом. Типично - в беспроводных системах передачи данных. Идет шум или поток данных, некоторая последовательность проверяется коррелятором, при превышении порога (или точном совпадении - зависит от назначения) запускается приемник. Еще синхронные трансиверы типично умеют сами считать CRC16, поскольку скорости большие, и вычислять CRC программно - очень накладно.

Не, в беспроводных эт понятно, там нет провода синхронизации, приходится её вырабатывать на приёмном конце, да это еще не все, передаётся несущая, чтобы подстроить местный гетеродин, потом преамбула, чтобы подстроить тактовую частоту, потом передается кодовое слово, или фазовый пуск, или по-вашему, байты синхронизации, чтобы указать начало инфобит (вот у меня один раз было изделие, так там был фазовый пуск длиной 288 бит, ей-богу не вру!).

Но при чём здесь беспроводные системы? Автору надо передать 9 бит и 9 импульсов синхронизации.
Предлагается решение 11 бит (добавляется старт и стоп) и 11 импульсов, скорость 8 мбод при тактовой 16 МГц. И все довольны, особенно автор топика. Почему нельзя использовать?


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Feb 20 2007, 03:31
Сообщение #18


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(=GM= @ Feb 20 2007, 02:29) *
Но при чём здесь беспроводные системы? Автору надо передать 9 бит и 9 импульсов синхронизации.
Предлагается решение 11 бит (добавляется старт и стоп) и 11 импульсов, скорость 8 мбод при тактовой 16 МГц. И все довольны, особенно автор топика. Почему нельзя использовать?

Автору надо передать 9 битов данных. А будет передано 11, причем два из них с жестко заданными значениями. Для чего, кому и куда надо передать данные - в вопросе не было. Типично, обмен по SPI таких извращений не позволяет. Хотя и значения, не кратные 8 битам, тоже экзотика. Если получатель допускает такой формат посылки - да, можно так и сделать. А если нет - облом.
Go to the top of the page
 
+Quote Post
mse
сообщение Feb 20 2007, 10:14
Сообщение #19


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(rx3apf @ Feb 20 2007, 03:31) *
Автору надо передать 9 битов данных. А будет передано 11, причем два из них с жестко заданными значениями. Для чего, кому и куда надо передать данные - в вопросе не было. Типично, обмен по SPI таких извращений не позволяет. Хотя и значения, не кратные 8 битам, тоже экзотика. Если получатель допускает такой формат посылки - да, можно так и сделать. А если нет - облом.

Как правило, получатель именно требует такой формат ;О) ЦАПы,АЦПы... Есть вариант, некратные 8 биты совать программно, а 8-бит аппаратно. Или формировать посылку так, чтобы передавать кратно 8 битам, а остаток ненужных бит впустую вдвигался в приёмник и там погибал. Безвестно. Делал и так, и так.
Go to the top of the page
 
+Quote Post
yarunt
сообщение Feb 20 2007, 10:17
Сообщение #20


Местный
***

Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476



Цитата(=GM= @ Feb 19 2007, 20:42) *
Цитата(yarunt @ Feb 19 2007, 08:10) *

Нужен быстрый вывод байта на SPI. Вопрос к знающим какой быстрее апаратный или програмный? И еще вопрос как реализовать по апаратному spi 9 бит....возможно ли это?

Ну раз SPI никак нельзя использовать для передачи 9 бит, попробуйте использовать USART в СИНХРОННОМ режиме для передачи 9 бит, он допускает работу до Fclk/2. Сам так не пробовал, но не вижу причин, которые могут помешать.

Я так понял ...юарт будет дату а клок... чем выводить?


--------------------
Нельзя впихнуть,невпихуемое?МОЙ БЛОГ
Go to the top of the page
 
+Quote Post
GDI
сообщение Feb 20 2007, 10:54
Сообщение #21


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

Группа: Свой
Сообщений: 1 235
Регистрация: 14-05-05
Из: Санкт-Петербург
Пользователь №: 5 008



Цитата
Я так понял ...юарт будет дату а клок... чем выводить?

Не правильно понял, да и не в том направлении тебя отправили.
Лучше расскажи общественности зачем тебе надо 9 байт по SPI передавать, чем управлять собираешься?
Цитата
формировать посылку так, чтобы передавать кратно 8 битам, а остаток ненужных бит впустую вдвигался в приёмник и там погибал.

Вот это , возможно, более правильный вариант, но надо смотреть как именно воспримет это целевое устройство. Т.е. делать нужно так, берете 2 байта, 11111111 10000000, здесь "1" - это, условно, данные - 9 бит, теперь передаем через SPI байт 10000000, младшим битом вперед, затем второй байт 11111111, таким образом у нас не значащие "0" выталкиваются из сдвигового регистра приемника в никуда и в нем остаются только 9 бит значимых данных, у нас они помечены как "1". А спрогнозировать как поведет себя подчиненный можно прочитав даташит на него.


--------------------
http://www.embedders.org Блоги разработчиков электроники.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Feb 20 2007, 12:18
Сообщение #22


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(mse @ Feb 20 2007, 10:14) *
Цитата(rx3apf @ Feb 20 2007, 03:31) *

Автору надо передать 9 битов данных. А будет передано 11, причем два из них с жестко заданными значениями. Для чего, кому и куда надо передать данные - в вопросе не было. Типично, обмен по SPI таких извращений не позволяет. Хотя и значения, не кратные 8 битам, тоже экзотика. Если получатель допускает такой формат посылки - да, можно так и сделать. А если нет - облом.

Как правило, получатель именно требует такой формат ;О) ЦАПы,АЦПы... Есть вариант, некратные 8 биты совать программно, а 8-бит аппаратно. Или формировать посылку так, чтобы передавать кратно 8 битам, а остаток ненужных бит впустую вдвигался в приёмник и там погибал. Безвестно. Делал и так, и так.

Любопытно, никогда таких не видел. Пример можно ? А то все, с которыми я имел дело, имели четко кратный байту формат, и без фиксированных значений битов в обрамлении кадра. Самое изратное, что приходилось видеть - это SPI-режим у VNC-1L. Вот тут да, ужас, летящий на крыльях ночи...
Go to the top of the page
 
+Quote Post
mse
сообщение Feb 20 2007, 13:37
Сообщение #23


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(rx3apf @ Feb 20 2007, 12:18) *
Любопытно, никогда таких не видел. Пример можно ?

AD840x, AD520x...Говорю-ж ЦАПы, АЦАпы. Тыкай в любого, особенно если многоканальное чего.
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Feb 20 2007, 14:31
Сообщение #24


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(mse @ Feb 20 2007, 13:37) *
Цитата(rx3apf @ Feb 20 2007, 12:18) *

Любопытно, никогда таких не видел. Пример можно ?

AD840x, AD520x...Говорю-ж ЦАПы, АЦАпы. Тыкай в любого, особенно если многоканальное чего.

AD840x - это цифровые потенциометры (это не совсем DAC). Да, действительно, 10-битная посылка. Но вовсе не толерантная к лишним фиксированным битам, насколько я могу судить. AD5203 - тоже потенциометр. Стандартная 8-битная посылка. AD5200 - 8-битная. 5201 - шестибитная. А, ну еще 5207 - с десятибитной. А вот если "ткнуть" в типичные ADC и DAC - AD420 два байта, AD770x - 8/16/24 бита (это с которыми я работал). Так что исключения - редчайшие, и это, скорее всего, встречается только у очень древних продуктов, в те времена аппаратный SPI у микроконтроллеров был скорее исключением, чем правилом...
Go to the top of the page
 
+Quote Post
yarunt
сообщение Feb 20 2007, 15:03
Сообщение #25


Местный
***

Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476



[quote name='GDI' date='Feb 20 2007, 11:54' post='213431']
[quote]Я так понял ...юарт будет дату а клок... чем выводить?[/quote]
Не правильно понял, да и не в том направлении тебя отправили.
Лучше расскажи общественности зачем тебе надо 9 байт по SPI передавать, чем управлять собираешься?






Цветной дисплей с спи ...9-й бит идет как бит команды....нужно дисплей как можно быстрее заполнять.

Сообщение отредактировал yarunt - Feb 20 2007, 15:04


--------------------
Нельзя впихнуть,невпихуемое?МОЙ БЛОГ
Go to the top of the page
 
+Quote Post
=GM=
сообщение Feb 20 2007, 15:24
Сообщение #26


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(yarunt @ Feb 20 2007, 07:17) *
Я так понял ...юарт будет дату а клок... чем выводить?

В синхронном режиме выделяется отдельная ножка под клок, в даташите описано.

Цитата(rx3apf @ Feb 20 2007, 00:31) *
Автору надо передать 9 битов данных. А будет передано 11, причем два из них с жестко заданными значениями. Для чего, кому и куда надо передать данные - в вопросе не было. Типично, обмен по SPI таких извращений не позволяет. Хотя и значения, не кратные 8 битам, тоже экзотика. Если получатель допускает такой формат посылки - да, можно так и сделать. А если нет - облом.

Если уж быть до конца честным, то стандартный SPI работает только с байтами (т.е. 8 бит). По крайней мере так описано в последней ревизии S12SPIV3 от Freescale, которая у меня под рукой. Исходя из этого, мне крайне сомнительно, что автору надо передавать в стандартный ЦАП, память или другое спай-устройство, выпускаемое серийно, поскольку такие устройства, как правило, разрабатываются под определенный интерфейс, в частности под SPI, а не на 9-10-11..бит, это смертельно для рынка.

Уже ответили, мои догадки были неправильные.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
mse
сообщение Feb 20 2007, 15:25
Сообщение #27


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(rx3apf @ Feb 20 2007, 14:31) *
AD840x - это цифровые потенциометры (это не совсем DAC). Да, действительно, 10-битная посылка. Но вовсе не толерантная к лишним фиксированным битам, насколько я могу судить. AD5203 - тоже потенциометр. Стандартная 8-битная посылка. AD5200 - 8-битная. 5201 - шестибитная. А, ну еще 5207 - с десятибитной.

И кому от этого легче?
Цитата
А вот если "ткнуть" в типичные ADC и DAC - AD420 два байта, AD770x - 8/16/24 бита (это с которыми я работал). Так что исключения - редчайшие, и это, скорее всего, встречается только у очень древних продуктов, в те времена аппаратный SPI у микроконтроллеров был скорее исключением, чем правилом...

Правда? Ну вот вам свежайший AD7680 c 20-битной посылкой. Или AD7690. С 18-битовой... ;О) Напишите в АДИ, что уже есть процессоры с аппаратным СПИ. А то мужики-то не знают...Удивяцца, небось.
Go to the top of the page
 
+Quote Post
=GM=
сообщение Feb 20 2007, 15:43
Сообщение #28


Ambidexter
*****

Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282



Цитата(yarunt @ Feb 19 2007, 08:10) *
Нужен быстрый вывод байта на SPI. Вопрос к знающим какой быстрее апаратный или програмный? И еще вопрос как реализовать по апаратному spi 9 бит....возможно ли это?

Вот ещё один способ придумал, экзотический(:-).

Выдвигаем биты через сдвиговый регистр спая как обычно, а клоки готовим с помощью оср-пина одного из таймеров. Останавливать клоки можно или другим таймером, или в фоне.

Вгрубе алгоритм такой. Программа записывает первый байт в спай-регистр и запускает выдачу клоков по сравнению. Затем она отсчитывает 16 тактов (время передачи 8 бит на 8 мбодах), посылает второй байт, отсчитывает 2 такта и останавливает оср. Вот как-то так, по-моему, должно работать.


--------------------
Делай сразу хорошо, плохо само получится
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Feb 20 2007, 15:43
Сообщение #29


Гуру
******

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



Цитата(mse @ Feb 20 2007, 14:25) *
Правда? Ну вот вам свежайший AD7680 c 20-битной посылкой. Или AD7690. С 18-битовой... ;О)
Примеров много. Но при этом они вполне адекватно относятся к 24-битной посылке, защелкивая только последние 20(18, сколько-нужно) бит.


--------------------
На любой вопрос даю любой ответ
"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
mse
сообщение Feb 20 2007, 15:49
Сообщение #30


Знающий
****

Группа: Свой
Сообщений: 709
Регистрация: 3-05-05
Пользователь №: 4 693



Цитата(Сергей Борщ @ Feb 20 2007, 15:43) *
Примеров много. Но при этом они вполне адекватно относятся к 24-битной посылке, защелкивая только последние 20(18, сколько-нужно) бит.

Обо што и речь!
Цитата
Вот ещё один способ придумал, экзотический(:-).

;О) Через ж..., автогеном. ;О)
Go to the top of the page
 
+Quote Post

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

 


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


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