TI论坛
直播中

李刚

7年用户 270经验值
私信 关注

请问AM335x处理器运行linux系统时串口是如何支持非标波特率通信的?

本帖最后由 一只耳朵怪 于 2018-6-5 16:50 编辑

我们使用的是AM3352处理器,运行linux系统,使用ti官方SDK6.0开发,相应linux系统内核版本为:linux-3.2.0-psp04.06.00.11。
系统调试串口使用的是uart1,现在需要使用uart2作为通信串口与一个470MHz的无线模块通信,需要波特率为14400才能正常通信。
百度了一种方法,通过应用层修改分频实现设定任意波特率:
http://blog.chinaunix.net/uid-9543173-id-1988980.html
但实际测试时发现无法使用,这种方法最终会调用到一个omap-serial.c里面的serial_omap_verify_port函数,异常终止,但该函数显示禁止内核修改串口参数的提示:
static int serial_omap_verify_port(struct uart_port *port, struct serial_struct *ser)
[
/* we don't want the core code to modify any port params */
dev_dbg(port->dev, "serial_omap_verify_port+n");
return -EINVAL;
]
即便我们将函数调用过程中一些异常信息屏蔽,最终执行完成后,也提示分频和波特率修改成功,但是最终仍然无法按照设定的波特率和外设正常通信。
难道是AM335x不支持串口非标波特率?请问哪位有在AM335x下设定串口非标波特率的方法,非常感谢。

回帖(9)

罗兰君

2018-6-4 00:44:04
从TRM的table 19-6看到,14400这个波特率是支持的啊,修改下底层驱动的寄存器配置就可以了
举报

李刚

2018-6-4 00:52:53
引用: 344868615qq 发表于 2018-6-4 00:44
从TRM的table 19-6看到,14400这个波特率是支持的啊,修改下底层驱动的寄存器配置就可以了

我们先修改底层代码试试,但还是想能用内核已经提供的方法,在应用层解决这个问题。
举报

朱志兴

2018-6-4 01:06:58
引用: 344868615qq 发表于 2018-6-4 00:44
从TRM的table 19-6看到,14400这个波特率是支持的啊,修改下底层驱动的寄存器配置就可以了

請問UART2 底層驅動暫存器是那些檔案??
在linux-3.2.0-psp04.06.00.11/ 下的哪一個目錄檔案???
举报

罗兰君

2018-6-4 01:21:46
引用: 分会看见我呢看 发表于 2018-6-4 01:06
請問UART2 底層驅動暫存器是那些檔案??
在linux-3.2.0-psp04.06.00.11/ 下的哪一個目錄檔案???

在应用层设置termios这个变量的波特率属性,起作用么?
举报

更多回帖

发帖
×
20
完善资料,
赚取积分