argo 发表于 2015-8-19 11:08:32

求助:OK6410串口CTS/RTS的操作问题

linux 内核版本: 3.0.1

从原理图可看出OK6410的第一、二个串口提供了CTS/RTS脚位设置。

自己在PC linux上写了一个测试程序,先在PC上确认可以设置RTS与读取CTS后,将程序移植到OK6410上操作串口設/dev/ttySAC1,串口可以正确收发数据,但手动去设置RTS(量测RTS的硬件脚位)或读取CTS(一直读到0 / low)皆无反映。

同上述,以telnet联机,操作串口 /dev/ttySAC0,CTS/RTS的设置/读取也一样无效。

请问是我的CTS/RTS操作有问题,还是串口驱动对CTS/RTS的操作无效?

串口的RTS/CTS操作如下:
// 设置RTS信号为低:
void set_rts_high(int fd)
{
    int status;

    ioctl(fd, TIOCMGET, &status);
    status &= ~TIOCM_RTS;
    ioctl(fd, TIOCMSET, &status);
}

//设置RTS信号为高
void set_rts_low(int fd)
{
    int status;

    ioctl(fd, TIOCMGET, &status);
    status |= TIOCM_RTS;
    ioctl(fd, TIOCMSET, &status);
}

//CTS信号获取;
int get_cts(int fd)
{
    int status;

    ioctl(fd, TIOCMGET, &status);
    if (status & TIOCM_CTS)
      return 1;
   
    return 0;
}
页: [1]
查看完整版本: 求助:OK6410串口CTS/RTS的操作问题