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

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


Гуру
******

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



Цитата(yarunt @ Feb 20 2007, 14:03) *
Цветной дисплей с спи ...9-й бит идет как бит команды....нужно дисплей как можно быстрее заполнять.
Тогда, мне кажется, лучше всего эту задачу решить на матрице - отдельный вход выделить на "команда/данные" и честный SPI для связи с МК, а на второй стороне - хитрый 9-битный для дисплея.

(Размышляя... ) Или на сдвиговом регистре типа 579 - параллельно грузить с процессора, последовательно выдавать... бит команда/данные завести на последовательный вход, CS программно формировать - дернул ногой, 9 nop, дернул взад, его же на загрузку регистра, такты прямо с кварца через буфер.


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


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

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



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

А какую максимальную скорость SPI поддерживает этот дисплей? и какую дает используемый контроллер, на выбранном кварце. В общем надо использовать аппаратный SPI и передавать 9 бит данных за 2 байта, можно , конечно сделать так, как предлагает =GM=, но мне не совсем понятна его идея... клоки можно считать и асинхронным таймером, подав их на асинхронный вход, а затем каким либо образом прерывать передачу SPI, например запрещая SPI, но будет ли это лучше и надежнее и намного быстрее простой передачи 2х байт, сомневаюсь.


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


Ambidexter
*****

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



Цитата(mse @ Feb 20 2007, 12:49) *
Цитата

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

;О) Через ж..., автогеном. ;О)

Ха! Зато ровно 9 бит и 8 мбит/с!

Критиковать легко! У вас есть другое решение, которое даёт то же самое? Если да, то покажите.


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


Знающий
****

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



Цитата(=GM= @ Feb 20 2007, 16:08) *
Ха! Зато ровно 9 бит и 8 мбит/с!
Критиковать легко! У вас есть другое решение, которое даёт то же самое? Если да, то покажите.

Да не переживайте, это не наезд какой. Просто уж очень завихрасто. ;О) Половину ресурсов МКшки на это дело уйдёть. Да и пока таймер зарядишь-разрядишь, пока то, пока сё. А так СПИ оттарабанил - один битик вручную передёрнул и вуаля. Или наоборот.
http://electronix.ru/forum/index.php?showt...7568&st=19#
Go to the top of the page
 
+Quote Post
Nanobyte
сообщение Feb 20 2007, 16:16
Сообщение #35


За битами по регистрам гоняюсь
***

Группа: Свой
Сообщений: 457
Регистрация: 24-04-06
Из: Таганрог
Пользователь №: 16 446



Я бы поставил два дополнительных логических элемента и после передачи 8 битов от SPI передёрнул ноги данных и тактовой частоты. ИМХО, расходы невелики, а все проблемы решаются оптом.


--------------------
Курсор влево, курсор вправо - считается хакерством. FORMAT C: производится без предупреждения
Go to the top of the page
 
+Quote Post
yarunt
сообщение Feb 20 2007, 17:28
Сообщение #36


Местный
***

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



Цитата(Сергей Борщ @ Feb 20 2007, 16:53) *
Цитата(yarunt @ Feb 20 2007, 14:03) *

Цветной дисплей с спи ...9-й бит идет как бит команды....нужно дисплей как можно быстрее заполнять.
Тогда, мне кажется, лучше всего эту задачу решить на матрице - отдельный вход выделить на "команда/данные" и честный SPI для связи с МК, а на второй стороне - хитрый 9-битный для дисплея.

(Размышляя... ) Или на сдвиговом регистре типа 579 - параллельно грузить с процессора, последовательно выдавать... бит команда/данные завести на последовательный вход, CS программно формировать - дернул ногой, 9 nop, дернул взад, его же на загрузку регистра, такты прямо с кварца через буфер.

На 579 ...это какая МС?.... я уже много думал ,лучше был у дисплея паралельный ,ещеб в 9раз шустрее был. По даташиту описания скорости не...но внутренний генератор 815кГц.На атмеге 128 икварце16мГц,частота клока около 700кГц, при програмном исполнении.


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


Гуру
******

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



Цитата(yarunt @ Feb 20 2007, 16:28) *
На 579 ...это какая МС?.... я уже много думал ,лучше был у дисплея паралельный ,ещеб в 9раз шустрее был. По даташиту описания скорости не...но внутренний генератор 815кГц.На атмеге 128 икварце16мГц,частота клока около 700кГц, при програмном исполнении.
579 - 74HC579, но я внимательно прочитал - вариант, предложенный =GM= делает то же самое на внутренних ресурсах. Тип дисплея огласите, пожалуйста. Информации о его частоте недостаточно - интерфейс может работать асинхронно от генератора дисплея, надо смотреть временные параметры интерфейса.
700КГц - 22 такта на бит - это вам удалось. Полагаю, что реально уложиться в 6-8 тактов.


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


Местный
***

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



Цитата(Сергей Борщ @ Feb 20 2007, 18:49) *
Цитата(yarunt @ Feb 20 2007, 16:28) *

На 579 ...это какая МС?.... я уже много думал ,лучше был у дисплея паралельный ,ещеб в 9раз шустрее был. По даташиту описания скорости не...но внутренний генератор 815кГц.На атмеге 128 икварце16мГц,частота клока около 700кГц, при програмном исполнении.
579 - 74HC579, но я внимательно прочитал - вариант, предложенный =GM= делает то же самое на внутренних ресурсах. Тип дисплея огласите, пожалуйста. Информации о его частоте недостаточно - интерфейс может работать асинхронно от генератора дисплея, надо смотреть временные параметры интерфейса.

