11515
- 收藏
- 点赞
- 分享
- 举报
【已解决】3516A UART1 / RS485 只能发送,不能接收
本帖最后由 flynnjiang 于 2016-12-7 11:05 编辑
大家好,我在论坛里搜了一下,只看到有提问相关问题的,但都没有解决办法,哪位大哥了解这个的能指点一下不?
我目前做了以下尝试:
* 设置好了PIN管脚复用
* 尝试直接从3516A的管脚直接引出UART1_RX,UART1_TX,排除485芯片的RTS,CTS问题,但仍然如此
* 尝试修改UART1_CR(0x20090030)控制寄存器,从0x101改为0xF01,但总会自动变回0x101
问题主要是目前直接从3516引出UART1_RXD和UART1_TXD都这样,应该能排除是485引起的方向问题吧?。另外,UART1除了RX,TX外,还提供了RTSN和CTSN,这两个管脚我是不是要怎么处理一下?
还请大神指点一下,谢谢!
===========================================================
说明:
我没有实现半双工,因为目前我只需要用到接收模式,所以只是固定在了接收模式,可以正常接收数据。
解决步骤:
1.管脚复用配置和485芯片配置
UART1_RXD, UART1_RXD要复用成TX/RX,UART1_RTSN和CTSN我复用成了GPIO,用于配置485的方向,即485芯片的/RE和DE。
/RE是接收状态OK,DE是发送状态OK。因为我是接收模式,所以我把其都配置为低。
ps:因为我的原理图把RTSN和CTSN 都接了,所以我两个都配了。
[code]
/app/bin # cat 485.sh
#!/bin/sh
############## PIN MUTEX ###############
# 00:GPIO9_2, 01:UART1_RTSN, 10:UART3_RXD
himm 0x200f0078 0x0 # GPIO9_2
# 0:GPIO9_3, 1:UART1_RXD
himm 0x200f007c 0x1 # UART1_RXD
# 00:GPIO9_4, 01:UART1_CTSN, 10:UART3_TXD
himm 0x200f0080 0x0 # GPIO9_4
# 0:GPIO9_5, 1:UART1_TXD
himm 0x200f0084 0x1 # UART1_TXD
# GPIO CFG
himm 0x201d0400 0x017 # 配置为GPIO输出,我这里还包含了其它的GPIO,可以自己调整
# GPIO9_2/RTSN
himm 0x201d0010 0x0 # 配置为低
#himm 0x201d0010 0x4
# GPIO9_4/CTSN
himm 0x201d0040 0x0 # 也配置为低
#himm 0x201d0040 0x10
/app/bin #
[/code]
2.串口参数设置
如果你发现UART_DR寄存器里都已经有值了,但就是读不出来,这时应该是串口的参数没配好。
(其实PC端此时发送一个CTRL-D (EOT)的话,它也能read()到)。串口参数比较繁杂,我配了以下这些,
使用的是原始(RAW)模式,可参考修改。
另外,可以用stty看一下当前串口的配置信息,以及“cat /proc/tty/driver/ttyAMA”看TX/RX的变化。
[code]
/app/bin # stty -a -F /dev/ttyAMA1
speed 9600 baud;stty: /dev/ttyAMA1
line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol =;
eol2 =; swtch = ; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; flush = ^O; min = 0; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
ff0
-isig -icanon iexten -echo -echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
/app/bin #
/app/bin #
/app/bin #
/app/bin # cat /proc/tty/driver/ttyAMA
serinfo:1.0 driver revision:
0: uart:PL011 rev2 mmio:0x20080000 irq:40 tx:238321 rx:48113 RTS|CTS|DTR|DSR|CD|RI
1: uart:PL011 rev2 mmio:0x20090000 irq:41 tx:0 rx:756 RTS|DTR|DSR|CD|RI
/app/bin #
[/code]
大家好,我在论坛里搜了一下,只看到有提问相关问题的,但都没有解决办法,哪位大哥了解这个的能指点一下不?
我目前做了以下尝试:
* 设置好了PIN管脚复用
* 尝试直接从3516A的管脚直接引出UART1_RX,UART1_TX,排除485芯片的RTS,CTS问题,但仍然如此
* 尝试修改UART1_CR(0x20090030)控制寄存器,从0x101改为0xF01,但总会自动变回0x101
问题主要是目前直接从3516引出UART1_RXD和UART1_TXD都这样,应该能排除是485引起的方向问题吧?。另外,UART1除了RX,TX外,还提供了RTSN和CTSN,这两个管脚我是不是要怎么处理一下?
还请大神指点一下,谢谢!
===========================================================
说明:
我没有实现半双工,因为目前我只需要用到接收模式,所以只是固定在了接收模式,可以正常接收数据。
解决步骤:
1.管脚复用配置和485芯片配置
UART1_RXD, UART1_RXD要复用成TX/RX,UART1_RTSN和CTSN我复用成了GPIO,用于配置485的方向,即485芯片的/RE和DE。
/RE是接收状态OK,DE是发送状态OK。因为我是接收模式,所以我把其都配置为低。
ps:因为我的原理图把RTSN和CTSN 都接了,所以我两个都配了。
[code]
/app/bin # cat 485.sh
#!/bin/sh
############## PIN MUTEX ###############
# 00:GPIO9_2, 01:UART1_RTSN, 10:UART3_RXD
himm 0x200f0078 0x0 # GPIO9_2
# 0:GPIO9_3, 1:UART1_RXD
himm 0x200f007c 0x1 # UART1_RXD
# 00:GPIO9_4, 01:UART1_CTSN, 10:UART3_TXD
himm 0x200f0080 0x0 # GPIO9_4
# 0:GPIO9_5, 1:UART1_TXD
himm 0x200f0084 0x1 # UART1_TXD
# GPIO CFG
himm 0x201d0400 0x017 # 配置为GPIO输出,我这里还包含了其它的GPIO,可以自己调整
# GPIO9_2/RTSN
himm 0x201d0010 0x0 # 配置为低
#himm 0x201d0010 0x4
# GPIO9_4/CTSN
himm 0x201d0040 0x0 # 也配置为低
#himm 0x201d0040 0x10
/app/bin #
[/code]
2.串口参数设置
如果你发现UART_DR寄存器里都已经有值了,但就是读不出来,这时应该是串口的参数没配好。
(其实PC端此时发送一个CTRL-D (EOT)的话,它也能read()到)。串口参数比较繁杂,我配了以下这些,
使用的是原始(RAW)模式,可参考修改。
另外,可以用stty看一下当前串口的配置信息,以及“cat /proc/tty/driver/ttyAMA”看TX/RX的变化。
[code]
/app/bin # stty -a -F /dev/ttyAMA1
speed 9600 baud;stty: /dev/ttyAMA1
line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol =
eol2 =
werase = ^W; lnext = ^V; flush = ^O; min = 0; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl -ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
-opost -olcuc -ocrnl -onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0
ff0
-isig -icanon iexten -echo -echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
/app/bin #
/app/bin #
/app/bin #
/app/bin # cat /proc/tty/driver/ttyAMA
serinfo:1.0 driver revision:
0: uart:PL011 rev2 mmio:0x20080000 irq:40 tx:238321 rx:48113 RTS|CTS|DTR|DSR|CD|RI
1: uart:PL011 rev2 mmio:0x20090000 irq:41 tx:0 rx:756 RTS|DTR|DSR|CD|RI
/app/bin #
[/code]
我来回答
回答18个
时间排序
认可量排序
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
认可0
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
相关问答
-
2018-06-15 09:49:05
-
2016-11-14 10:34:44
-
2017-09-08 10:47:34
-
52018-08-06 18:40:40
-
2021-06-14 21:32:16
-
2016-03-25 01:48:19
-
2017-01-12 13:54:49
-
2015-07-07 17:28:49
-
2008-11-19 19:04:12
-
2015-09-21 15:45:59
-
2016-04-27 18:29:07
-
2019-01-02 09:53:13
-
2016-11-08 09:10:04
-
2023-10-18 09:55:52
-
2018-12-10 23:43:56
-
2016-07-22 17:03:23
-
2018-06-25 22:00:13
-
2016-04-08 16:06:29
-
2018-12-10 16:34:16
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认