Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
13.02.2012, 15:10
|
|
Частый гость
Регистрация: 12.01.2011
Сообщений: 36
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
SPI что это такое?
товарищи
нашёл в интернет такой код запись по SPI
Код:
|
void SPI_WRITE(unsigned char Addr, unsigned char data)
{
unsigned char i=0;
Addr=Addr|0x80; // Старший бит в адресе дб равен 1!!!
nSEL=0;
delay_us(10);
for (i=0; i‹8; i++)
{
nSDI=(Addr››(7-i))&0x01;
delay_us(10);
nSCK=1;
delay_us(30);
nSCK=0;
delay_us(20);
}
for (i=0; i‹8; i++)
{
nSDI=(data››(7-i))&0x01;
delay_us(10);
nSCK=1;
delay_us(30);
nSCK=0;
delay_us(20);
}
nSEL=1; // выборка чипа
delay_us(20);
} |
вроде бы всё понятно, но вот следующий вопрос вот например у меня адрес и данные равно 0х06. по nsdi я так понимаю будут передаваться данные?или я что-то путаю? для чего nSCK=1; а потом через задержку nSCK=0; как должны передаваться данные в протоколе? какая последовательность? спасибо
|
|
|
|
13.02.2012, 15:31
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: SPI что это такое?
Это программная реализация SPI. причем заточенная под конкретное ус-во.
Сообщение от yuta_86
|
для чего nSCK=1; а потом через задержку nSCK=0;
|
Это строб данных. Сначало выставляете на ножке MOSI бит данных. потом стробируете его импульсом на ножке SCK.
В общем случае выбор ведомого ус-ва осуществляется выводом SS(для каждого ус-ва свой). В Вашем примере используется адресация - сначало шлётся байт адреса, потом байт данных.
Сообщение от yuta_86
|
вот например у меня адрес и данные равно 0х06. по nsdi я так понимаю будут передаваться данные?
|
nSDI здесь. как я понял, это вывод MOSI (выход ведущего ус-ва) - в Вашем случае адрес будет передан так - сначало 0x80 | 0x06 -› 0x86, это и будет передано. Данные - 0x06.
|
|
|
|
13.02.2012, 16:51
|
|
Частый гость
Регистрация: 12.01.2011
Сообщений: 36
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: SPI что это такое?
каким образом идёт передача данных SPI
вот например после первого прохода цикла при 0х06 (0000 0110 )
Addr потом 1000 0110
цикл
i=0 nsdi =(1000 0110 ››7)&(0000 0001)=0000 0001 & 0000 0001 = 0000 0001
i=1 nsdi =(1000 0110 ››6)&(0000 0001)=0000 0010 & 0000 0001 = 0000 0000
i=2 nsdi =(1000 0110 ››5)&(0000 0001)=0000 0100 & 0000 0001 = 0000 0000
i=3 nsdi =(1000 0110 ››4)&(0000 0001)=0000 1000 & 0000 0001 = 0000 0000
i=4 nsdi =(1000 0110 ››3)&(0000 0001)=0001 0000 & 0000 0001 = 0000 0000
i=5 nsdi =(1000 0110 ››2)&(0000 0001)=0010 0001 & 0000 0001 = 0000 0001
i=6 nsdi =(1000 0110 ››1)&(0000 0001)=0100 0011 & 0000 0001 = 0000 0001
i=7 nsdi =(1000 0110 ››0)&(0000 0001)=1000 0110 & 0000 0001 = 0000 0000
так? и что тут получается ничего не пойму
|
|
|
|
13.02.2012, 16:54
|
|
Частый гость
Регистрация: 12.01.2011
Сообщений: 36
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
|
Re: SPI что это такое?
то есть получается 1 0 0 0 0 1 1 0 =====››› 86 так ведь?
|
|
|
|
13.02.2012, 17:13
|
|
Почётный гражданин KAZUS.RU
Регистрация: 01.04.2009
Адрес: Рязань
Сообщений: 1,140
Сказал спасибо: 21
Сказали Спасибо 635 раз(а) в 344 сообщении(ях)
|
Re: SPI что это такое?
Сообщение от yuta_86
|
то есть получается 1 0 0 0 0 1 1 0 =====››› 86 так ведь?
|
По сути - да. В 3 посте результат должен быть не 0000 0001, а 1 - здесь выделяется бит. Остальные строчки по аналогии.
|
|
|
|
14.02.2012, 00:13
|
|
Временная регистрация
Регистрация: 17.09.2009
Сообщений: 68
Сказал спасибо: 13
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Re: SPI что это такое?
Сообщение от yuta_86
|
то есть получается 1 0 0 0 0 1 1 0 =====››› 86 так ведь?
|
практически протокол тупой, до посинения: мастер выставил свой бит (MOSI), слэйв выставил свой (MISO). По команде мастера (SCK) оба устройства зафиксировали принятые биты в буфферах приема, сдвинули на единичку свои внутренние буффера приема и передчи и подготовились для обмера следующего бита.
Остюда вытекает необходимость передачи двух байтов за раз (комманда + данные) - ведь как только устройство получило команду, можно сразу быть готовым правильно работать с данными.
1. Кстати последовательность передачи битов в байте не всегда бывает от младшего к старшему. Советую посмотреть даташиты на аппаратную реализацию SPI определенного контроллера.
2. Вроде как работа SPI "допускает" возможность асинхронного режима работы, но в реальности это не так. Я, по наивности, был в этом уверен и понял, что ошибся, заведя два различных генератора для устройств (один на 12, другой на 10МГц). С одним источником сигнала все прекрасно работало и с программной и с аппаратной реализацией SPI. Добиться в таком случае консенсуса удалось только снизив скорость частоты обмена по шине до кратной обеим частотам. Так что если есть возможность завести генерацию от слэйва или тактировать слейва генератором мастера - будет лучшим решением.
__________________
|
|
|
|
14.02.2012, 00:21
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: SPI что это такое?
Ого, столько нового узнаешь для себя. Думаю, тему можно даже закрепить, если казусу не боязно осрамиться еще хлеще.
|
|
|
|
14.02.2012, 01:56
|
|
Почётный гражданин KAZUS.RU
Регистрация: 25.05.2010
Адрес: г. Королёв
Сообщений: 8,497
Сказал спасибо: 30
Сказали Спасибо 3,072 раз(а) в 2,013 сообщении(ях)
|
Re: SPI что это такое?
Сообщение от Easyrider83
|
тему можно даже закрепить
|
С пометкой "Важно"
Сообщение от svd71
|
2. Вроде как работа SPI "допускает" возможность асинхронного режима работы, но в реальности это не так.
|
Вот те на! А как же синхросигнал?
Мил человек. Функция установки скорости SPI работает только для ведущего.
Вот если им был самый быстрый, да на DoubleSpeed, то,в принципе, возможно медленный и не успевал...
|
|
|
|
14.02.2012, 02:53
|
|
Почётный гражданин KAZUS.RU
Регистрация: 07.10.2007
Адрес: Луганск
Сообщений: 1,816
Сказал спасибо: 13
Сказали Спасибо 399 раз(а) в 214 сообщении(ях)
|
Re: SPI что это такое?
__________________
"picavr(ГАВ)мыло.ру" USB_Analyzer, Digital_Storage_Oscilloscope "picavr.kr1.ru" заказы в Китай компонентов/изготовление: плат/ЖКИ/мембраных клавиатур/имп трансформаторов
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Что это такое?
|
parcon |
Информация по радиокомпонентам |
0 |
12.05.2010 14:15 |
Что это такое
|
28ch52 |
Информация по радиокомпонентам |
1 |
22.04.2010 22:24 |
Что это такое???
|
Lonely Wolf |
Производственное оборудование |
9 |
22.04.2010 16:33 |
[Решено] Что это такое?
|
eu3ab |
Информация по радиокомпонентам |
0 |
29.01.2010 00:42 |
Что такое SPI mode 0, 3 ?
|
Maver |
Микроконтроллеры, АЦП, память и т.д |
3 |
09.02.2006 01:15 |
Часовой пояс GMT +4, время: 07:09.
|
|