RS485问题 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3510|回复: 1
打印 上一主题 下一主题

RS485问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-10-8 12:44:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

, F8 Z% r! W& R6 O+ B1 N# B$ s+ o您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
$ |, l" N% z: @3 A( J

$ r$ K. e" g. I. M; N" h我的qt程序如下:( @5 y5 B4 \; c) B3 {4 M
   struct termios setting;
* v& s% v! i+ W" L4 T7 A# g% Q    fd = open("/dev/ttyS1", O_RDWR);
6 X2 a  `% @- H$ M% ?# u    if (fd == -1) {
! Q; @% _( |. B3 e% H        LOG_INFO("open /dev/ttyS  failure ...");
7 ~% t" a* p, k* U5 M" h' k) n        return ;
0 Z' q& }! l" {    }
. H% Z, N# [; T. D- |! |    LOG_INFO("open /dev/ttyS1  success ...");
3 v' {  ]2 d+ ]9 i    tcgetattr(fd, &setting);
! ?! c( Z$ T; F% S- I+ K0 b1 _    speed_t speed;
& Q! i6 Y6 s0 D8 Y" L8 ?% {    speed = btr;" s9 R# P$ d. e% D" p
) k: G+ O8 B2 V4 \
    cfsetispeed(&setting, speed);/ k* P# M8 q& [9 D* l* i
    cfsetospeed(&setting, speed);
6 s1 h! m- T& k3 d, ]    cfmakeraw(&setting);4 q) I- I& e! k# K, |
    setting .c_cflag |= CS8;. _) [3 H4 [* w( a; b
    setting.c_cflag &= ~PARENB;
) \2 B$ J: F, ?) Z& v    setting.c_iflag &= ~INPCK;
- T5 u) c- H- p1 a2 `) }    setting.c_cflag &= ~CSTOPB;
3 p* O1 c& W) T9 J1 X& c9 h3 b    tcflush(fd, TCIFLUSH);
- g7 L+ U5 U: p" u    setting.c_cc[VTIME] = 0;2 [+ z; k; ~* C  z4 ?. }  [4 `) a
    setting.c_cc[VMIN] = 0;# p2 q0 K& d9 i# i, i
    tcsetattr(fd, TCSANOW, &setting);
' _) ~; e, G; ^# I. r& I
4 u1 k( F# _. U' W8 K    int ret;
/ F% ~4 [! ~% y+ R+ ?: |% t3 F9 \    char *buff = {"hello,485write ok"} ;
3 U/ L, s3 I) v! ^' h4 V    ret = write(fd, buff, 17);4 i7 D/ o' O; I3 P# h

& ~! z7 f4 M" n7 x: b; J    char buff1[256] ;
4 Z! |: R% X# v) D+ C8 `1 X    while(1){  H8 e9 D0 d8 F3 d, d

; g1 u' @& Z3 W* J7 l; D& c          ret = read(fd, buff1, 255);5 D0 \0 Q8 _' R9 e. h
          if(ret > 0){
9 Y1 A& T2 _. b1 T/ |
& m; y, o2 i; j9 [- P                     write(fd, buff1, 5);8 O6 Q. }: b, G

! z4 p6 w" U5 d, W$ {9 {                      LOG_INFO("rs485 receiver ret = %d " , ret);
& ^' K& f  ?% H5 c: g. d5 }4 ?, C1 A) O
          }
8 X$ |9 V- f( z7 C- |, ~+ J) u
: o6 Y# Y' q5 y    }& G) x9 h% l* w5 o2 Z, J
" ?7 k* A1 B1 }+ c+ S, z; r
   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?
) }) x* R# t; s$ j2 ^
3 b0 v) S0 m* ^$ [

$ i1 l* w, e, e# D/ Q' _
& [5 k% k  B+ @! Y$ A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

积分
1246
沙发
发表于 2016-10-8 13:21:40 | 只看该作者
串口助手发够255个字节了吗?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-8-3 15:13 , Processed in 0.034779 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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