Easyelectronics.ru

Электроника для всех
Текущее время: 22 окт 2018, 17:16

Часовой пояс: UTC + 5 часов



    • JLCPCB - Прототипы 10 PCBs всего за 2$ (100*100mm, 2-layer)
    • Как мы делаем платы, смотрите на YouTube
    • Крупнейшая китайская фабрика прототипов. 300000+ заказчиков и 10000+ заказов в день!
    • LCSC - Крупнейший китайский онлайн магазин комплектующих.

Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 05 апр 2018, 23:10 
Заглядывает иногда

Зарегистрирован: 18 окт 2014, 00:39
Сообщения: 138
BusMaster писал(а):
Так у вас эти модули потребляют данные в каком виде? Им нужен 8-битный БАЙТ или однобитный БИТ?

Простой протокол запрос/ответ. Данных обычно мало, 10 байт максимум.

BusMaster писал(а):
Если БАЙТ, то чтобы передать БАЙТ через SPI, нужно 8 тактов, и по регистру он будет проходить за 8 тактов. Умножьте 8 тактов регистра на 32 регистра (модуля) и получите 256 тактов или БИТ, или в байтах это будет ровно 32 БАЙТА. Ой, да в любом случае, при прогоне через 8-разрядный регистр потребуется 8 тактов, или 1 БАЙТ по SPI.

После выдачи адреса сдвиговый регистр далее не учавствует в передаче данных. Далее данные идут непосредственно на MOSI всех слейвов.

BusMaster писал(а):
Ааа, стоп, вот еще фишка. Чтобы прогнать позиционный адрес по 32-м модулям, потребуется тоже 32 БАЙТА. Или я опять че-то не понимаю? Сколько будет 595-х регистров вообще?

Приведена схема ОДНОЙ платы расширения, на одной плате 8 слейвов. Плат расширения - до 4 шт.

BusMaster писал(а):
Кароче, прогон любого, даже одного бита через один 595-й регистр занимает 8 тактов, или 1 БАЙТ данных.

Да, но для выбора нужного слейва нужно выдать 32-х битное число, не более. Верно?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 05 апр 2018, 23:16 
Заглядывает иногда

Зарегистрирован: 18 окт 2014, 00:39
Сообщения: 138
BusMaster писал(а):
Да я и сам то еще не всё понял. Я медленно, последовательными приближениями начинаю малость въезжать.
Что понял на этот момент:
- есть 4 одинаковых платы.
- на каждой такой плате стоит ОДИН 595-й регистр, параллельные выходы которого подключены к входам CS восьми SPI-слейвов, расположенных по 8 штук на плате, а последовательный выход уходит на следующую в цепи плату.
- позиционный (инверсный) код выбора SPI-слейва (сигнал CS) состоит из 32 БИТ, прогоняемых через 595-й регистр на каждой плате, итого 4 регистра.

Верно.

BusMaster писал(а):
- после этого идут байты данных, которые проходят через максимум 4 платы, то есть максимум через 4 регистра.
- на каждой плате с последовательного выхода регистра сигнал MOSI распараллеливается на 8 слейвов
- этот сигнал принимает тот слейв, для которого CS = 0 во время выбора позиционного адреса.

MOSI идет с регистра только во время передачи адреса слейва. Далее MOSI идет на слейвы напрямую, без участия 595 (благодаря 74HC157).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 05 апр 2018, 23:25 
Старожил
Аватара пользователя

Зарегистрирован: 22 июл 2017, 11:48
Сообщения: 2385
Вооооо!!! Фуууух, блин, ну слава богу, разобрались :))) Блин, а ведь насколько было бы проще, если была бы просто нарисована полная схема модуля...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 05 апр 2018, 23:37 
Заглядывает иногда

Зарегистрирован: 18 окт 2014, 00:39
Сообщения: 138
BusMaster писал(а):
Вооооо!!! Фуууух, блин, ну слава богу, разобрались :))) Блин, а ведь насколько было бы проще, если была бы просто нарисована полная схема модуля...

