Мелкие вопросы по МК и ПЛИС.
Там же стрелочками обозначено. первая стрелочка - старт, следующий фронт работает в холостую, а последующие будут работать на информационную часть.
- Реклама
Alexeyslav, а можете на картинке показать, чтото все-равно никак не могу въехать 
Так на картинке все и показано. стрелочками.
Там говорится не об импульсе, а о первом перепаде с высокого уровня на низкий. Это и есть начальная синхронизация. :говорится об инициализирующем импульсе(спад-фронт)
Аlex, в соответствии с Вашей трактовкой, алгоритм следующий(поправьте, если не прав):
1. CLK -> LOW // синхронизация
2. задержка для обеспечения частоты
3. CLK -> HIGH
4. считываем DO
5. задержка
...
Я так делал и 1 бит недотягивает, работает нормально, если:
1. CLK -> LOW // синхронизация
2. задержка для обеспечения частоты
3. CLK -> HIGH // синхронизация
4. задержка для обеспечения частоты
5. CLK -> LOW
6. задержка для обеспечения частоты
7. CLK -> HIGH
8. считываем DO
9. задержка
...
Где я туплю
?
1. CLK -> LOW // синхронизация
2. задержка для обеспечения частоты
3. CLK -> HIGH
4. считываем DO
5. задержка
...
Я так делал и 1 бит недотягивает, работает нормально, если:
1. CLK -> LOW // синхронизация
2. задержка для обеспечения частоты
3. CLK -> HIGH // синхронизация
4. задержка для обеспечения частоты
5. CLK -> LOW
6. задержка для обеспечения частоты
7. CLK -> HIGH
8. считываем DO
9. задержка
...
Где я туплю
- Реклама
Зачем ты считываешь первый раз? первый раз считывать не надо! В твоем алгоритме первое считывание D0 - это стартовый импульс, считаешь всегда "0".
Alexeyslav, видимо, я чтото не так понимаю. В общем, как я понимаю(смотреть картинку):
Линия в покое - CLK=1 (CSn опускаем). После чего мы делаем спад и затем фронт и приходим в интервал 1го бита данных. Где и как он пустой?
Я понимаю что считываю ноль, и я уже написал код и все работает, но хочу разобраться с этим раз и на всегда, помогите пожалуйста
Линия в покое - CLK=1 (CSn опускаем). После чего мы делаем спад и затем фронт и приходим в интервал 1го бита данных. Где и как он пустой?
Я понимаю что считываю ноль, и я уже написал код и все работает, но хочу разобраться с этим раз и на всегда, помогите пожалуйста
- Вложения
-
- ssi.PNG
- (29.15 КБ) 236 скачиваний
Всё верно. Сначала спад, затем, после каждого переднего фронта, читаем бит.После чего мы делаем спад и затем фронт и приходим в интервал 1го бита данных.
Просто первый спад является синхронизацией девайса для начала пакета. Чё он там делает (сохраняет ли какие данные, устанавливает данные в вых. сдвиговые регистры, ....), в принципе пофиг, это не должно Вас волновать. Видимо, это Вас смутило и запутало. Ваша задача начать пакет и по каждому нарастающему фронту читать свой бит, и всё.
По спаду ВЕДУЩЕЕ устройство выставляет данные на шину, а ВЕДОМОЕ по фронту фиксирует это значение и сохраняет. Теперь если с этой точки зрения посмотреть на данные, то в начале посылки у вас ВСЕГДА будет читаться один лишний бит, который равен нулю - его надо просто проигнорировать если реализуете ВЕДОМОЕ устройство, и передать перед посылкой данных если ВЕДУЩЕЕ.
Он же и является стартовым импульсом, по аналогии с асинхронным протоколом.
Он же и является стартовым импульсом, по аналогии с асинхронным протоколом.
Выражайтесь точнее тут надо читать по восходящему фронту читает. Фронт бывает и нисходящий.Alexeyslav писал(а): а ВЕДОМОЕ по фронту фиксирует это значение и сохраняет
тут тоже непонятно с какой точки? Которую вы только что описали?Alexeyslav писал(а):Теперь если с этой точки зрения посмотреть на данные,
С любой точки зрения. Передача этого "нуля" ничем не отличается от передачи остальных бит. Просто он первый.
vitalik_1984 писал(а):Фронт бывает и нисходящий
передний фронт 0-1 задний фронт 1-0
фронт 0-1 спад 1-0
а если в тексте фигурирует и фронт и спад, то думаю ежу становится понятно что есть что
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
- Сообщения: 162
- Зарегистрирован: Вс дек 09, 2012 12:14:44
такой вопрос - на каком максимальном расстоянии можно расположить 2 мк связанные проводами по SPI? и еще - какой способ передачи выбрать для связи без сбоев если провода (а соответственно и расстояние между мк) от 1 до 2м?
SPI - интерфейс для ОДНОЙ платы или блока. Тащить его в кабель можно, только если кабель должным образом терминировать. Значит потребуется приемопередатчики (по обеим линиям) и согласование линии у приемников.
Плюс к этому, питание устройств не может быть независимым, иначе может возникнуть перекос между землями с неустранимыми помехами и опасностью повреждения драйверов линии и приемников.
Плюс к этому, питание устройств не может быть независимым, иначе может возникнуть перекос между землями с неустранимыми помехами и опасностью повреждения драйверов линии и приемников.
Ну можно поставить "изоляторы", вроде быстрых оптических 1N136, 1N137, или неоптические ADUM... Тогда питание и земли могут быть разные. Я бы в любом случае поставил, если бы вдруг захотел тянуть SPI на метр.
И изоляторы можно, и питание можно объединить через кабель. Все это можно.
Только автор, по моему, вообще планировал соединить чипы pin-to-pin...
Только автор, по моему, вообще планировал соединить чипы pin-to-pin...
1-Wire(до 300м)1essor1 писал(а):какой способ передачи выбрать для связи без сбоев если провода (а соответственно и расстояние между мк) от 1 до 2м?
RS-232(до 15м)
RS-485(до 1 км)
I2C - можно на 2 метра и теоретически больше(уменьшая скорость)
Коктейль "Рекурсивный": 20% спирта, 30% воды, 50% коктейля "Рекурсивный"...
- Сообщения: 162
- Зарегистрирован: Вс дек 09, 2012 12:14:44
Я наверное не очень верно указал условия - один мк1 - по SPI выводит байт на сдвиговый регистр, а затем происходит считывание байта мк2 (последовательный вывод - параллельный ввод) - при этом мк2 и регистр находятся на одном блоке, мк1 на другом. Возможно это по извратски, но задумка была такая)
Вообще условие очень простое - соединить можно без согласования только когда это соединение нельзя считать длинной линией. Понятие это зависит от частоты - 1Мгц на 1 метр линии уже требует согласования, в то время как передавать с частотой 100Гц по линии протяженностью 1км - без проблем. Больше требуется расстояние - снижай скорость на которой работает SPI.
- Сообщения: 581
- Зарегистрирован: Ср янв 05, 2011 10:03:18
Я уже около 20 лет в импульсной технике топчусь, и там, именно с целью избежать разночтения, приняты термины ФРОНТ импульса и его СПАД. По аналогии с международными RISE и FALL. Сочетаний FRONT FRONT или REAR FRONT не существует.vitalik_1984 писал(а):Выражайтесь точнее тут надо читать по восходящему фронту читает. Фронт бывает и нисходящий.
С уважением,
Виктор.
Виктор.


