6

大家,我正在使用 Ubuntu 下的高速 RS422 pci 板(OXPCIe958)。该设备可以以高达 15Mbps 的速度工作。我需要以 10Mbps 的速度工作,但我注意到在 Linux 下,如果我们使用 termois,可以指定的最大速度为 B4000000(4 Mbps)。

有没有办法在linux中指定自定义波特率?我尝试更改 termois.h 中的值:

#define  B1152000 0010011
#define  B1500000 0010012
#define  B2000000 0010013
#define  B2500000 0010014
#define  B3000000 0010015
#define  B3500000 0010016
#define  B4000000 0010017 --> by default this is the last value

#define  B4500000 0010018   --> Added
#define  B5000000 0010020   --> Added
//#define __MAX_BAUD B4000000 --> Default value
#define __MAX_BAUD B10000000

但改变不起作用。我无法理解分配给 BXXXXXX 的值的含义!!

该设备在 linux 上原生运行,无需指定驱动程序。查看设备的数据表,我看到要指定目标波特率,我们必须设置一些寄存器来更改预分频器、锁存器除数和采样时钟。

根据数据表,波特率由下式给出:

波特率 = inputclock/(sampleClock*divisor*prescaler)

有没有办法在linux下设置这个寄存器?驱动程序在 8250.c 和 8250_pci.c

提前致谢

4

1 回答 1

6

该页面有一个 Linux 内核补丁,它增加了寄存器的直接暴露,因此ioctl()可用于对自定义波特率进行编程。虽然它很旧,但可能对你有用。

于 2013-06-26T13:53:52.993 回答