Простите, учту. Собственно и сам хотел удостовериться что схема и сценарий рабочие и нет ошибок.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 06 апр 2018, 07:20 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3465
Откуда: Новосибирск
Я не заморачивался с CS. Есть один проект с расширением ввода-вывода, где 3 входных регистра и 2 выходных. 74HC165 и 74HC595. Входы защелки параллельно отдельно - входные регистры, отдельно - выходные. CS жестко на минус питания. Входные регистры соединены паровозом в свою цепь, выходные в свою. MISO МК на выход последнего входного регистра. MOSI на вход первого выходного регистра.
В ОЗУ создаются буферы входов и выходов. Алгоритм программы: защелкиваем входы, и начинаем отправлять данные на выходные регистры. В конце передачи каждого байта считываем данные входных регистров. В конце передачи буфера защелкиваем выходные регистры.
Можно входы защелок входных и выходных регистров объединить. Но при этом нужно учитывать, что состояние входных регистров будет запаздывать на 1 итерацию алгоритма.

Код:
//========================================================================
u08 _proc_in_out;

u08 inputs_buf [IN_OUT_BYTES];
u08 outputs_buf [IN_OUT_BYTES];

static u08 in_out_cnt;
//========================================================================

//========================================================================
void receive_send_in_out (void)
{
   sram_copy (spi_transf_buf, outputs_buf, IN_OUT_BYTES);

   in_out_cnt = 0;

   strob_latch_in ();

   while (in_out_cnt < IN_OUT_BYTES)
   {
      spi_transf (in_out_cnt);

      spi_receive_buf [in_out_cnt] = SPDR;

      in_out_cnt++;
   }

   strob_latch_out ();

   sram_copy (inputs_buf, spi_receive_buf, IN_OUT_BYTES);
}
//========================================================================

//========================================================================
void proc_in_out (void)
{
   switch (_proc_in_out)
   {
      case PROC_IN_OUT_INIT:
         spi_init ();

         receive_send_in_out ();

         _oe_enable ();

         set_timer (ST_PROC_IN_OUT, NO_RERUN_TIMER, 10);
         _proc_in_out = PROC_IN_OUT_RUN;
         break;

      case PROC_IN_OUT_RUN:
         if (wait (ST_PROC_IN_OUT))
         {
            receive_send_in_out ();

            set_timer (ST_PROC_IN_OUT, NO_RERUN_TIMER, 10);
         }
         break;

      default:
         break;
   }

}
//========================================================================


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 06 апр 2018, 16:19 
Заглядывает иногда

Зарегистрирован: 18 окт 2014, 00:39
Сообщения: 138
demiurg1978 писал(а):
Я не заморачивался с CS. Есть один проект с расширением ввода-вывода, где 3 входных регистра и 2 выходных. 74HC165 и 74HC595. Входы защелки параллельно отдельно - входные регистры, отдельно - выходные. CS жестко на минус питания. Входные регистры соединены паровозом в свою цепь, выходные в свою. MISO МК на выход последнего входного регистра. MOSI на вход первого выходного регистра.
В ОЗУ создаются буферы входов и выходов. Алгоритм программы: защелкиваем входы, и начинаем отправлять данные на выходные регистры. В конце передачи каждого байта считываем данные входных регистров. В конце передачи буфера защелкиваем выходные регистры.
Можно входы защелок входных и выходных регистров объединить. Но при этом нужно учитывать, что состояние входных регистров будет запаздывать на 1 итерацию алгоритма.

Очень интересно рассмотреть ваш вариант, но без схемы и пошлагового сценария работы я ничего не понял. Можете привести схему и сценарий?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 06 апр 2018, 16:36 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3465
Откуда: Новосибирск
Вам не схема требуется, а разобраться как работают сдвиговые регистры. Тогда вы все поймете и без схемы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 06 апр 2018, 16:51 
Заглядывает иногда

Зарегистрирован: 18 окт 2014, 00:39
Сообщения: 138
demiurg1978 писал(а):
Вам не схема требуется, а разобраться как работают сдвиговые регистры. Тогда вы все поймете и без схемы.

Без схемы я все равно ничего не пойму. Без вашей схемы буду рисовать свою на основе вашего описания. А это чревато ошибками. Луше если вы приведете оригинал схемы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 06 апр 2018, 20:26 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3465
Откуда: Новосибирск
turnon писал(а):
...

Мне не лень, все просто и тупо. Мы вам хоть до посинения можем писать, но пока вы сами не разберетесь, как работает, к примеру, 74HC595, вся писанина будет бесполезна. Это же касается любой другой цифровой финтифлюшки. Не надо на форумах искать добрых дяденек, которые за вас полезут искать в даташитах нужную ВАМ информацию, разжуют и в рот вам положат. Азы разбирайте сами. На форумы приходите с конкретными вопросами, когда вы уперлись в тупик.
Яндекс, Гугл - "74hc595 описание на русском" вам в помощь. Это азы. Еще и бонус, картинки. А там схемы, представляете, да?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 06 апр 2018, 20:55 
Заглядывает иногда

