Номер прерывания для устройства, запрашивающего irq

Вопрос или проблема

Мне трудно понять, как я могу выбрать правильное значение для свойства прерывания в моем дереве устройств.

Предположим, что я подключил RTC RV3028 к моему Raspberry PI 4, в частности, вывод INT RV3028 подключен к GPIO4 RPI.

Смотря на привязки дерева устройства rv3028 (раздел: примеры), мы можем увидеть что-то вроде этого:

i2c {
    #address-cells = <1>;
    #size-cells = <0>;

    rtc@51 {
        compatible = "microcrystal,rv3028";
        reg = <0x51>;
        pinctrl-0 = <&rtc_nint_pins>;
        interrupts-extended = <&gpio1 16 IRQ_TYPE_LEVEL_HIGH>;
        trickle-resistor-ohms = <3000>;
    };
};

В этом случае они используют interrupts-extended, но, насколько я понимаю, я мог бы также использовать

    interrupt-parent = <&gpio1>;
    interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;

И теперь мой вопрос – как я могу решить, какое номер прерывания мне следует использовать вместо 16 в этом случае, потому что я предполагаю, что это не правильный номер прерывания?

Существует ли какой-либо общий способ, который я мог бы использовать, чтобы выяснить, какой номер прерывания правильный, если я подключаю вывод INT устройства к GPIOx? Это специфично для SoC / вендора / контроллера прерываний? Если да, то как я могу сделать это для, например, SoC NXP или ST?

Какие шаги мне следует предпринять, чтобы найти правильный номер?

Как только я найду правильный вывод, я предполагаю, что позже мне следует настроить его как вход, настроить подтяжку вверх/вниз и так далее?

Я буду признателен за любые советы.

.

Ответ или решение

Выбор правильного значения прерывания для устройства в дереве устройств Raspberry Pi

При подключении RTC (реального времени) RV3028 к Raspberry Pi 4, необходимо надлежащим образом задать прерывания в дереве устройств (Device Tree). Вопрос выбора правильного значения прерывания становится особенно важным для корректной работы устройства. В данной статье мы подробно рассмотрим, как выбрать правильный номер прерывания для подключаемого устройства и какие шаги необходимо предпринять.

Понимание схемы подключения

  1. Подключение устройства: В данном случае вы подключаете вывод INT (прерывания) RV3028 к GPIO4 Raspberry Pi.
  2. Идентификация GPIO: GPIO-пины Raspberry Pi имеют свои внутренние номера, которые могут различаться в зависимости от модели и использования.

Основные особенности работы с прерываниями

Прерывания могут быть настроены различными способами, используя либо interrupts-extended, либо комбинацию interrupt-parent и interrupts.

Пример настройки через interrupts-extended:
interrupts-extended = <&gpio1 16 IRQ_TYPE_LEVEL_HIGH>;
Альтернативный вариант с использованием interrupt-parent:
interrupt-parent = <&gpio1>;
interrupts = <16 IRQ_TYPE_LEVEL_HIGH>;

Определение правильного номера прерывания

  1. Изучение документации SoC: Первым шагом в определении правильного номера прерывания является изучение документации по SoC (системе на кристалле) или контроллеру прерываний, который используется в вашем Raspberry Pi. Например, в Raspberry Pi 4 используются различные аппаратные прерывания для GPIO.

  2. Идентификация GPIO-прерываний:

    • У Raspberry Pi 4 прерывания GPIO нумеруются с использованием конкретной схемы. Например, GPIO4 может иметь связаноe с ним прерывание с номером, который нужно узнать в документации или с использованием схемы разработки.
  3. Использование справочных материалов и ресурсов: Рекомендуется обратиться к таким ресурсам, как:

    • Официальная документация Raspberry Pi.
    • Сообщество разработчиков, такие как форумы Raspberry Pi и проекты на GitHub, где можно найти примеры, аналогичные вашему случаю.
  4. Тестирование и отладка: После того как вы определили номер прерывания, рекомендуется протестировать конфигурацию и убедиться в корректной работе устройства. Вы можете использовать скрипты или собственные приложения для проверки наличия срабатывания прерывания.

Конфигурация GPIO

После выбора номеров прерываний важно убедиться, что GPIO правильно настроены:

  • Конфигурация как вход: Убедитесь, что пин настроен как вход для получения сигналов прерывания.
  • Настройка выдержки: Возможно, потребуется настроить подтяжку (pull-up/pull-down) для предотвращения случайных срабатываний.

Заключение

Работа с прерываниями на таких устройствах, как Raspberry Pi, требует тщательно продуманного подхода. Правильно выбранный номер прерывания и корректная настройка GPIO обеспечат надежную и стабильную работу вашего устройства. Не забывайте исследовать документацию для уточнения всех нюансов, связаться с сообществом разработчиков при возникновении вопросов и тестировать свою конфигурацию на реальном оборудовании. Удачи в ваших проектах с RV3028 и Raspberry Pi!

Оцените материал
Добавить комментарий

Капча загружается...