1

我正在尝试使用 2000000 的波特率与我的 Raspberry Pi 3B+ 上的编码器通信。来自 Pi 的信号正在使用需要芯片的芯片从 RS-232 转换为 RS-485 信号选择切换以允许以一种或另一种方式进行通信。从 RS-232 -> rs-485 线路需要很高,所以我将其设置为高并发送通信,效果很好。问题是编码器在约 4us 内响应,并且似乎写入命令花费的时间太长,无法允许随后的数字写入将芯片选择切换为低电平以允许 RS-485 -> RS-232 的响应只有一点点位,所以我们正在丢失前几位。我想知道是否有任何方法可以加快 GPIO 引脚的写入或切换速度。根据对 GPIO 引脚的测试,我可以在 0.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;
}
4

0 回答 0