Зарегистрирован: 18 окт 2014, 00:39
Сообщения: 138
demiurg1978 писал(а):
turnon писал(а):
...

Мне не лень, все просто и тупо. Мы вам хоть до посинения можем писать, но пока вы сами не разберетесь, как работает, к примеру, 74HC595, вся писанина будет бесполезна. Это же касается любой другой цифровой финтифлюшки. Не надо на форумах искать добрых дяденек, которые за вас полезут искать в даташитах нужную ВАМ информацию, разжуют и в рот вам положат. Азы разбирайте сами. На форумы приходите с конкретными вопросами, когда вы уперлись в тупик.
Яндекс, Гугл - "74hc595 описание на русском" вам в помощь. Это азы. Еще и бонус, картинки. А там схемы, представляете, да?

Причем тут как работает 74HC595? Вы предлагаете телепатически по вашим пространным описаниям догадываться, что же вы там имели ввиду. Да и скорее всего нет у вас никакой схемы, раз такая писанина вместо простого выкладывания картинки.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 06 апр 2018, 21:02 
Заглядывает иногда

Зарегистрирован: 18 окт 2014, 00:39
Сообщения: 138
demiurg1978 писал(а):
Я не заморачивался с CS. CS жестко на минус питания.

Это стратегическая ошибка. Возможно для вашего ограниченого набора модулей оно и работает, но часто CS необходим для нормальной работы SPI слейва.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 07 апр 2018, 09:16 
Старожил

Зарегистрирован: 25 фев 2011, 18:45
Сообщения: 3465
Откуда: Новосибирск
Плевать какой регистр. У всех сдвиговых регистров есть последовательный вход и выход для подключения их в цепочку. Пусть у нас 8 регистров и они соединены в цепочку. Соединяем все CS-входы параллельно и даем на них активный уровень. Пусть у нас 8 выходных регистров. Есть буфер на 8 байтов - состояние регистров. Запускаем SPI. Начинаем передавать 1-ый байт. При передаче 1 байта эти данные будут в первом в цепочке регистре. Начинаем передавать 2 байт, 1-ый байт будет пропихиваться в следующий регистр. И так передаем 8 байтов.
А если вы соизволили заглянуть в любой источник информации, то знали бы об этом сами. И В ПЕРВУЮ ОЧЕРЕДЬ не тратили бы свое время и уже сделали бы что-то полезное. И я или любой участник тоже не тратили бы свое время. Личное время - это невосполнимый ресурс. Ты мне его не вернешь. И не нужно сейчас на меня обижаться за эти слова. Вам интересна электроника? Так поднимите свою пятую точку и почитайте хоть какие-то азы.
Участникам форумов не трудно ответить, но почему мы должны тратить свое время на разъяснение азов? А вот если у вас действительно затруднение и сообщество видит, что вы действительно соизволили потрудиться, что-то почитать, тогда уже совершенно другое отношение к вопросам и затруднениям.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Покритикуйте схему каскадной платы расширения SPI
СообщениеДобавлено: 13 май 2018, 12:04 
Старожил

Зарегистрирован: 02 июл 2010, 23:41
Сообщения: 408
Как сложно и мудрёно сделано, не стал разбираться. Почему бы не сделать простым и, на мой взгляд, стандартным образом.
На кабель надо работать через шинный формирователь.
Можно применить шинник 74НС244, и его же использовать для выбора слейва, у шинника есть Z-состояние. Для выбора адреса, конечно, использовать 74НС595.
На одной плате расширения будет четыре микросхемы 244 и одна 595 – просто и дёшево.
Как я понял, иногда может использоваться только одна плата расширения. Всегда гнать 32 бита для выбора адреса нехорошо. В этом плане, наверно, лучше на плате процессора поставить коммутатор для выбора платы расширения. Тогда вначале будет выбираться плата, а затем подаётся 8 бит для выбора адреса.
В качестве коммутатора для единообразия можно также использовать 244, если соединить входы.
У шинника 4 сигнала. Три пойдут на SPI, четвёртый для сервиса можно применить для определения наличия подключения платы расширения.
Для сокращения используемых выводов процессора можно SPI использовать и для работы со слейвом, и для прогонки адреса, для этого применить ещё один коммутатор.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 38 ]  На страницу Пред.  1, 2

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB