Почему rx никогда не получает данные из loopback tx по UART? - PullRequest
0 голосов
/ 12 мая 2019

Я опубликовал этот вопрос некоторое время назад, но так и не смог решить проблему. У меня система , работающая под управлением Linux, я подключил rx к tx (loopback) из UART1 и выполнил этот код:

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>

int main(void) {
    int iFd = open("/dev/ttyTHS0", O_RDWR);
    if (iFd < 0) {
        fprintf(stdout, "Error when opening file.\n");
        return -1;
    }

    while (1) {
        if (write(iFd, "A", 1) == -1) {
            fprintf(stdout, "Failed to write\n");
            return -1;
        }

        char buff[1] = {
            0
        };

        if (read(iFd, buff, sizeof(buff)) < 0) {
            fprintf(stdout, "Failed to read.\n");
            return -1;
        }

        fprintf(stdout, "read: %s\n", buff);

    }
    close(iFd);

    return 0;
}

Дело в том, что он не получает никаких данных. Код просто блокируется на read. Я вижу данные, передаваемые по линии tx, когда смотрю на нее с помощью осциллографа, но rx ничего не получает (поэтому он не имеет ничего общего с очисткой буфера). Я также попытался разделить этот код на 2 процесса: один процесс для передачи и другой для приема, но это тоже не работает.

Я пытался запустить два разных процесса, чтобы попытаться отследить проблему, но это не дало мне никаких дополнительных подсказок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...