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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

RS485问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

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

9 `( E  k6 T) N/ F( G" ]您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。* C4 n) H- s. ~1 n! @/ ^6 V# j  S
3 R$ K' Z* T* r1 w# L
我的qt程序如下:
7 Q% X( b$ ]7 ]" W0 V$ ?' Q+ x   struct termios setting;1 c* a3 o0 y3 b
    fd = open("/dev/ttyS1", O_RDWR);
: ?  u7 e7 V: |: ?    if (fd == -1) {, j0 y+ {; O  G
        LOG_INFO("open /dev/ttyS  failure ...");  }: `. ]- O& C5 u. }# Y
        return ;
5 d) h, u* V3 d& {# h$ b    }& t% E3 m" N; _  A( ?
    LOG_INFO("open /dev/ttyS1  success ...");
6 T7 o) V4 q+ y5 k, g+ L$ }    tcgetattr(fd, &setting);0 p6 x% O2 |+ h& X8 _4 u
    speed_t speed;
. w3 o6 ~- y3 w& i5 R8 f    speed = btr;6 t/ B! G6 X3 T
/ O+ h1 N, Q: Q7 @. ?/ P
    cfsetispeed(&setting, speed);
1 q0 D( Y8 k( ]' ]2 I/ z    cfsetospeed(&setting, speed);
+ m: n+ U2 m1 Q8 Z+ x# v# J    cfmakeraw(&setting);
2 f! t* M, O3 |    setting .c_cflag |= CS8;
7 C9 G3 U4 U' A/ s; R    setting.c_cflag &= ~PARENB;/ M5 F9 w; _5 ?% E
    setting.c_iflag &= ~INPCK;
8 Q% K& |2 U0 V3 d    setting.c_cflag &= ~CSTOPB;# R$ R% H/ h% |
    tcflush(fd, TCIFLUSH);
$ D6 j- U' Z& i    setting.c_cc[VTIME] = 0;
/ L& {( }+ s" X  b    setting.c_cc[VMIN] = 0;; @/ \0 y2 |2 y# P4 L
    tcsetattr(fd, TCSANOW, &setting);
% v' X2 u! H: D4 N  ^& `' t" e
9 n5 Y* J% ^; ?+ ^' o    int ret;1 u. T* j% i$ i, b7 r+ R
    char *buff = {"hello,485write ok"} ;
2 [5 k1 C. I, |( F& O* b. k% g) ^, S    ret = write(fd, buff, 17);
+ A* M  U$ T* F2 s; C4 U0 J9 E- g; G% `+ R7 \
    char buff1[256] ;
& F$ o2 n0 b. e4 `5 Z- H    while(1){7 F* n, q# u3 i% b3 ?
4 d2 `0 G+ x2 P. j0 f
          ret = read(fd, buff1, 255);1 r4 u. Z2 y1 N- m- _; S9 O4 i
          if(ret > 0){
2 G* {  b2 F! ?% O% N, q# ~0 e' ?% t' I9 G; O9 z+ P( K" Q* V
                     write(fd, buff1, 5);
" [7 Q  ~  z( s- G8 u
4 V: V0 Z0 a6 F" {                      LOG_INFO("rs485 receiver ret = %d " , ret);
* w# x4 x! ]# g. _) K" q! x# n* d/ J* R' B
          }* |* K$ }( s& Y2 r0 N& b

, k) B5 I: r1 q% U) K    }! t$ Q& H: |) Z! f) n2 P) n. R2 P  D# L

% P1 r7 z7 {9 ], E0 y   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?6 r4 K' _3 ^2 v; e: j+ I: x

) M% W" d" c$ _1 B# m

/ [/ A7 t. Y1 G1 Q2 H2 C5 Y  L  T0 D5 d+ B6 {" u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-16 11:02 , Processed in 0.040632 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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