Softwareserial

Библиотека для программной эмуляции функций UART на любых доступных цифровых выводах ввода-вывода. Используйте этот тег для вопросов, касающихся SoftwareSerial.


Введение

SoftwareSerial использует прерывания и тщательно синхронизированные последовательности для обеспечения последовательной связи aynsc на портах, отличных от поддерживаемых аппаратным последовательным портом (класс HardwareSerial).

Вы не должны не использовать SoftwareSerial, если HardwareSerial доступен на тех же контактах. Аппаратный COM порт более надежен и может отправлять и получать в фоновом режиме. SoftwareSerial не может.


Поддерживаемые пины

На Arduino на базе Atmega328P (например, Uno, Pro, Nano, Mini) вы можете использовать SoftwareSerial для любых контактов.

На Mega2560 вы можете использовать его только для приема контактов 10, 11, 12, 13, 14, 15, 50, 51, 52, 53, A8 (62), A9 (63). ), A10 (64), A11 (65), A12 (66), A13 (67), A14 (68), A15 (69).

На Leonardo и Micro вы можете использовать его только для приема контактов 8, 9, 10, 11, 14 (MISO), 15 (SCK), 16 (MOSI).

Это связано с тем, что SoftwareSerial требует прерывания по смене контакта для обнаружения приема нового байта, а прерывания по смене контакта поддерживаются только на контактах, упомянутых выше. Вам не нужны прерывания по смене контакта для передачи, поэтому вы можете выбрать любой контакт для передачи.


Ограничения

  • По причинам синхронизации SoftwareSerial отключает прерывания после начала приема байта (до тех пор, пока он не будет получен полностью). Он также отключает прерывания при отправке.

    Поэтому вы не можете одновременно отправлять и получать с помощью SoftwareSerial.

  • SoftwareSerial работает только с 8-битными байтами. HardwareSerial может читать и записывать от 5 до 9 бит.

  • SoftwareSerial только читает/записывает без контроля четности и с одним стоповым битом. HardwareSerial может записывать без четности/четности/нечетности и использовать один или два стоповых бита.

  • Поскольку прерывания отключены во время отправки и получения, вы не можете выполнять столько фоновой обработки при отправке/получении.


Улучшения

  • SoftwareSerial имеет режим "инвертированной логики" в конструкторе, который позволяет читать/записывать с инвертированной нормальной логикой. То есть +5 В – это 0 бит, а 0 В – 1 бит.

Полезность

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


Альтернативы

  • На Mega2560 у вас есть четыре аппаратных последовательных порта, поэтому вы можете использовать их вместо SoftwareSerial.

  • Есть еще одна библиотека: AltSoftSerial Library. Это снимает некоторые из указанных выше ограничений и добавляет некоторые собственные.


Ссылка

  • Библиотека SoftwareSerial

Вопросы, связанные с [softwareserial]: