|
Реально достижимая скорость по SPI, Программно-аппаратные трюки для достижения максимальной скорости перед |
|
|
|
Jul 12 2006, 13:34
|

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

|
Тема была навеяна $ilent, но она была закрыта прежде, чем я успел в ней поучаствовать :-). Интересует, прежде всего, потенциально достижимая скорость как в аппаратном исполнении, так и в программном. Какие требования в "железном" исполнении? Необходимо передать по SPI nByte байт из буфера txBuffer (ОЗУ МК) и одновременно принять массив байт такой же длины в rxBuffer (ОЗУ МК). Моя программа выполняется за 8МЦ, т.е. ровно один такт на 1 бит. Интересно, можно ли добиться большего? Что скажут эксперты? Программа $ilent работает в полудуплексе, следовательно можно снизить требования к программной реализации SPI, а именно, необходимо программно формировать только биты данных и синхронизацию на передачу ИЛИ принимать биты данных по положительным фронтам импульсов синхронизации на прием. Моя программа передает один байт за 36МЦ, т.е. за 4,5 такта на 1 бит. Как добиться большего? Народ, не воспринимайте топик слишком сурово, это мой первый на этом сайте...
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
 |
Ответов
|
Jul 13 2006, 15:57
|
Частый гость
 
Группа: Свой
Сообщений: 185
Регистрация: 5-05-06
Из: Ekaterinburg, Russia
Пользователь №: 16 821

|
А какие ограничения на использование регистров? Обязательно два буфера? Можно ли использовать прерывание SPI? Цитата 2) отправить его в регистр SPDR на передачу, 3) прочитать из SPDR принятый по SPI байт, хм, а не наоборот?
Сообщение отредактировал Yura_K - Jul 13 2006, 16:13
--------------------
Чудес не бывает - бывает мало знаний и опыта!
|
|
|
|
|
Jul 13 2006, 21:51
|

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

|
Цитата(Yura_K @ Jul 13 2006, 14:57)  А какие ограничения на использование регистров? Обязательно два буфера? Можно ли использовать прерывание SPI? Все ресурсы МК в ваших руках, никаких ограничений. Два буфера не обязательно, можно один буфер. Можно использовать любые прерывания. Цитата(Yura_K @ Jul 13 2006, 14:57)  Цитата 2) отправить его в регистр SPDR на передачу, 3) прочитать из SPDR принятый по SPI байт,
хм, а не наоборот? Запись в регистр SPDR инициирует передачу по SPI. После окончания последовательной передачи 8-ми бит можно прочитать принятый байт из регистра SPDR. Можно сначала читать из регистра SPDR, а потом писать в регистр SPDR. Главное, чтобы было четкое понимание, что передается и что принимается. Что-то эксперты тяжело раскачиваются...не хотят делиться секретами мастерства(:-).
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
Сообщений в этой теме
=GM= Реально достижимая скорость по SPI Jul 12 2006, 13:34 Yura_K А что значит программа выполняется за 8МЦ? Передае... Jul 12 2006, 14:52 SpiritDance Ничего не понял. Толи у меня башка уже не варит то... Jul 12 2006, 15:15 =GM= Цитата(SpiritDance @ Jul 12 2006, 14:15) ... Jul 12 2006, 16:14 KRS Может вы имели ввиду не мегагерцы а такты?
т.е про... Jul 12 2006, 16:08 =GM= Цитата(KRS @ Jul 12 2006, 15:08) Может вы... Jul 12 2006, 16:31 ksv198 Цитата(Yura_K @ Jul 13 2006, 19:57) 2) от... Jul 14 2006, 07:00  =GM= Цитата(ksv198 @ Jul 14 2006, 06:00) Цитат... Jul 14 2006, 11:59   zltigo Цитата(=GM= @ Jul 14 2006, 14:59) Как я у... Jul 14 2006, 12:12    =GM= Цитата(zltigo @ Jul 14 2006, 11:12) Цитат... Jul 14 2006, 12:30     rezident Цитата(=GM= @ Jul 14 2006, 18:30) Я приве... Jul 14 2006, 13:01      =GM= Цитата(rezident @ Jul 14 2006, 12:01) Цит... Jul 14 2006, 13:40   rezident Цитата(=GM= @ Jul 14 2006, 17:59) Посколь... Jul 14 2006, 12:19   ksv198 Цитата(=GM= @ Jul 14 2006, 15:59) Как я у... Jul 14 2006, 12:47   ksv198 2'=GM=
Пришел домой, подумал внимательно и пон... Jul 15 2006, 06:02    =GM= Цитата(ksv198 @ Jul 15 2006, 05:02) 2... Jul 15 2006, 17:21 unichorn Интересный подход. А остальная программа в момент ... Jul 14 2006, 12:39 =GM= Цитата(unichorn @ Jul 14 2006, 11:39) Инт... Jul 14 2006, 13:25 GetSmart Да врут они все тут. Всё будет работать в тех рамк... Jul 14 2006, 13:06 GetSmart Код <nop x 8 раз или другая задача на 8МЦ... Jul 14 2006, 13:53 rezident =GM=, есть несколько нюансов в описываемой вами сх... Jul 14 2006, 13:55 =GM= Цитата(rezident @ Jul 14 2006, 12:55) =GM... Jul 14 2006, 14:50 GetSmart ЦитатаНормально, Григорий(:-). Хотя у вас 10 МЦ, а... Jul 14 2006, 14:58 =GM= Цитата(GetSmart @ Jul 14 2006, 13:58) Цит... Jul 14 2006, 15:16 GetSmart 1. А кто тогда Георгий?
2. А когда у вас в цикле ... Jul 14 2006, 15:32 =GM= Цитата(GetSmart @ Jul 14 2006, 14:32) 1. ... Jul 14 2006, 15:57 GetSmart ЦитатаНадеюсь, передается индивидуальная для каждо... Jul 14 2006, 16:16 =GM= Цитата(GetSmart @ Jul 14 2006, 15:16) Цит... Jul 14 2006, 16:27 GetSmart Делитель тока 1/4. Это обычный делитель синхросигн... Jul 14 2006, 16:40 Yura_K 2 ksv198
ЦитатаПоэтому все правильно - сначала пиш... Jul 14 2006, 17:21 GetSmart Ошибок вроде нету. Этот вариант идеально подходит ... Jul 14 2006, 17:44
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|