天嵌 ARM开发社区

 找回密码
 注册
查看: 3747|回复: 14

打开TQ2440 UART1的RTS1和CTS1,急用,谢谢

[复制链接]
chenchao2886 发表于 2012-2-19 10:16:55 | 显示全部楼层 |阅读模式
由于使用TQ2440和CC2530通过串口对接,需要使用硬流控,UART0虽然有硬件流控,但是接口已用于调试,UART1也支持硬流控,所以想打开UART1的硬流控,我也知道使用UART1之后UART2就不能用了,请教打开UART1中硬流控的详细方法。最好说一下详细修改驱动的方法,我对驱动不太熟悉。。谢谢啦。。急用。。
 楼主| chenchao2886 发表于 2012-2-19 11:21:27 | 显示全部楼层
使用的是天嵌Linux 2.6.30.4
亚瑟王 发表于 2012-2-20 10:33:28 | 显示全部楼层
亲,在TQ2440的内核的串口驱动那个地方,将串口2(也就是cts1和rts1)所在的脚的功能设置为cts和rts功能,然后再屏蔽掉对串口2的初始化,就行了。这个步骤已经验证过来。
 楼主| chenchao2886 发表于 2012-2-21 20:33:12 | 显示全部楼层
亚瑟王 发表于 2012-2-20 10:33
亲,在TQ2440的内核的串口驱动那个地方,将串口2(也就是cts1和rts1)所在的脚的功能设置为cts和rts功能,然 ...

谢谢您的回复!
是在samsung.c文件中:
将:
if (port->line == 2) {
            s3c2410_gpio_cfgpin(S3C2410_GPH6, S3C2410_GPH6_TXD2);
            s3c2410_gpio_pullup(S3C2410_GPH6, 1);
            s3c2410_gpio_cfgpin(S3C2410_GPH7, S3C2410_GPH7_RXD2);
            s3c2410_gpio_pullup(S3C2410_GPH7, 1);
        }
改为:
if (port->line == 1) {
            s3c2410_gpio_cfgpin(S3C2410_GPH6,  S3C2410_GPH6_nRTS1);
            s3c2410_gpio_pullup(S3C2410_GPH6, 1);
            s3c2410_gpio_cfgpin(S3C2410_GPH7, S3C2410_GPH7_nCTS1);
            s3c2410_gpio_pullup(S3C2410_GPH7, 1);
        }
吗?
还有哪里要改啊?屏蔽在哪里修改?我对驱动也不太熟,可否说的详细一点??谢谢了。。
另外,改完了后是自动硬流控还是软件控制的硬流控?希望您能回答!!谢谢。。

亚瑟王 发表于 2012-2-22 09:49:01 | 显示全部楼层
亲,是驱动自动控制流控的。我用来拨号时就是自动控制流控的。
 楼主| chenchao2886 发表于 2012-2-24 14:42:25 | 显示全部楼层
亚瑟王 发表于 2012-2-22 09:49
亲,是驱动自动控制流控的。我用来拨号时就是自动控制流控的。

谢谢了。。是自动硬流控啊。。那就不用在应用软件上去控制RTS和CTS状态了。。既然您做过,怎么不写一个较为详细的流程说明呢?希望管理员可以抽一部分宝贵的时间写一个详细教程,我想应该还是有不少人需要的,尤其方便像我这样的小白级的初学者。。另外,我上边修改的对不对?还有哪里要修改?希望您也能回答一下啊。。谢谢了。。
 楼主| chenchao2886 发表于 2012-2-25 22:52:05 | 显示全部楼层
亚瑟王 发表于 2012-2-22 09:49
亲,是驱动自动控制流控的。我用来拨号时就是自动控制流控的。

我自己设置了,除了上面我写的那个修改外,还将CONFIG_SERIAL_SAMSUNG_UARTS=3改为CONFIG_SERIAL_SAMSUNG_UARTS=2,并且将:static struct s3c2410_uartcfg tq2440_uartcfgs[] __initdata = {
        [0] = {
                .hwport             = 0,
                .flags             = 0,
                .ucon             = 0x3c5,
                .ulcon             = 0x03,
                .ufcon             = 0x51,
        },
        [1] = {
                .hwport             = 1,
                .flags             = 0,
                .ucon             = 0x3c5,
                .ulcon             = 0x03,
                .ufcon             = 0x51,
        },
        [2] = {
                .hwport             = 2,
                .flags             = 0,
                .ucon             = 0x3c5,
                .ulcon             = 0x03,
                .ufcon             = 0x51,
        }
};
修改为:
static struct s3c2410_uartcfg tq2440_uartcfgs[] __initdata = {
        [0] = {
                .hwport             = 0,
                .flags             = 0,
                .ucon             = 0x3c5,
                .ulcon             = 0x03,
                .ufcon             = 0x51,
        },
        [1] = {
                .hwport             = 1,
                .flags             = 0,
                .ucon             = 0x3c5,
                .ulcon             = 0x03,
                .ufcon             = 0x51,
        }
};