тип дисплея D15G14E на чипе PCF8833. Чип поддерживает паралельный ,но дисплей только spi.


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


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

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



Цитата
На атмеге 128 икварце16мГц

при таком кварце аппаратный SPI даст вам до 8МГц.


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


Гуру
******

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



Цитата(yarunt @ Feb 20 2007, 17:03) *
на чипе PCF8833.
serial clock SCLK period (SCLK) min 150 ns (стр.77 даташита) - 6.6МГц максимум. Исходите из этого.


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


Гуру
******

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



Цитата(yarunt @ Feb 20 2007, 18:03) *
Цитата(Сергей Борщ @ Feb 20 2007, 18:49) *

Цитата(yarunt @ Feb 20 2007, 16:28) *

На 579 ...это какая МС?.... я уже много думал ,лучше был у дисплея паралельный ,ещеб в 9раз шустрее был. По даташиту описания скорости не...но внутренний генератор 815кГц.На атмеге 128 икварце16мГц,частота клока около 700кГц, при програмном исполнении.
579 - 74HC579, но я внимательно прочитал - вариант, предложенный =GM= делает то же самое на внутренних ресурсах. Тип дисплея огласите, пожалуйста. Информации о его частоте недостаточно - интерфейс может работать асинхронно от генератора дисплея, надо смотреть временные параметры интерфейса.

тип дисплея D15G14E на чипе PCF8833. Чип поддерживает паралельный ,но дисплей только spi.

Не вижу вообще никакой проблемы. Зачем работать по байту плюс D/C, если можно работать блоками, кратными 9 байтам (что даст восемь байтов и восемь битов управления). Подготавливать, правда, чуть-чуть сложнее, но я вообще не представляю побайтовой работы с дисплеем...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Feb 20 2007, 19:43
Сообщение #42


Ambidexter
*****

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



Цитата(yarunt @ Feb 20 2007, 14:28) *
По даташиту описания скорости не...но внутренний генератор 815 кГц. На атмеге 128 и кварце 16 МГц,частота клока около 700 кГц, при програмном исполнении.

Поскольку максимальная скорость интерфейса дисплея 6.6(6) МГц, то вопрос с 8 мбодами отпадает сам собой(:-).

А вот если устроит скорость 4 мбода, то могу показать, как сделать чисто программно. На такой скорости, конечно, можно только обновлять экран 19 раз в секунду, больше ничего не успеть. Да ещё большой вопрос, откуда брать новые кадры..или картинка статическая?


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


Гуру
******

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



Цитата(mse @ Feb 20 2007, 15:49) *
Цитата(Сергей Борщ @ Feb 20 2007, 15:43) *

Примеров много. Но при этом они вполне адекватно относятся к 24-битной посылке, защелкивая только последние 20(18, сколько-нужно) бит.

Обо што и речь!

Применительно к SPI - да (в том случае, когда устройство действительно некритично в ведущим "лишним" битам). Применительно к эмуляции SPI через USART в синхронном режиме - нет. Поскольку последний передаваемый бит всегда будет равен "1", а прием так и вовсе не начнется до тех пор, пока не появится бит "0". Не говоря уж о разных SPI-модах...
Go to the top of the page
 
+Quote Post
=GM=
сообщение Feb 20 2007, 20:41
Сообщение #44


Ambidexter
*****

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



Цитата(rx3apf @ Feb 20 2007, 16:55) *
Применительно к эмуляции SPI через USART в синхронном режиме - нет. Поскольку последний передаваемый бит всегда будет равен "1", а прием так и вовсе не начнется до тех пор, пока не появится бит "0". Не говоря уж о разных SPI-модах...

Для озвученного устройства USART в синхронном режиме отпадает, т.к. данные там могут передаваться сплошняком: 9 бит + 9 бит + 9 бит + 9 бит... и контроллер дисплея будет интерпретировать старт и стоп биты как текущие биты данных.

Хотя для других применений, скажем для передачи 9-битных данных с одной атмеги на другую, или для передачи на самопальный регистр сдвига, USART в синхронном режиме вполне подойдёт.


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


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(Сергей Борщ @ Feb 20 2007, 16:53) *
Тогда, мне кажется, лучше всего эту задачу решить на матрице - отдельный вход выделить на "команда/данные" и честный SPI для связи с МК, а на второй стороне - хитрый 9-битный для дисплея.

(Размышляя... ) Или на сдвиговом регистре типа 579 - параллельно грузить с процессора, последовательно выдавать... бит команда/данные завести на последовательный вход, CS программно формировать - дернул ногой, 9 nop, дернул взад, его же на загрузку регистра, такты прямо с кварца через буфер.


Мне было необходимо использовать два SPI. Учитывая уже написанное (что использовать в данном случае прерывание для получения максимальной скорости неэффективно) я поступил так, как предлагает уважаемый Сергей Борщ. С небольшой разницей. Я подключил сдвиговый регистр - как ячейку памяти (память внешняя у меня используется) а на сдвиг подал SCK первого SPI. Таким образом я выполняя сначала вывод в озу 1 байт и в SPI - второй, - работаю сразу с двумя SPI и таким образом экономлю время. Естественно таким образом можно сделать и больше каналов.
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 Текстовая версия Сейчас: 19th July 2025 - 11:59
Рейтинг@Mail.ru


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