SPI по одному проводу
- Войдите на сайт для отправки комментариев
Пт, 24/08/2018 - 15:06
Коллеги, может кто сталкивался - надо организовать SPI на ардуино в режиме slave по 1 проводу. Т.е. MOSI и MISO объеденить. Программные эмуляторы SPI не катят - нужна максимальная скорость аппаратного SPI.
SMT32 вроде это позволяет, но может AVR имеет какие нибудь обходные пути? Заранее спасибо.
это не один провод, а минимум два, еще clock
вот как раз stm32 и даже stm8 имеют такой режим работы аппаратного SPI где данные в обе стороны на одной линии
с атмега разработки прошлого века про такую возможность забудьте
по крайней мере на аппаратном уровне
Спасибо, добрый человек axill но это я и так знал. Но может кто-то придумал схему с использованием стандартных логических модулей и логических выходов ардуинки для реализации этого.
Коллеги, может кто сталкивался - надо организовать SPI на ардуино в режиме slave по 1 проводу. Т.е. MOSI и MISO объеденить.
А нужно и читать, и писать? Или в slave только читать достаточно?
Вы думаете кто то поковырял иголкой в кристалле и появился дву проводной SPI?
Увы. То чего нет в железе можно сделать только в софте ногодрыгом
Нет, ну есть 2-проводной USI, например, на 85-ой, но пока хочется понять что ТС нужно.
Ненадо ниче ковырять. Достаточно понимать как оно работает. Я правда не вижу особого смысла долбатся с MOSI и MISO. Кроме них ведь еще CLK, CS и земля требуется. Ну допустим именно одного провода не хватает... 1. Провеяем что все передатчики (ну выходы вобщем) на общую шину в пассивном состоянии держат 1. Так должно быть, но если нет - несудьба. 2. общую шину подтягиваем к +5 резистором R. 3.все приемники подключаем к общей шине напрямую. 4. все передатчики подключаем через диод к общей шине катод к выходу, анод к шине. Это называется монтажнои И. Так можна обединять несколько выходов и входов. Например 2 uart.
О скорости "нужна максимальная скорость" - не серезно, пишите сколько надо конкретно. В данном случае скорость будет зависеть от постоянной времени RC, где С- емкость общей шины. Потому R выбираем поминимуму, 220-250 Ом. И диоды с емкостями поменше, и провод тоже. Но ИМХО - надо делать по другому, без обединения, особеноо если реально "нужна максимальная скорость".
О скорости "нужна максимальная скорость" - не серезно, пишите сколько надо конкретно. В данном случае скорость будет зависеть от постоянной времени RC, где С- емкость общей шины. Потому R выбираем поминимуму, 220-250 Ом. И диоды с емкостями поменше, и провод тоже. Но ИМХО - надо делать по другому, без обединения, особеноо если реально "нужна максимальная скорость".
Максимальная скорость - это 100нс по синхро. Далее SPI выкакивает то что принял на порт с замедлением на 8 бит. без объединения не получается - МС такая глупая - все по одной шине гонит.
Коллеги, может кто сталкивался - надо организовать SPI на ардуино в режиме slave по 1 проводу. Т.е. MOSI и MISO объеденить.
А нужно и читать, и писать? Или в slave только читать достаточно?
Тут надо съэмулировать мою любимую МС UPD16432B. Там пишут и читают по 1 проводу и именно в режиме slave.
//мою любимую МС UPD16432B.
Любовь конечно зла, но может пора закопать стюардесу? ;) А не .. ну эмулировать её ;) Похоже хотите экранчик поновей присобачить на место старого, да малой кровю ))))
ПС. Думаю SPI 10МГц не станет проблемой, если длина шины разумная.
ПС. Думаю SPI 10МГц не станет проблемой, если длина шины разумная.
насколько помню у мег предел частоты SPI это 1/2 от клока. значит 10мгц достижимы на пределе атмега328 с кварцем на 20мгц. обычная ардуина с кварцем 16 даст максимум 8
Тут надо съэмулировать мою любимую МС UPD16432B. Там пишут и читают по 1 проводу и именно в режиме slave.
хотите атмегу пишите ногодрыг
хотите железный SPI берите контроллер в котором это есть
нет варианта и и
//хотите атмегу пишите ногодрыг
Ногодрыг, для SPI slave, на 8-10МГц, атмега328, кварц 16-20МГц? Так не бывает. Только аппаратный.
Спасибо, коллеги!
Значит буду пробовать на STM32. Платку приобрел, жаль что в Протеусе не эмулируется :(
Спасибо, коллеги!
Значит буду пробовать на STM32. Платку приобрел, жаль что в Протеусе не эмулируется :(
зато в железе прекрасно отлаживается. это намного лучше чем эмуляция в протеусе
Вообще в протеусе есть stm32f103, только какая-то из младших моделей. Вроде С4. Не помню точно. Можно ее помучать, если уж совсе никак по другому.
Вообще в протеусе есть stm32f103, только какая-то из младших моделей. Вроде С4. Не помню точно. Можно ее помучать, если уж совсе никак по другому.
Пробовал, но так и не понял то ли эмулятор кривой, то ли руки. Не работает.