| Автор |
Съобщение |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
 PIC16F1503 SPI в slave режим
Гледах даташийта на PIC16F1503 и не ми стана ясно какви са ограниченията на SPI клока. 1. На страница 307 пише, че клока трябва да е високо Tcy + 20 ns и ниско още толкова. 2. На страница 171, точка 21.2.4 пише, че в sleep SPI slave си работи. Обаче колко е Tcy в sleep - безкрайност, защото няма клок за инструкциите. 3. На страница 174, 21.2.6 пише, че "Special care must be taken by the user when the MSSPx clock is much faster than the system clock."
По 3. личи, че SPI клока може да е повече от системния клок, но спецификациите казват друго. Не уточняват какво имат в предвид под "special care" и какви проблеми може да създаде по-бързия SPI clock.
Също така не казват каква е максималната честота на SPI клока в sleep
Аз ли съм пропуснал нещо или те не са специфицирали? Предполагам, че в sleep SPI clock-а ще може да издържи поне до 5MHz (Fosc max/4)
В конкретния случай не е толкова важно защото MCU-то харчи само 1mA при 16MHz INT RC клок така че просто ще го пусна на 16МHz и ще огранича SPI клока до 4MHz. Просто се чудя защо не са описали какъв ефект ще има SPI clock > System clock.
|
| Чет Фев 20, 2014 9:06 pm |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: PIC16F1503 SPI в slave режим
Чакай, че пиша глупости! Значи master-a определя тактовата честота. Следователно няма проблем да му пуснеш по-висока, само трябва да си сигурен, че slave-a ще успява да си опреснява данните достатъчно бързо.. А честотата на SPI обикновено се определя от осцилатора, разделена на някакъв prescaler.
_________________www.elkran.com
|
| Чет Фев 20, 2014 10:55 pm |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
 Re: PIC16F1503 SPI в slave режим
там е въпроса - мастера ми е способен на сравнително висока честота на клока - поне 20-30 MHz. Пика обаче едва ли ще може повече от десет. Въпроса е дали ще може 10 ... Никъде не пише. Освен да тествам ... не се сещам за друго. Само дето тестването ще ми отнеме повечко време - не трябва да има разни хвърчащи жици и т.н.. Трябва да приготвя малка програмка да върти от 0-255 и да пусна pass/fail на осцилоскопа да отчете дали ще приеме всеки байт правилно.
И все пак ми е чудно защо са писали, че в слейв режим зависи от тактовата честота.
|
| Пет Фев 21, 2014 1:34 am |
|
 |
|
Vesko
Ранг: Популярен
Регистриран на: Пон Мар 22, 2010 8:52 pm Мнения: 328
|
 Re: PIC16F1503 SPI в slave режим
Доста често периферията в процесорите е синхронна. Т.е. клока на СПИ-а е синхронен на ЦПУ честотата. Малко наизуст го казвам, ама при АТ91САМ7 в ПДФ-а май си пишеше, че СПИ слейва трябва да бъде с 3 или 4 пъти по-ниска честота от тази на процесора. А какво става когато клока на процесора я спрян е интересен въпрос. Може би падащият фронт на ЧС трябва да го събуди 
|
| Пет Фев 21, 2014 6:06 am |
|
 |
|
palavrov
Ранг: Форумен бог
Регистриран на: Вто Окт 11, 2011 11:53 pm Мнения: 4582 Местоположение: Brussels / Пловдив
|
 Re: PIC16F1503 SPI в slave режим
Все трябва да има някоя таблица или времедиаграма в даташита където са дадени разни времена за фронтове, нива и т.н. т.е. няма да га намериш като мегахерци, но все пак ще може да се ориентираш.
Едит: Виж страница 306 от даташита.
_________________ Мразя да мразя ...
|
| Пет Фев 21, 2014 9:47 am |
|
 |
|
didofen
Ранг: Популярен
Регистриран на: Вто Юни 27, 2006 11:13 am Мнения: 381 Местоположение: Варна
|
 Re: PIC16F1503 SPI в slave режим
Интересно е какво е външното устройство, което да иска толкова бърза комуниказия, и то по СПИ?
|
| Пет Фев 21, 2014 10:32 am |
|
 |
|
stoyanoff
Ранг: Форумен бог
Регистриран на: Чет Юни 25, 2009 1:01 pm Мнения: 2251
|
 Re: PIC16F1503 SPI в slave режим
Сега ако изхождаме от това как се реализира SPI, би трябвало да няма значение каква е тактовата честота на slave-a. Реално при трансфер мастър-а подава тактова честота и разменя съдържанието на буферите. Подчиненият единствено трябва да е успял да подготви информацията. Виж на колко време трябва да четеш и сметни дали малкия чип успява да си сметне там каквото трябва и да остане в очакване на предаване. Поздрави!
_________________www.elkran.com
|
| Пет Фев 21, 2014 2:32 pm |
|
 |
|
npelov
Ранг: Почетен член
Регистриран на: Пет Яну 22, 2010 5:46 pm Мнения: 680
|
 Re: PIC16F1503 SPI в slave режим
@Vesko Ами те пишат какво става когато е приспан. Приема си байта докато си спи. Когато свърши контролера се събужда.
@palavrov там гледам - на 30 е времедиаграмата с означенията, на 307 е таблицата с времената. Не пише какво става в слейв режим
@didofen Както казах контролера работи в слейв - т.е. контролера е външното устройство. Не устройството изисква бързата комуникация, а цялата система. Т.е. трябва комуникацията да приключи бързо за да може да се изпрати байт до следващото устройство. На практика май не ми трябва толкова много 1MHz / 8 бита = 125 kB/s ... горе долу. Да речем че има 10 устройства - това прави 12500 обхождания в секунда. Обаче като вземем в предвид че е пълно със закъснения между изпращанията реално времето е доста по-малко.
@stoyanoff Ами то няма кой знае какво значение колко време ще му трябва на малкия контролер. Големия ще изпрати запитванията/командите на всичките устройства и като се върне до първото най-вероятно ще е успяло да си свърши работата. Така или иначе ще го измеря и ще му дам малко аванс за да е сигурно. Но не ми трябва отговор моментално. Трябва само изпращането да е приключило за да мине на следващия слейв.
... ок де. Не ми трябва толкова голяма скорост. При 1MHz няма да е готов следващия байт преди да е свършило изпращането. Просто съм свикнал винаги да проверявам даташита и ме озадачи защо няма нищо казано за това на каква скорост физически е способен слейв SPI модула. Няма лошо, че трябва да е синхронизиран и има изисквания спрямо честотата, но може да искам да намаля тактовата честота и да приспивам контролера докато приема.
|
| Нед Фев 23, 2014 4:49 pm |
|
|