Jump to content

    

3 - проводный SPI Vivado

Добрый день! 

Необходимо сконфигурировать с помощью zynq ацп и цап, имеющий только 3 - х проводный spi. Axi-quad SPI работает только в 4-х проводном. Может кто сталкивался, как это можно сделать?

Спасибо.

Share this post


Link to post
Share on other sites
On 11/24/2018 at 12:11 PM, Yaroslav said:

Добрый день! 

Необходимо сконфигурировать с помощью zynq ацп и цап, имеющий только 3 - х проводный spi. Axi-quad SPI работает только в 4-х проводном. Может кто сталкивался, как это можно сделать?

Спасибо.

Смотрите внимательно настройки ядра qspi - оно работает в одно-, двух- и 4-х канальном режиме. Если ничего не помогает - читайте даташит по ядру.

Share this post


Link to post
Share on other sites

Одно-, двух- и 4-х канальные режимы используют и MISO и MOSI линии. Мне нужен именно трех проводный SPI, где и чтение и запись осуществляются по одной линии 

SPIStormStandardProtocols_Full.png

Share this post


Link to post
Share on other sites
19 часов назад, gosha-z сказал:

Дурацкий вопрос: а чем PSный SPI не устроил?

В PSном SPI я тоже не нашел способа решения проблемы 3-х проводного SPI.

Share this post


Link to post
Share on other sites

сделайте на 3х пинах гпио - дергайте ими в нужной последовательности

Share this post


Link to post
Share on other sites

SPI вещь простая. Хоть ведущий, хоть ведомый. Хоть 3-, хоть 4-проводный. Упражнение для начинающих. Давно бы сами написали.

Или вам принципиально нужно с интерфейсом AXI?

Share this post


Link to post
Share on other sites
3 часа назад, andrew_b сказал:

SPI вещь простая. Хоть ведущий, хоть ведомый. Хоть 3-, хоть 4-проводный. Упражнение для начинающих. Давно бы сами написали.

Или вам принципиально нужно с интерфейсом AXI?

Желательно, но не обязательно. Думал, может есть какой-то уже готовый способ для этого

Share this post


Link to post
Share on other sites
On 11/24/2018 at 4:11 PM, Yaroslav said:

Добрый день! 

Необходимо сконфигурировать с помощью zynq ацп и цап, имеющий только 3 - х проводный spi. Axi-quad SPI работает только в 4-х проводном. Может кто сталкивался, как это можно сделать?

Спасибо.

Увы, решения на стандартных корках не существует. Варианта два :

1. Вы смиряетесь с тем, что у вас нет чтения из регистров от слова "совсем" и как-то живёте с этим дальше.

2. Вы используете режим GPIO и там уже реализуете "софтверно" нужный протокол. У программистов это называется по-моему bit bang.

 

Share this post


Link to post
Share on other sites
43 minutes ago, Bad0512 said:

Увы, решения на стандартных корках не существует. Варианта два :

 

У меня написан простенький модуль, который разбирает протокол и сам преобразует два сигнала в один двунаправленный. Естественно это работает если формат транзакций одинаковый у всех устройств на данной шине. Вот почему Xilinx не сделает поддержку 3-проводного SPI в своем контроллере, с учетом что сейчас куча периферии с ним - ума не приложу.

Share this post


Link to post
Share on other sites
3 hours ago, alexadmin said:

У меня написан простенький модуль, который разбирает протокол и сам преобразует два сигнала в один двунаправленный. Естественно это работает если формат транзакций одинаковый у всех устройств на данной шине.

Вот в этом как раз и есть основная проблема. У всех этих мелких SPI-ных устройств протоколы чуть-чуть отличаются (где-то длина слова нестандартная, где-то полярность чипселекта инверсная и т.п.). Поэтому можно конечно написать корку и потом "допиливать" её под каждого конкретного "зверька". Но (ИМХО) это не самый простой путь, много времени скушает отладка. Я обычно иду по второму пути (GPIO и управление всем этим делом из софта) - благо таблички регистров для этих мелких устройств как правило небольшие по размеру.

Share this post


Link to post
Share on other sites
1 minute ago, Bad0512 said:

Вот в этом как раз и есть основная проблема. У всех этих мелких SPI-ных устройств протоколы чуть-чуть отличаются (где-то длина слова нестандартная, где-то полярность чипселекта инверсная и т.п.). Поэтому можно конечно написать корку и потом "допиливать" её под каждого конкретного "зверька". Но (ИМХО) это не самый простой путь, много времени скушает отладка. Я обычно иду по второму пути (GPIO и управление всем этим делом из софта) - благо таблички регистров для этих мелких устройств как правило не большие по размеру.

Ну там всех параметров-то полярность клока, чип-селекта, позиция r/w бита да длина адреса. На практиче последние года два параметры менять не приходилось. Вроде даже у TI и Analog'а все совпало.

Share this post


Link to post
Share on other sites
3 часа назад, alexadmin сказал:

 

У меня написан простенький модуль, который разбирает протокол и сам преобразует два сигнала в один двунаправленный. Естественно это работает если формат транзакций одинаковый у всех устройств на данной шине. Вот почему Xilinx не сделает поддержку 3-проводного SPI в своем контроллере, с учетом что сейчас куча периферии с ним - ума не приложу.

С использованием IOBUF и изменяющимся по счетчику T-состоянием? 

Share this post


Link to post
Share on other sites
1 minute ago, Yaroslav said:

С использованием IOBUF и изменяющимся по счетчику T-состоянием? 

Да, типа того.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now