现在在/dev目录下只有tq2440_serial0和tq2440_serial1两个串口了。我想测试一下我修改的结果对不对,请问该如何测试?需要自己使用MAX232做一个电平转换的模块和电脑的RS232相连,进行测试吗?谢谢。。
亚瑟王 发表于 2012-2-27 10:44:56 | 显示全部楼层
亲,毕竟你这样使用的比较少,所以没有专门做教程。你现在解决了,解决过程不就是一个教程吗?
亚瑟王 发表于 2012-2-27 10:46:07 | 显示全部楼层
亲,测试5线串口可以在启动PC串口软件的时候加上流控的设置,然后进行测试。这样做我测试过是OK的。你测试好了,记得结贴。
 楼主| chenchao2886 发表于 2012-2-29 17:56:41 | 显示全部楼层
亚瑟王 发表于 2012-2-27 10:46
亲,测试5线串口可以在启动PC串口软件的时候加上流控的设置,然后进行测试。这样做我测试过是OK的。你测试好 ...

我在PC上使用secureCRT和USB转串口的设备通过电平转换模块和串口扩展口中的串口1相连,结果,在没有开启硬流控的时候,二者可以相互收发数据,SecureCRT打开硬流控之后,还是可以收到测试程序发送的HELLO,TQ2440!,但无法SecureCRT无法向测试程序发送数据了。。请问这可能是什么原因?串口测试程序不支持硬流控测试?我修改的驱动没有成功?还有,请问哪里可以下到串口测试程序的源代码啊?谢谢了。。
 楼主| chenchao2886 发表于 2012-2-29 23:29:03 | 显示全部楼层
补充:在SecureCRT中打开硬流控,在USB转串口的设置中也打开了硬流控,二者速度均为115200,必须把CTS和RTS连接的两根线断开才可以从SecureCRT向测试程序发送数据,否则数据无法输入。即使SecureCRT中打开了硬流控也必须这样做。。这个原因是什么?很纳闷啊。。您以前做成功过,以您的经验,给些建议吧。。谢谢。。
 楼主| chenchao2886 发表于 2012-3-1 21:22:10 | 显示全部楼层
亚瑟王 发表于 2012-2-27 10:46
亲,测试5线串口可以在启动PC串口软件的时候加上流控的设置,然后进行测试。这样做我测试过是OK的。你测试好 ...

今天我咨询客服,客服说TQ2440上的测试程序不支持硬流控,我今天换了QT4.5的文件系统,好像这次终端(SecureCRT)打开和关闭硬件流控制没什么影响了。。打开和关闭均可以通信,越搞越糊涂了。。您那里有没有TQ2440测试串口的源程序,在论坛上可以发一下吗?修改一下参数设置看能否使用硬流控。。客服说原来的不支持硬流控,给了一个6410的测试程序,在2440上没法用,分辨率不对,而且按钮上的字根本无法显示。。。都不知道怎么操作,或者按那个按钮,而且由于分辨率不对,操作界面也显示不全。。无法使用啊。。麻烦您了,如果有TQ2440上测试的源代码,请发到论坛,或者发送到565443133 at qq.com的电子邮箱。。谢谢。。
亚瑟王 发表于 2012-3-2 09:50:59 | 显示全部楼层
亲,客服给你发的6410的那个测试程序是Qt的吧,串口测试程序是和硬件无关的,6410上面的是串口,2440上也是串口。可能那个程序和你的LCD尺寸不匹配吧。6410那个程序是以4.3寸屏为基础开发的。你现在要做自己的程序,你可以从客服发给你的程序源码里面提取串口初始化部分的代码。
这个帖子里面有串口程序的源码的:http://www.armbbs.net/forum.php?mod=viewthread&tid=9731

手指恋上烟 发表于 2012-9-23 20:44:58 | 显示全部楼层
这个帖子的说的硬件流控是自动流控也就是不需要我们软件中拉高或降低RTS信号,但是我的软件需要将RTS一直拉低,这怎么办?
亚瑟王 发表于 2012-9-24 11:09:34 | 显示全部楼层
手指恋上烟 发表于 2012-9-23 20:44
这个帖子的说的硬件流控是自动流控也就是不需要我们软件中拉高或降低RTS信号,但是我的软件需要将RTS一直拉 ...

硬件上面拉底就行了啊。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-7 06:47 , Processed in 1.035196 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表