June 5th, 2019

Дождались!

Есть вещи, которые, кажется, никогда не будут выпущены:
- Half-life 3,
- новые тома "Искусства программирования" Дональда Кнута,
- окончание "Песни льда и пламени"
- моя книжка по кватернионам, а также окончание циклов про теоретический кпд солнечных батарей, про уравновешенное троичное быстрое преобразование Фурье, хотя бы альфа-версия ScanCombine

Но недавно товарищ Freeman-47 выпустил ещё один "долгострой", который вселяет огромную надежду!
Collapse )

Мучаем 5576ХС4Т - часть 'h39 - приказываю: спи! (по SPI)

[Оглавление (ссылки на остальные части)]Часть 0 - покупаем, паяем, ставим драйвера и софт
Часть 1 - что это вообще за зверь?
Часть 2 - наша первая схема!
Часть 3 - кнопочки и лампочки
Часть 4 - делитель частоты
Часть 5 - подавление дребезга кнопки
Часть 6 - заканчиваем кнопочки и лампочки
Часть 7 - счетчики и жаба
Часть 8 - передатчик UART
Часть 9 - Hello, wolf!
Часть 'hA - приёмник UART
Часть 'hB - UART и жаба
Часть 'hC - полудуплексный UART.
Часть 'hD - МКО (МКИО, Mil-Std 1553) для бедных, введение.
Часть 'hE - приёмопередатчик МКО "из подручных материалов" (в процессе)
Часть 'hF - модуль передатчика МКО
Часть 'h10 - передатчик сообщений МКО
Часть 'h20 - работа с АЦП ADC124s051
Часть 'h21 - преобразование двоичного кода в двоично-десятичный (BCD)
Часть 'h22 - Bin2Bcd с последовательной выдачей данных
Часть 'h23 - перемножитель беззнаковых чисел с округлением
Часть 'h24 - перемножитель беззнаковых чисел, реализация
Часть 'h25 - передаём показания АЦП на компьютер
Часть 'h26 - работа над ошибками (быстрый UART)
Часть 'h27 - PNG и коды коррекции ошибок CRC32
Часть 'h28 - передатчик изображения PNG
Часть 'h29 - принимаем с ПЛИС изображение PNG
Часть 'h2A - ZLIB и коды коррекции ошибок Adler32
Часть 'h2B - ускоряем Adler32
Часть 'h2C - формирователь потока Zlib
Часть 'h2D - передаём сгенерированное PNG-изображение
Часть 'h2E - делим отрезок на равные части
Часть 'h2F - знаковые умножители, тысячи их!
Часть 'h30 - вычислитель множества Мандельброта
Часть 'h31 - ускоренные сумматоры
Часть 'h32 - ускоренные счётчики (делаем часы)
Часть 'h33 - ускоряем ВСЁ
Часть 'h34 - ускоренные перемножители
Часть 'h35 - умножители совсем просто
Часть 'h36 - уравновешенный четверичный умножитель
Часть 'h37 - ускоренные счётчики, работа над ошибками
Часть 'h38 - передатчик байтов SPI
Часть 'h39 - приказываю: спи! (по SPI)


Отдельные байты мы отправлять по SPI научились, теперь надо соединить их в сообщения, даже скорее цепочку сообщений. Под сообщением мы имеем в виду последовательность байт, во время которой nCS (negative Chip Select) непрерывно остаётся нулевым. Затем он примерно на 1 такт SCK становится единичным, затем снова нулевым - и мы передаём следующее сообщение.

Но сначала мы опишем, какие именно сообщения мы хотим отправить на многострадальный Ethernet-контроллер ENC624J600, и как они будут представлены в памяти, именно их отправку мы и понаблюдаем сначала на симуляции, а потом - "в железе".

Collapse )

Мучаем 5576ХС4Т - часть 'h3A - передатчик сообщений SPI

[Оглавление (ссылки на остальные части)]Часть 0 - покупаем, паяем, ставим драйвера и софт
Часть 1 - что это вообще за зверь?
Часть 2 - наша первая схема!
Часть 3 - кнопочки и лампочки
Часть 4 - делитель частоты
Часть 5 - подавление дребезга кнопки
Часть 6 - заканчиваем кнопочки и лампочки
Часть 7 - счетчики и жаба
Часть 8 - передатчик UART
Часть 9 - Hello, wolf!
Часть 'hA - приёмник UART
Часть 'hB - UART и жаба
Часть 'hC - полудуплексный UART.
Часть 'hD - МКО (МКИО, Mil-Std 1553) для бедных, введение.
Часть 'hE - приёмопередатчик МКО "из подручных материалов" (в процессе)
Часть 'hF - модуль передатчика МКО
Часть 'h10 - передатчик сообщений МКО
Часть 'h20 - работа с АЦП ADC124s051
Часть 'h21 - преобразование двоичного кода в двоично-десятичный (BCD)
Часть 'h22 - Bin2Bcd с последовательной выдачей данных
Часть 'h23 - перемножитель беззнаковых чисел с округлением
Часть 'h24 - перемножитель беззнаковых чисел, реализация
Часть 'h25 - передаём показания АЦП на компьютер
Часть 'h26 - работа над ошибками (быстрый UART)
Часть 'h27 - PNG и коды коррекции ошибок CRC32
Часть 'h28 - передатчик изображения PNG
Часть 'h29 - принимаем с ПЛИС изображение PNG
Часть 'h2A - ZLIB и коды коррекции ошибок Adler32
Часть 'h2B - ускоряем Adler32
Часть 'h2C - формирователь потока Zlib
Часть 'h2D - передаём сгенерированное PNG-изображение
Часть 'h2E - делим отрезок на равные части
Часть 'h2F - знаковые умножители, тысячи их!
Часть 'h30 - вычислитель множества Мандельброта
Часть 'h31 - ускоренные сумматоры
Часть 'h32 - ускоренные счётчики (делаем часы)
Часть 'h33 - ускоряем ВСЁ
Часть 'h34 - ускоренные перемножители
Часть 'h35 - умножители совсем просто
Часть 'h36 - уравновешенный четверичный умножитель
Часть 'h37 - ускоренные счётчики, работа над ошибками
Часть 'h38 - передатчик байтов SPI
Часть 'h39 - приказываю: спи! (по SPI)
Мучаем 5576ХС4Т - часть 'h3A - передатчик сообщений SPI


В прошлой части, основательно накурившись мануалов, мы пришли к следующей последовательности:
04 22 54 00 01 04 22 66 00 18 03 22 6F 01 00,


с помощью которой мы сможем почти что отключить Ethernet-контроллер (он сидит у нас на отладочной плате и жрёт не в себя, хотя мы его пока не используем!) и настроить тактовую частоту, которую он нам присылает. По умолчанию это 4 МГц, а мы хотим 33,33 МГц, потому что немножко надоело мучаться с 80 МГц, на них очень тяжело, ничего не хочет работать "из коробки", пока основательно не доработаешь напильником.

Сначала идёт количество байтов (04), затем эти самые байты (22 54 00 01), которые передаются одной посылкой, затем следующее количество байтов (04), очередные байты (22 66 00 18), которые передаются следующей посылкой (если бы они сидели все в одной посылке, смысл бы изменился, мы бы продолжили записывать в память с адреса 54), снова количество байтов (03) и снова посылка (22 6F 01) и, наконец, нолик, на котором работа завершается.

Напишем передатчик, который сможет правильно воспринять эту последовательность и передать необходимые посылки по SPI, используя передатчик байтов из части 'h38.




Collapse )