天嵌 ARM开发社区

 找回密码
 注册
查看: 3050|回复: 13

tq2440和SIM300串口通信问题。

[复制链接]
今夜私奔 发表于 2012-3-3 15:31:19 | 显示全部楼层 |阅读模式
使用TQ2440的板子使用串口和GPRS模块通讯不能发送成功。单独使用串口调试助手和SIM300可以使用,但是用TQ2440就不能使用。
下面是源代码:
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<sys/types.h>
  4. #include<sys/stat.h>
  5. #include<errno.h>
  6. #include<fcntl.h>
  7. #include<termios.h>

  8. int fd;

  9. int open_ser()
  10. {
  11.         fd=open("/dev/tq2440_serial0",O_RDWR|O_NOCTTY|O_NDELAY);
  12.        
  13.         printf("\nfd=%d\n",fd);
  14.         if(fd<0)       
  15.         {
  16.                 return -1;
  17.         }
  18.        
  19.         if(fcntl(fd,F_SETFL,0)<0)
  20.         {
  21.                 close(fd);
  22.                 return -2;       
  23.         }
  24.        
  25.         if(0==isatty(fd))
  26.         {
  27.                 close(fd);
  28.                 return -3;
  29.         }
  30.        
  31.         return fd;
  32. }


  33. int set_ser()
  34. {
  35.         struct termios new_tio,old_tio;

  36.         if(0!=tcgetattr(fd,&old_tio))       
  37.         {
  38.                 return -1;
  39.         }
  40.        
  41.         new_tio=old_tio;
  42.         //set
  43.         new_tio.c_cflag |= CLOCAL |CREAD;       
  44.        
  45.         new_tio.c_cflag &= ~CSIZE;
  46.         new_tio.c_cflag |= CS8;

  47.         new_tio.c_cflag &= ~PARENB;

  48.         cfsetispeed(&new_tio,B9600);
  49.         cfsetospeed(&new_tio,B9600);

  50.         new_tio.c_cflag &= ~CSTOPB;
  51.        
  52.         new_tio.c_cc[VTIME]=0;
  53.         new_tio.c_cc[VMIN]=0;

  54.        
  55.         tcflush(fd,TCIFLUSH);
  56.        
  57.         if(tcsetattr(fd,TCSANOW,&new_tio)!=0)
  58.         {
  59.                 return -2;
  60.         }


  61.         return 0;
  62. }



  63. int main()
  64. {
  65.         char cmd[]="ATD 18970952960;\r";
  66.        
  67.         open_ser();
  68.         set_ser();

  69.         printf("\nwrite:%d\n",write(fd,cmd,sizeof(cmd)));
  70.         sleep(2);
  71.         printf("\nread:%d\n",read(fd,cmd,sizeof(cmd)));


  72.         return 0;
  73. }
复制代码
板子返回的是:
fd=10
write:18
read:0


1.dev换成serial0,serial1,serial2都没用。
2.波特率9600和115200也都没有用。
求教串口出了什么问题
 楼主| 今夜私奔 发表于 2012-3-3 15:59:37 | 显示全部楼层
还没人么,:'(。我贴下我的环境。
内核是2.6.30,桌面系统是qtopia2.2,串口驱动也完善了。
就是不懂为什么串口传输会出错。
TQ_guoxixiao 发表于 2012-3-3 16:53:30 | 显示全部楼层
先确定你的串口发送接收是ok的,自发自收测试一下,把发送和接受的引脚短路。
 楼主| 今夜私奔 发表于 2012-3-3 18:25:52 | 显示全部楼层
TQ_guoxixiao 发表于 2012-3-3 16:53
先确定你的串口发送接收是ok的,自发自收测试一下,把发送和接受的引脚短路。

我用secureCRT,板子使用命令还有传输文件都是可以的。
什么叫把发送和接受的引脚短路啊?
TQ-lkp 发表于 2012-3-3 21:41:12 | 显示全部楼层
你用的调试串口来接SIM300?
这个串口已经被占用了吧,确定你用的哪个串口先
 楼主| 今夜私奔 发表于 2012-3-3 23:01:57 | 显示全部楼层
