Вопрос или проблема
Мне трудно понять, как я могу выбрать правильное значение для свойства прерывания в моем дереве устройств.
Предположим, что я подключил 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). Вопрос выбора правильного значения прерывания становится особенно важным для корректной работы устройства. В данной статье мы подробно рассмотрим, как выбрать правильный номер прерывания для подключаемого устройства и какие шаги необходимо предпринять.
Понимание схемы подключения
- Подключение устройства: В данном случае вы подключаете вывод INT (прерывания) RV3028 к GPIO4 Raspberry Pi.
- Идентификация 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>;
Определение правильного номера прерывания
-
Изучение документации SoC: Первым шагом в определении правильного номера прерывания является изучение документации по SoC (системе на кристалле) или контроллеру прерываний, который используется в вашем Raspberry Pi. Например, в Raspberry Pi 4 используются различные аппаратные прерывания для GPIO.
-
Идентификация GPIO-прерываний:
- У Raspberry Pi 4 прерывания GPIO нумеруются с использованием конкретной схемы. Например, GPIO4 может иметь связаноe с ним прерывание с номером, который нужно узнать в документации или с использованием схемы разработки.
-
Использование справочных материалов и ресурсов: Рекомендуется обратиться к таким ресурсам, как:
- Официальная документация Raspberry Pi.
- Сообщество разработчиков, такие как форумы Raspberry Pi и проекты на GitHub, где можно найти примеры, аналогичные вашему случаю.
-
Тестирование и отладка: После того как вы определили номер прерывания, рекомендуется протестировать конфигурацию и убедиться в корректной работе устройства. Вы можете использовать скрипты или собственные приложения для проверки наличия срабатывания прерывания.
Конфигурация GPIO
После выбора номеров прерываний важно убедиться, что GPIO правильно настроены:
- Конфигурация как вход: Убедитесь, что пин настроен как вход для получения сигналов прерывания.
- Настройка выдержки: Возможно, потребуется настроить подтяжку (pull-up/pull-down) для предотвращения случайных срабатываний.
Заключение
Работа с прерываниями на таких устройствах, как Raspberry Pi, требует тщательно продуманного подхода. Правильно выбранный номер прерывания и корректная настройка GPIO обеспечат надежную и стабильную работу вашего устройства. Не забывайте исследовать документацию для уточнения всех нюансов, связаться с сообществом разработчиков при возникновении вопросов и тестировать свою конфигурацию на реальном оборудовании. Удачи в ваших проектах с RV3028 и Raspberry Pi!