Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
06.02.2010, 19:39
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Да это вообще самый простой интерфейс. Работаем так:
Опустили CS - значит выбрали чип. Можно и без этого обойтись, если выбирать не из чего.
Подняли CLOCK. Подождали пару микросекунд, чтобы уровень вырос. На DIN будет первый бит информации. На DOUT посылаем то, что хотим оправить. Не хотим? Не трогаем DOUT.
Считали DIN? Пора подождать не много и опускать CLOCK.
Опустили CLOCK? Надо подождать пару микросекунд, чтобы опустился.
Опустился? Ждем еще не много. Поднимаем. И опять по кругу, пока не считаем байт, 2 байта, сколько угодно байт.
Программно реализуется элементарно. Если использовать переферийный SPI МК - это полезно, когда нет времени ждать. Закинули байт в регистр. Он отправляет. Отправил, выставил флаг в pir1.sspif. Снимаем флаг, читаем регистр, отправляем новый байт в регистр. Один регистр и для приема и для передачи. Можно читать по прерыванию. Как угодно. Если МК ведомый, ставим прерывание по наполнению регистра. Пришла информация - скинули флаг, прочитали, вышли из прерывания. Просто.
|
|
|
|
06.02.2010, 20:39
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,535
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Сообщение от Easyrider83
|
Да это вообще самый простой интерфейс. Работаем так:
Опустили CS - значит выбрали чип. Можно и без этого обойтись, если выбирать не из чего.
Подняли CLOCK. Подождали пару микросекунд, чтобы уровень вырос. На DIN будет первый бит информации. На DOUT посылаем то, что хотим оправить. Не хотим? Не трогаем DOUT.
Считали DIN? Пора подождать не много и опускать CLOCK.
Опустили CLOCK? Надо подождать пару микросекунд, чтобы опустился.
Опустился? Ждем еще не много. Поднимаем. И опять по кругу, пока не считаем байт, 2 байта, сколько угодно байт.
Программно реализуется элементарно. Если использовать переферийный SPI МК - это полезно, когда нет времени ждать. Закинули байт в регистр. Он отправляет. Отправил, выставил флаг в pir1.sspif. Снимаем флаг, читаем регистр, отправляем новый байт в регистр. Один регистр и для приема и для передачи. Можно читать по прерыванию. Как угодно. Если МК ведомый, ставим прерывание по наполнению регистра. Пришла информация - скинули флаг, прочитали, вышли из прерывания. Просто.
|
Без CS не обойтись, потому что по его восходящему фронту данные фиксируются в приемнике.
|
|
|
|
06.02.2010, 20:43
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Смысл примерно ясен.
Только уточните алгоритм управления CS для выбора:
1.одного из трёх перефирийных устройств
2.одного единственного устройства
|
|
|
|
06.02.2010, 20:57
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,535
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Сообщение от yellow87
|
Смысл примерно ясен.
Только уточните алгоритм управления CS для выбора:
1.одного из трёх перефирийных устройств
2.одного единственного устройства
|
Для каждого устройства свой CS. А линии SDO, SDI, SCK общие.
|
|
|
|
07.02.2010, 01:39
|
|
Прописка
Регистрация: 12.05.2009
Сообщений: 232
Сказал спасибо: 56
Сказали Спасибо 43 раз(а) в 35 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Если выбирать нечего, то CS можно напрямую посадить на общий.
|
|
|
|
07.02.2010, 03:35
|
|
Супер-модератор
Регистрация: 15.10.2007
Сообщений: 3,535
Сказал спасибо: 172
Сказали Спасибо 1,561 раз(а) в 811 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Сообщение от innovator_king
|
Если выбирать нечего, то CS можно напрямую посадить на общий.
|
А как вы будете заносить данные в приемник? По восходящему фронту CS данные записываются во внутренние регистры из сдвигающего регистра. Это не просто Chip Select, но еще и строб записи. Вот цитата из даташита на память SPI:
Код:
|
For the data to be actually written to the array, the CS
must be brought high after the Least Significant bit (D0)
of the nth data byte has been clocked in. |
Можно SDI не подключать если только передаете, можно SDO не подключать если только принимаете. НО CS должен быть всегда подключен!
Последний раз редактировалось realid; 07.02.2010 в 03:43.
|
|
|
|
07.02.2010, 13:24
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
а можно не париться. Взять С или Паскаль или Барсик от Микроэлектроники. Там готовые библиотеки для софтовых I2C и SPI.
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
07.02.2010, 16:33
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Сообщение от DK
|
а можно не париться. Взять С или Паскаль или Барсик от Микроэлектроники. Там готовые библиотеки для софтовых I2C и SPI.
|
Они так погано сделаны. I2c нормально работает. А SPI одни рыдания. По объему кода проще и быстрее поработать напрямую с регистрами.
|
|
|
|
08.02.2010, 09:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Сообщение от Easyrider83
|
SPI одни рыдания.
|
А в чем выражается?
Честно говоря, SPI не юзал софтовый. I2C и UART - часто. Особенно последний. Удобно при отладке
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
08.02.2010, 11:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: SPI в контроллере без интерфейса
Использовал реализацию SPI в компиляторе CCS - очень хороша. Пактически такаяже как и на АСМе.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:15.
|
|