Можно ли использовать специальные контакты Arduino Due для цифровой записи и чтения?
Здравствуйте, в документации для arduino указано расположение контактов. Я делаю собственную плату. используя схемы сборов, и у меня все еще немного мало контактов. Кроме того, некоторые из специальных булавок обеспечивают лучшее расположение следов.
Возможно ли digitalWrite()/digitalRead() специальные контакты, такие как:
- Прием (0–3)
- Передача (0–3)
- ПДД (0–1)
- Процент вероятности нежелательной почты (0–1)
- CANRX
- КАНТКС
- Индикатор RX
- Передача светодиодов
- МИСО
- МОСИ
- СКЛК
Что касается линий SPI и i2c, я буду использовать их по прямому назначению, но все равно хотел бы воспользоваться возможностью, чтобы узнать об этом.
У меня нет должного, поэтому, к сожалению, я не могу его проверить
@Jack, 👍0
2 ответа
Лучший ответ:
Да, хотя вам может потребоваться изменить файлы вариантов, чтобы разрешить к ним доступ.
Каждая функция SAM3X8E является «мультиплексной». То есть он разделяет контакты с другими функциями. Например, CANTX0 — это альтернативная функция контакта PA0.
Вы можете найти все альтернативные сопоставления функций на странице 40 техническое описание.
Вы можете обнаружить, что многим из этих контактов уже присвоен номер контакта Arduino в вариант файла. Если это так, то вы можете просто использовать его, как любой цифровой контакт ввода-вывода.
Я включил сюда комментарии из файлов вариантов для быстрого ознакомления:
/*
* DUE Board pin | PORT | Label
* ----------------+--------+-------
* 0 | PA8 | "RX0"
* 1 | PA9 | "TX0"
* 2 TIOA0 | PB25 |
* 3 TIOA7 | PC28 |
* 4 NPCS1 | PA29 |
* TIOB6 | PC26 |
* 5 TIOA6 | PC25 |
* 6 PWML7 | PC24 |
* 7 PWML6 | PC23 |
* 8 PWML5 | PC22 |
* 9 PWML4 | PC21 |
* 10 NPCS0 | PA28 |
* TIOB7 | PC29 |
* 11 TIOA8 | PD7 |
* 12 TIOB8 | PD8 |
* 13 TIOB0 | PB27 | LED AMBER "L"
* 14 TXD3 | PD4 | "TX3"
* 15 RXD3 | PD5 | "RX3"
* 16 TXD1 | PA13 | "TX2"
* 17 RXD1 | PA12 | "RX2"
* 18 TXD0 | PA11 | "TX1"
* 19 RXD0 | PA10 | "RX1"
* 20 | PB12 | "SDA"
* 21 | PB13 | "SCL"
* 22 | PB26 |
* 23 | PA14 |
* 24 | PA15 |
* 25 | PD0 |
* 26 | PD1 |
* 27 | PD2 |
* 28 | PD3 |
* 29 | PD6 |
* 30 | PD9 |
* 31 | PA7 |
* 32 | PD10 |
* 33 | PC1 |
* 34 | PC2 |
* 35 | PC3 |
* 36 | PC4 |
* 37 | PC5 |
* 38 | PC6 |
* 39 | PC7 |
* 40 | PC8 |
* 41 | PC9 |
* 42 | PA19 |
* 43 | PA20 |
* 44 | PC19 |
* 45 | PC18 |
* 46 | PC17 |
* 47 | PC16 |
* 48 | PC15 |
* 49 | PC14 |
* 50 | PC13 |
* 51 | PC12 |
* 52 NPCS2 | PB21 |
* 53 | PB14 |
* 54 | PA16 | "A0"
* 55 | PA24 | "A1"
* 56 | PA23 | "A2"
* 57 | PA22 | "A3"
* 58 TIOB2 | PA6 | "A4"
* 69 | PA4 | "A5"
* 60 TIOB1 | PA3 | "A6"
* 61 TIOA1 | PA2 | "A7"
* 62 | PB17 | "A8"
* 63 | PB18 | "A9"
* 64 | PB19 | "A10"
* 65 | PB20 | "A11"
* 66 | PB15 | "DAC0"
* 67 | PB16 | "DAC1"
* 68 | PA1 | "CANRX"
* 69 | PA0 | "CANTX"
* 70 | PA17 | "SDA1"
* 71 | PA18 | "SCL1"
* 72 | PC30 | LED AMBER "RX"
* 73 | PA21 | LED AMBER "TX"
* 74 MISO | PA25 |
* 75 MOSI | PA26 |
* 76 SCLK | PA27 |
* 77 NPCS0 | PA28 |
* 78 NPCS3 | PB23 | unconnected!
Насколько я знаю, вы можете использовать их и как GPIO (я точно знаю для Arduino Uno/Mega и т. д., я знаю для STM32, я был бы очень удивлен, если бы это было невозможно для Arduino Due.
Другие решения используют сдвиговые регистры, например:
- 74HC595: для добавления до 32 выходов с использованием SPI.
- 74HC565: для добавления до 32 входов с использованием SPI.
Или вы можете использовать удлинители GPIO с использованием SPI или I2C.
Да, в худшем случае я использую удлинитель GPIO MCP23S17., @Jack
Я могу себе представить, сдвиговые регистры проще (достаточно документации для Arduino Uno/Mega, вероятно, будет работать и на Due). Почему бы вам не попробовать написать напрямую на контакт, а то у вас нет под рукой Due?, @Michel Keijzers
К сожалению, у меня нет под рукой должного, я не могу найти ни одного магазина, который продает их, есть интернет-магазины, которые берут дорогую цену в 30 долларов за доставку., @Jack
Вы можете попробовать aliexpress, но тогда вам придется ждать очень долго., @Michel Keijzers
- Самый быстрый способ считывания состояния цифрового контакта в Arduino Due
- Аналоговые и цифровые акселерометры – плюсы и минусы
- Настройка порога для цифровых контактов
- Есть ли способ воспроизводить звуки с Arduino без использования звукового экрана?
- В чем разница между analogWrite и digitalWrite?
- Arduino Due vs Mega 2560
- Точность часов времени Arduino
- Что означает “LSB на градус в секунду” (LSB per degree per second)?
Что ж, с PA0 все в порядке, поскольку он не используется совместно с другими выводами. Цифровые 10 и 4 имеют общие контакты (PA29), как это работает? если записать высокий уровень в D10 и низкий уровень в D4, как это будет работать? они оба не закоротит?, @Jack
Кроме того, если я получаю доступ к контактам с помощью манипуляций с регистрами, мне все еще нужно изменять файлы вариантов? У них есть номер Arduino (69 для CANTX), поэтому я подумал, что теоретически он должен работать, просто нужно подтверждение., @Jack
D10 - это PA28, не так ли? Если в файлах вариантов указан номер, вы можете просто использовать его, как и для любого другого цифрового контакта. Если вы используете манипулирование портами, то файлы вариантов вообще не вступают в игру., @Majenko
Если вы посмотрите на ссылку в вопросе, которая находится на официальной странице Arduino, «контакт 4 подключен к PA29 и PC26» и «контакт 10 подключен к PA28 и PC29»., @Jack
Я хотел бы принять ваш комментарий как ответ, сэр. особенно эта строка «Если в файлах вариантов назначен номер, вы можете просто использовать его, как и для любого другого цифрового пин-кода», если вы можете включить его в ответ. Также ссылка на [файл варианта](https://github.com/arduino/ArduinoCore-sam/blob/master/variants/arduino_due_x/variant.h) для ленивых людей, которые могут прочитать эту тему., @Jack
@Джек Сделано и сделано, @Majenko
Большое спасибо!, @Jack
@ Джек, вот как вы можете сделать свой собственный вариант платы, ссылаясь на официальный пакет плат SAM https://arduinoprosto.ru/q/54484/adding-a-custom-board-to-the-arduino-ide/60660 №60660, @Juraj