Переключение вывода GPIO на Raspberry Pi после серийной скорости Putchar () - PullRequest
0 голосов
/ 15 февраля 2019

Я пытаюсь поговорить с кодировщиком из моего Raspberry Pi 3B +, используя скорость передачи 2000000 бод. Сигнал, который выходит из Pi, преобразуется из сигнала RS-232 в сигнал RS-485 с использованием микросхемы, котораянужен переключатель выбора микросхемы, чтобы разрешить связь тем или иным способом.Начиная с RS-232 -> RS-485, линия должна быть высокой, поэтому я установил ее на высоком уровне и отправил сообщение, и это прекрасно работает.Проблема заключается в том, что кодер отвечает в ~ 4us, и кажется, что команда записи занимает слишком много времени, чтобы позволить следующей цифровой записи переключить микросхему на низкий уровень, чтобы позволить ответу от RS-485 -> RS-232 лишь немногонемного, поэтому мы теряем первые несколько бит. Мне интересно, есть ли способ ускорить запись или переключение вывода GPIO. Основываясь на тестах только вывода GPIO, я могу переключить его примерно на .1us, поэтому я считаю, чтоэто команда записи.

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

Для следующего изображенияЖелтая линия - это линия передачи и приема, и все в шестнадцатеричном формате.0x54 - это команда, которую я посылаю, а 0xD7 и 0x3A - ответы.Как вы можете видеть, выбор чипа становится низким в течение первых нескольких битов ответа, что приводит к потере данных.

int main(int argc, char** argv) {
    wiringPiSetup();
    pinMode(21, OUTPUT);
    int sfd = serialOpen("/dev/serial0", 2000000);
    digitalWrite(21, 1);
    serialPutchar(sfd, 0x54);
    digitalWrite(21, 0);
    return 0;
}
...