TQ-lkp 发表于 2012-3-3 21:41
你用的调试串口来接SIM300?
这个串口已经被占用了吧,确定你用的哪个串口先

问题就只有一个串口啊,就用那个来接的SIM300,不然用什么接呢?
版主能说清楚点么?怎么被会占用了呢,这就是所说的3个tq2440_serial0,1,2么?那三个我都试着打开过,说实话我还是不懂这里,明明就只有一个串口,文档上说是有三个URAT。看论坛上以前的帖子也没说清楚,求解释。
 楼主| 今夜私奔 发表于 2012-3-4 12:03:14 | 显示全部楼层
还没人么?我再自己顶下。
现在不明白的情况是,(因为是软件出身,对那个串口的电路原理图基本看不懂):
1.开发板中三个串口分别是有什么用的(serial0,serial1,serial2)
2.明明就只有一个串口为什么出现了三个
3.这个程序使用PC和SIM3000修改了open_ser()里面部分代码后是可以通信的,不知究竟是什么错误。

上面三个是我现在主要搞不清楚的问题,求助论坛各位大神帮忙,万分感谢。
 楼主| 今夜私奔 发表于 2012-3-4 15:35:27 | 显示全部楼层
大概知道错误的原因了,硬着头皮看了串口电路。
PC(公头):2脚RXD,3脚TXD
TQ2440(公头):2脚TXD,3脚RXD
SIM300(母头):2脚TXD,3脚RXD

有两根线,都是直连串口的,一根是两头母头,一根是一公一母,这就是为什么SIM300和TQ2440分别连PC的时候都可以,但是SIM300连接TQ2440就不可以。问题现在没有交叉的一公一母的交叉串口线,有什么好的办法么?
还有其实我还是不懂为什么会有三个串口tq2440_serial0~2。什么时候应该用什么?
 楼主| 今夜私奔 发表于 2012-3-7 18:48:43 | 显示全部楼层
我要崩溃了,今天买了交叉串口线,结果还是不行。

跪求!!!
 楼主| 今夜私奔 发表于 2012-3-7 21:57:58 | 显示全部楼层
难道需要另开一帖来问么?
借我你的一生 发表于 2012-3-8 14:45:48 | 显示全部楼层
菜鸟路过...
亚瑟王 发表于 2012-3-12 15:51:02 | 显示全部楼层
今夜私奔 发表于 2012-3-7 21:57
难道需要另开一帖来问么?

亲,在TQ2440开发板上有个叫UART的接口,那个可以用来扩展串口,至少可以扩展2个串口出来。
这两个串口就可以用来连接GPRS模块。然后他们在Linux下的设备名是:tq2440_serial1和2.
 楼主| 今夜私奔 发表于 2012-3-15 16:29:40 | 显示全部楼层
亚瑟王 发表于 2012-3-12 15:51
亲,在TQ2440开发板上有个叫UART的接口,那个可以用来扩展串口,至少可以扩展2个串口出来。
这两个串口就 ...

谢谢,亚瑟王。用物理扩展串口的方法已经搞定。
 楼主| 今夜私奔 发表于 2012-3-15 16:36:32 | 显示全部楼层
总结帖如下:
1.首先TQ2440一共有三个UART,板子已经有的就是一个用RS232引出来了,剩下两个是TTL电平,扩展的时候,我因为是硬件菜鸟一枚,所以用的是天嵌的直接做好的扩展板,地址如下:
http://detail.china.alibaba.com/buyer/offerdetail/987340147.html
2.三个串口都可以进行通信,但是串口一已经用来调试用了,要进行通信就只能用串口二和串口三,他们在系统中对应的设备名是:tq2440_serila1和tq2440_serila2.
3.所以总结来说,用串口一和PC机调试用,用串口二三进行通信用,这两个串口要用的话要进行扩展

另一个问题,就是板子里面的串口不是标准的串口,它的公头是2脚TXD,3脚RXD,和GPRS模块进行连接是要用的是交叉串口线,这个要看自己GPRS模块的串口电路原理图。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-10-5 06:36 , Processed in 1.022404 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

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