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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

RS485问题

[复制链接]

32

主题

54

帖子

1263

积分

金牌会员

Rank: 6Rank: 6

积分
1263
跳转到指定楼层
楼主
发表于 2016-10-8 12:44:04 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
% U9 F3 Y, a+ m; T% A$ G
您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。
# R3 ~6 }7 T) ?; F. L' U+ L3 [

4 H; Q/ D4 a# l8 \我的qt程序如下:9 A8 j( J5 M5 U# b* o  ]* Z7 B- P
   struct termios setting;: D. u8 F" p* [) {! g2 p+ N
    fd = open("/dev/ttyS1", O_RDWR);
1 r* ^+ v& k4 @    if (fd == -1) {1 N! H# f2 b( G, }% l
        LOG_INFO("open /dev/ttyS  failure ...");
8 T7 M  e! c4 t        return ;
9 F9 }" u& P% i- l0 [, @6 ~    }
0 ^# ?2 g; c6 H! _( d7 ~( ?    LOG_INFO("open /dev/ttyS1  success ...");: `  [9 }$ \0 d, \+ }, G6 X) Y, m
    tcgetattr(fd, &setting);& n- T( _+ h9 G; |' h# V8 y
    speed_t speed;. e; C2 h/ r6 R0 D& f% b
    speed = btr;
6 Z6 c# T9 H! e, n3 Q8 C3 c! y2 z& Y& w6 p
    cfsetispeed(&setting, speed);
' j/ x# @' p# z: `+ C% z    cfsetospeed(&setting, speed);! i* u+ ~9 h' V" y
    cfmakeraw(&setting);
6 p$ f* h1 ^2 u: p9 d! P    setting .c_cflag |= CS8;( V: P" V2 l5 m5 o3 n% z7 a6 ?: t% X
    setting.c_cflag &= ~PARENB;% d( m2 V, ?! \
    setting.c_iflag &= ~INPCK;
. f" m* v; Z; {+ B7 q    setting.c_cflag &= ~CSTOPB;6 p; t, ^, t% b. T0 x2 O1 T
    tcflush(fd, TCIFLUSH);  @$ x( P9 P+ O% e6 ]1 I, u
    setting.c_cc[VTIME] = 0;
7 p, L* o% S, m! ~    setting.c_cc[VMIN] = 0;
5 ]# f' n- z7 H/ q8 s. a  @    tcsetattr(fd, TCSANOW, &setting);& @( v( {* c/ z' a, u$ S

1 }" J" e6 @" X# L: R    int ret;
# i) t4 x5 I2 d4 Z* @    char *buff = {"hello,485write ok"} ;7 {! ]1 r: O1 L$ u5 Y7 p$ D* |
    ret = write(fd, buff, 17);
- N+ \6 J/ F2 W! [& |9 Y6 g+ R5 Q
    char buff1[256] ;9 Q+ X$ E7 f/ r0 r* \
    while(1){( ~# P" s/ D% W2 J. H

! c: D8 i% h. v) n8 t          ret = read(fd, buff1, 255);, d5 U7 b' ^8 A8 H0 k
          if(ret > 0){
& W) r0 }% {1 k! u+ E: h
5 t/ D3 T  F, x( K6 b                     write(fd, buff1, 5);
. h1 f1 |0 P: A7 T4 f% p
, k  r0 ^3 Z4 V* a                      LOG_INFO("rs485 receiver ret = %d " , ret);
- D+ h0 g2 |5 X1 S' ^1 B( {: V, p2 l& P  V0 r
          }! U, O8 h9 O" I' |; N
0 }5 {  \/ ]; w! y
    }+ ]3 r- J% Z2 o- W6 E8 P5 n
7 L. H" l) A$ u% \7 R
   我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?( P$ }. k1 v8 y. h4 ~
1 H' ?0 ~  Z$ T. L# P  |

! L7 l. _% [# n# _
0 K/ V" d, T4 u) r9 M4 |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

215

帖子

1246

积分

创龙

Rank: 8Rank: 8

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

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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