在达到serialPutchar()速度之后,在Raspberry Pi上切换GPIO引脚

时间:2019-02-15 13:43:52

标签: c serial-port raspberry-pi3 wiringpi

我正在尝试使用2000000的波特率与我的Raspberry Pi 3B +的编码器进行通信。使用该芯片将来自Pi的信号从RS-232转换为RS-485信号。需要切换片选以允许一种或另一种方式的通信。从RS-232-> rs-485,线路需要设置为高电平,因此我将其设置为高电平并发送通信,并且工作正常。问题是编码器的响应时间约为4us,似乎写命令花费的时间太长,以至于随后的数字写操作无法将芯片选择切换为低电平,从而使RS-485-> RS-232的响应仅一点点位,因此我们丢失了前几位。 我想知道是否有任何方法可以加快GPIO引脚的写入或切换速度。基于仅GPIO引脚的测试,我可以将其切换到.1us左右,所以这就是为什么相信这是写命令。

我试图删除正在使用的库(即connectionPi),并自行创建串行端口以达到相同的最终结果。

对于下图,黄线是发送和接收线,所有内容均为十六进制。 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;
}

0 个答案:

没有答案