主题 : Tiny2451 485驱动问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 83908
精华: 0
发帖: 23
金钱: 120 两
威望: 24 点
综合积分: 46 分
注册时间: 2012-12-14
最后登录: 2014-06-26
楼主  发表于: 2014-04-09 14:53

 Tiny2451 485驱动问题

最近公司产品使用Tiny2451平台,设备需要通过485控制从机。所以需要在原有的UART驱动中加上485芯片的方向管教控制,现在的硬件设计使用了GPE11~GPE13作为UART0~UART2对应的485方向管教控制IO。
        实现方式参考:友善6410开发板RS232改RS485(内核驱动修改)
        现在的问题是,驱动已经可以正确的设置GPE11~GPE13的配置值和数据值,能发送数据,但不能接收数据,然后用万用表和逻辑分析检查GPE11~GPE13的电平,一直都是高电平(值1)。下面是驱动的调试信息,端口值和配置寄存器的值,配合S3C2451芯片的数据手册来看,配置和值都是正确的,但IO口上的电平就是没有变化。
     [  539.475000] begin uart 1, begin start_tx 140, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c5, GPESEL 0, GPEUDP 55400000
[  539.475000] uart 1, start_tx 140, cfg 4294967281, GPECON a56aaaaa, value 1, GPEDAT d7c3, GPESEL 0, GPEUDP 55400000
[  539.480000] uart 1, stop_tx 140, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c3, GPESEL 0, GPEUDP 55400000
[  539.495000] begin uart 2, begin start_tx 141, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c5, GPESEL 0, GPEUDP 55400000
[  539.495000] uart 2, start_tx 141, cfg 4294967281, GPECON a56aaaaa, value 1, GPEDAT e7c3, GPESEL 0, GPEUDP 55400000
[  539.500000] uart 2, stop_tx 141, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c3, GPESEL 0, GPEUDP 55400000
[  539.510000] begin uart 3, begin start_tx 333, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c1, GPESEL 0, GPEUDP 55400000
[  539.510000] uart 3, start_tx 333, cfg 4294967281, GPECON a56aaaaa, value 1, GPEDAT c7c5, GPESEL 0, GPEUDP 55400000
[  539.515000] uart 3, stop_tx 333, cfg 4294967281, GPECON a56aaaaa, value 0, GPEDAT c7c3, GPESEL 0, GPEUDP 55400000

另外,一开始怀疑是SPI驱动的干扰,后面把SPI驱动也禁止了,结果一样。
请各路高手指点指点,已经折腾两天了,实在没有法子了。
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
1楼  发表于: 2014-04-09 15:14
可以使用TinyADK底板,已经带了485接口
下载Tiny6410光盘有原理图可以参考
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 83908
精华: 0
发帖: 23
金钱: 120 两
威望: 24 点
综合积分: 46 分
注册时间: 2012-12-14
最后登录: 2014-06-26
2楼  发表于: 2014-04-09 15:19

 回 1楼(mindee) 的帖子

硬件原理应该没问题的,之前已经用2440做过485的应用,都没问题。由于2440的停产和UART数量不够,新的产品就选用了2451。
问题可以总结为:寄存器的值与引脚电平不一致。

PS:我把GPE11~GPE13端口放到另外一个驱动(一个简单的IO驱动),上层软件调用ioctl是可以正常控制引脚的电平高低变化的。
自由,自强,共享,共创。
级别: 论坛版主
UID: 12573
精华: 27
发帖: 8838
金钱: 46490 两
威望: 9298 点
综合积分: 18216 分
注册时间: 2010-01-09
最后登录: 2019-07-16
3楼  发表于: 2014-04-09 20:55
我们的485电路是自动控制的,若需GPIO控制请自行研究试验
新手如何向我们反馈有效的信息,以便解决问题,见此贴:
http://www.arm9home.net/read.php?tid-14431.html

[注]: 此处签名链接仅为指引方向,而非解答问题本身.
级别: 新手上路
UID: 83908
精华: 0
发帖: 23
金钱: 120 两
威望: 24 点
综合积分: 46 分
注册时间: 2012-12-14
最后登录: 2014-06-26
4楼  发表于: 2014-04-10 10:39

 回 3楼(mindee) 的帖子

请问Tiny2451有Linux2.6版本吗
Cs1Z1
级别: 新手上路
UID: 61674
精华: 0
发帖: 28
金钱: 140 两
威望: 28 点
综合积分: 56 分
注册时间: 2012-01-04
最后登录: 2016-07-25
5楼  发表于: 2014-10-24 14:20
请问大家我怎么知道Tiny6410在RS485驱动的移植做了哪些修改,我如何学习比较好,有没有相关的参考资料?谢谢!