|
|
+ Z( w# _/ v1 d3 e
您好,使用OMAPL138-EVM开发板,按照《2-1开发板快速体验》,在内核编译时把"System Type -> TI DaVinci Implementations->Enable UART1 RS485 funcation"选项选上,并重新编译内核,然后使用编译后的内核启动系统。发现开发板485口能发数据,但是不能接收数据。% o0 V1 W/ J3 v, S1 p3 E& w4 i
9 K$ I D! c+ i( o我的qt程序如下:
/ \& y) `# M: A% L9 x8 L0 C- E struct termios setting;* h# h# ^- x$ X( [ E3 e! t
fd = open("/dev/ttyS1", O_RDWR);
$ \- e. @$ Y" R& i; f' R. _: t if (fd == -1) {1 A) A5 o7 y2 v& a+ T D5 b
LOG_INFO("open /dev/ttyS failure ...");+ q- t$ y* c; X% v( @+ R! a
return ;
! e% f" h9 e& W; U3 h! l+ A" R; g }
. y( B% y( B$ u0 }5 g7 b1 Q LOG_INFO("open /dev/ttyS1 success ...");
; X6 t; |1 |& v& E0 O. w8 y tcgetattr(fd, &setting);
0 m. V- L! k+ y+ a9 j2 Z, F speed_t speed;
. j. N' ?) @2 P# ?4 e$ B speed = btr;" g# `, H# y: \' W* k
4 g# h7 r8 W$ }+ b; y1 r6 Y. b0 y
cfsetispeed(&setting, speed);
: L. H* M5 v) I! }7 C, _8 d! I cfsetospeed(&setting, speed); M/ b4 q2 R3 Y5 j
cfmakeraw(&setting);
8 i* Y; ?+ L" c setting .c_cflag |= CS8;; F! ~& B% N5 V" x9 n/ U
setting.c_cflag &= ~PARENB;6 m2 v% V0 j/ X! c4 W
setting.c_iflag &= ~INPCK;
/ z6 N- l ~" a% s- W4 T: R [; d setting.c_cflag &= ~CSTOPB;
' ^3 y% z* A# V9 ?, p' [: l. O1 R tcflush(fd, TCIFLUSH);1 O! N, `# q0 g
setting.c_cc[VTIME] = 0;" @$ I1 E3 z% A
setting.c_cc[VMIN] = 0;( V: v* k/ a7 m
tcsetattr(fd, TCSANOW, &setting);. ?) \# O8 x# l% x; v2 B5 v
' ^$ d+ B2 E" I1 D( M
int ret;* d9 b) h9 o4 B" i
char *buff = {"hello,485write ok"} ;
& c6 g$ Z2 d4 a& d5 p4 X ret = write(fd, buff, 17);! a6 w0 A) @; R9 W* |
) V2 M8 e$ J+ E* k" C0 T6 @
char buff1[256] ;
* e7 W4 Q/ f" ?- ?- D7 Z: X% @& W while(1){, S, S5 e" o& r4 @, J
+ Y, D7 l5 u0 {" m# L0 O ret = read(fd, buff1, 255);
5 f g3 f4 d7 V+ Q q/ a if(ret > 0){
, l- m0 w$ _, L, E% T- a. S# l, w# e; o$ V4 A
write(fd, buff1, 5);8 u4 Z8 L( q; S! w3 \
7 r3 j+ W: s; T6 _2 S& h+ b LOG_INFO("rs485 receiver ret = %d " , ret);
@! M3 @! t% ]5 b7 T
6 U0 k, g0 Y1 V0 p5 x, ?, {- R }
6 Y( y' A% k# l
$ {) k7 e' h: N; V( D } v( |# p. Y: f. `. n4 T' V
# B! a; U; N" t! c& p. v# i 我使用串口调试助手,开发板能发送数据,调试助手能收到”hello,485write ok“,但是调试助手发的数据开发板却没有收到。并且用示波器可以看到UART1_RXD管脚的数据。请问为什么?* S2 G& F3 N- e. l |( Q4 b) ?) L3 @. T
! n& z. p) ^8 s
& w# Z) F" m1 |" Y! |' z
5 q4 s( s, e- u! s t |
|