Репка / Repka-Pi

  • Автор темы Репка / Repka-Pi
  • Дата начала
Пишите библиотеку и настраивайте один из гипо на работу в spi режим


насколько я понимаю, библиотека то уже есть, can0 то работает :) нужно её донастроить для работы can1. Какая библиотека используется и где её настройки смотреть?
 
насколько я понимаю, библиотека то уже есть, can0 то работает :) нужно её донастроить для работы can1. Какая библиотека используется и где её настройки смотреть?


Пока не изучал этот вопрос но к примеру h6 поддерживает только два SPI
 
По идее, пусть разработчики подправят, надо посмотреть в даташите на какие гипо можно вывести SPI 2 и создать дополнительную схему(библиотеку) для вывода, так же в описания или как там правильно прописать для can1 это все по аналогии с can0
 
насколько я понимаю, библиотека то уже есть, can0 то работает :) нужно её донастроить для работы can1. Какая библиотека используется и где её настройки смотреть?


Вообще вы можете скачать dtb-шки с официального сайта и утилитой dtc декомпилировать sun50i-h5-repka-pi3-alt-uart-can-v1.6p.dtb (или другой файл с uart-can под вашу версию Репки). Там есть настройка CAN0 под SPI0. Теоретически если по образу и подобию дописать туда настройку для CAN1, скомпилировать обратно в dtb и подсунуть в прошивку - должно заработать.

Либо посмотреть, как можно настроить device tree по ходу загрузки, возможно как-то через переменные uboot это сделать.
Я эту тему слегка сбоку трогал пару лет назад (для другого девайса на ARM) и точнее не подскажу. Но надеюсь это поможет.
 
По идее, пусть разработчики подправят, надо посмотреть в даташите на какие гипо можно вывести SPI 2 и создать дополнительную схему(библиотеку) для вывода, так же в описания или как там правильно прописать для can1 это все по аналогии с can0


Работает через один SPI, только разные CS и INT на каждый из CANов
 
https://www.drive2.ru/b/627719160830365418/

Пример настройки CAN0 для Расбери, CAN1 там добавляется аналогично. Удобство в том что можно назначать нужные выводы для CS и INT.
 
Можно-то можно, но вот вникать в эти DT, то ещё развлечение :)
 
Вообще вы можете скачать dtb-шки с официального сайта и утилитой dtc декомпилировать sun50i-h5-repka-pi3-alt-uart-can-v1.6p.dtb (или другой файл с uart-can под вашу версию Репки). Там есть настройка CAN0 под SPI0. Теоретически если по образу и подобию дописать туда настройку для CAN1, скомпилировать обратно в dtb и подсунуть в прошивку - должно заработать.

Либо посмотреть, как можно настроить device tree по ходу загрузки, возможно как-то через переменные uboot это сделать.
Я эту тему слегка сбоку трогал пару лет назад (для другого девайса на ARM) и точнее не подскажу. Но надеюсь это поможет.


и это для H5, там тоже вникать нужно ..
 
https://docs.u-boot.org/en/latest/usage/fdt_overlays.html

Если я правильно понимаю, можно просто сделать свой DTB overlay (dtbo), чтобы не править основной DTB-файл и через boot.cmd добавить команду с его использованием.


Если бы через графическую оболочку бы это было, галочки поставил, это бы все автоматом подправилось и при следующей загрузке все как надо стало, но пока для обычных инженеров это не сделали))))
 
Кстати говоря, не планируется выложить DTB для 4-й репки на сайт?
 
Кстати говоря, не планируется выложить DTB для 4-й репки на сайт?


Проходила предварительная информация, что даже не просто DTB на сайт, а git-репозиторий планируется к Новому Году. Но это - планы, сами понимаете. Как пойдёт. Ждём.
 
Проходила предварительная информация, что даже не просто DTB на сайт, а git-репозиторий планируется к Новому Году. Но это - планы, сами понимаете. Как пойдёт. Ждём.


Ещё не плохо бы пины проименовать, например как тут разбирают - https://github.com/seamusdemora/PiFormulae/blob/master/DeviceTreeExperiments.md
 
Работает через один SPI, только разные CS и INT на каждый из CANов


Не заведёте вы два CAN на одном SPI на Репке просто так. Причина простая. Этот шилд, который на ваших фото, он как сделан? Для его работы используются стандартные пины SPI, которые есть на Малине (MOSI, MISO, CLK, CE0, CE1), а прерывания вешаются на пару свободных GPIO.

Открываем даташиты на процы. У BCM2835, на котором Малины сделаны, у каждого SPI из коробки по два сигнала CE (chip enable, он же CS - chip select). Для SPI1 и 2 вообще три сигнала CE выведено. У Allwinner H5, на котором сделана Репка, у обоих SPI только по одному сигналу CS. Второй CS вы нигде не получите физически.

Поэтому вы на уровне проца ничего с этим сделать не сможете - на малине либа просто пишет в нужные регистры и аппаратура всё сама делает (выбор чипа через выставление нужного CE и чтение/запись). На репке у вас физически нет такой возможности т.к. CS у аппаратного SPI только один.
 
Не заведёте вы два CAN на одном SPI на Репке просто так. Причина простая. Этот шилд, который на ваших фото, он как сделан? Для его работы используются стандартные пины SPI, которые есть на Малине (MOSI, MISO, CLK, CE0, CE1), а прерывания вешаются на пару свободных GPIO.

Открываем даташиты на процы. У BCM2835, на котором Малины сделаны, у каждого SPI из коробки по два сигнала CE (chip enable, он же CS - chip select). Для SPI1 и 2 вообще три сигнала CE выведено. У Allwinner H5, на котором сделана Репка, у обоих SPI только по одному сигналу CS. Второй CS вы нигде не получите физически.

Поэтому вы на уровне проца ничего с этим сделать не сможете - на малине либа просто пишет в нужные регистры и аппаратура всё сама делает (выбор чипа через выставление нужного CE и чтение/запись). На репке у вас физически нет такой возможности т.к. CS у аппаратного SPI только один.


А любой Gpio нельзя использовать для поднятия CS?
 
(фото из Telegram export не включено в файл экспорта)