|
|
0 w6 Y' x( g$ V您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。/ h+ g. S- n n! M* G
1 Y( Y) I" E8 _
我的qt程序如下:
" ?# l- E( |- f9 P struct termios setting;# U* x- z/ z' Y+ \
fd = open("/dev/ttyS1", O_RDWR);
) X$ [% y7 A/ n' @: d" V& b if (fd == -1) {
, l& o' h* Z& m4 J; q LOG_INFO("open /dev/ttyS failure ...");( A. k7 L- i$ R1 D
return ;
4 X1 _3 {8 T6 H }% b, d) p; G) ~1 w: Y* R
LOG_INFO("open /dev/ttyS1 success ...");/ V* j( D, e# u4 c! b$ z$ `
tcgetattr(fd, &setting);! |; W) a' V( Q \- U+ v" }
speed_t speed;
, b! U: c N) \+ X5 y7 h5 S2 n0 E speed = btr;
, R* O# h; z4 x6 v- E3 } ], Q" E; j& w& `+ k# F* \; m7 B% J
cfsetispeed(&setting, speed);
( P0 _4 w! H c4 V- |6 b cfsetospeed(&setting, speed);
/ [ T9 C6 p, u' {2 W" W! `, E4 P cfmakeraw(&setting);, T' P. I% N2 t; C4 P" b
setting .c_cflag |= CS8;
# h! v5 ^$ E/ R1 k) u% b setting.c_cflag &= ~PARENB;; g8 K2 q+ e% m2 Q, c& A
setting.c_iflag &= ~INPCK;% J/ @: |" \+ q$ u
setting.c_cflag &= ~CSTOPB;
- V& P9 F t& ]* E4 K2 A' c tcflush(fd, TCIFLUSH);9 c: e$ v# ~1 \# P, @; @$ p
setting.c_cc[VTIME] = 0;
( z* F9 [4 C; T% X5 Z. ~ setting.c_cc[VMIN] = 0;, c5 P% }3 s% d9 g6 x
tcsetattr(fd, TCSANOW, &setting);
3 P7 [; i/ i; f H7 V* a) E% \
9 @$ P6 c, f: l+ ? int ret;
% @! Q3 b9 Y* Q$ u char *buff = {"hello,485write ok"} ;
! D9 g# w+ a5 r v8 D: z ret = write(fd, buff, 17);
; _ h n/ N' L" J4 _3 Z8 k! L1 Z& C B- ~- V
char buff1[256] ;
3 I- D' |! U5 p: a: s6 `" y while(1){
& X k$ C7 [3 G+ ]1 I, P- M" Y s' k4 v/ y( n: z1 C6 r
ret = read(fd, buff1, 255);! B$ B' F2 n) K& F0 k0 t4 ?! N
if(ret > 0){; R0 V" |! ^1 h6 Z. L
1 H- c( s ?6 T& R5 Q+ p write(fd, buff1, 5);
, P8 H( o' Q& i O# o Y) i% ~3 s( M
3 E- @$ |5 X6 E* L* M4 ^8 L) Y0 D LOG_INFO("rs485 receiver ret = %d " , ret);
2 B' _# k3 ^! L! T0 ]" ]# C. }4 Y5 g# o% O
}3 c; b2 W2 O' G6 I6 D# S; X$ P
$ M4 b( E+ l ]' W7 G {% ` }
3 m( y. a+ g0 m" u
# l; p7 C* K3 y& Z- o9 J8 J 我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?% }$ S+ `7 c* n
9 [6 h% V* v' T( C
: f+ G& @8 d: z: t O: }& p& x' ?2 A/ V
" x2 n4 {! ^* G& x5 [8 {
|
|