完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
本帖最后由 一只耳朵怪 于 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个回答
|
|
|
从TRM的table 19-6看到,14400这个波特率是支持的啊,修改下底层驱动的寄存器配置就可以了
|
|
|
|
|
|
我们先修改底层代码试试,但还是想能用内核已经提供的方法,在应用层解决这个问题。 |
|
|
|
|
|
請問UART2 底層驅動暫存器是那些檔案?? 在linux-3.2.0-psp04.06.00.11/ 下的哪一個目錄檔案??? |
|
|
|
|
|
在应用层设置termios这个变量的波特率属性,起作用么? |
|
|
|
|
|
因为是非标准的波特率,所以用termios这个变量的cfsetispeed()与cfsetospeed()并没有B14400这个选项。 |
|
|
|
|
taitoukantian 发表于 2018-6-4 01:33 那你直接修改驱动层试试,driver/tty/serials/omap-serials.c |
|
|
|
|
|
我是在Application 設定為38400,然後再driver 將UART2 return port->uartclk/(baud * divisor); 改成return 8 會變成 38400 -> 375000 (將38400替換成375K,測試OK) 你應該可以改成 return 208,這樣就會變成 48000000/16/208=14400 ======================== Application cfsetispeed(&Opt, B38400); cfsetospeed(&Opt, B38400); driver/tty/serials/omap-serials.c static unsigned int serial_omap_get_divisor(struct uart_port *port, unsigned int baud) [ unsigned int divisor; if (baud > OMAP_MODE13X_SPEED && baud != 3000000) divisor = 13; else divisor = 16; if(port->line==2)//UART2 [ //port->uartclk => 48000000 //baud => 38400 (AP Set 38400) //divisor => 16 //port->uartclk/(baud * divisor) => 78 (AP Set 38400) //48000000/16/8 = 375000 printk(KERN_ERR "UART2 38400 -> 375000 rn"); return 8; ] else return port->uartclk/(baud * divisor); ] |
|
|
|
|
分会看见我呢看 发表于 2018-6-4 01:54 jjew, 你的办法应该是可行的,实际可以测一下 |
|
|
|
|
分会看见我呢看 发表于 2018-6-4 01:54 谢谢jjew,你的方法可以工作。 现在也只能这样做,看来是必须要修改底层代码了。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
545 浏览 0 评论
1609 浏览 0 评论
2045 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1507 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1331 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1756浏览 29评论
2781浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1722浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1644浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 15:59 , Processed in 0.995571 second(s), Total 89, Slave 72 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2238