单片机无法与ARM通信,急求高手指点

hq_yyy   2008-11-4 20:43 楼主
单片机是一块LED显示屏的控制芯片,它可以和PC机通信;
把程序烧入ARM以后,ARM和PC机通信也没有问题,但是ARM和
单片机之间无法通信 :
PC机通过串口助手给单片机发送了“0x01 oxo1”后,单片机会
返回给PC机一个“01”的握手信号 ,
我把程序烧进ARM后,它也可以向PC机发送“0x01 0x01”的信号,
但是我把单片机和ARM通过串口连接起来后,ARM无法接受到单片机的
“01” 的返回信号 。
请高手帮我分析一下,这已经困扰我好几天了,多谢各位前辈了

回复评论 (13)

我自己先顶一个,求高手急救啊
点赞  2008-11-4 21:06
各位大侠伸伸援手吧,急啊
点赞  2008-11-5 09:11
还是RX TX需要交叉的问题吧
点赞  2008-11-5 09:17
我前面也遇到过类似的情况,可能原因有:
1,接线问题,RX,TX是否交叉
2,波特率是否相同
3,程序的问题
点赞  2008-11-5 12:36
数据位是否相同?
点赞  2008-11-5 13:41
回以上几位大哥:
1.波特率ARM和单片机两边都是115200
2,两边我都测了,都是3脚收,2脚发,用交叉线连接的,应该
  没问题吧
3,数据位都是8
4,程序如下:
int  main(void)
{
  
    uint8 i;   
   PINSEL0 = 0x00000000;                // 设置I/O连接到UART0
   PINSEL0 &= 0x3fffffff;                        // 设置P0.15管脚连接GPIO  
   PINSEL0 = (PINSEL0 & 0xfffffff0)|(0x00000005);  //设置P0.0-0.1连接到UART0
   PINSEL1 = 0x00000000;
   PINSEL0 = (PINSEL0 & 0xfff0ffff)|0x00050000;    //选择管脚为UART1            
  
   UART1_Init();     //初始化UART1
   U0FCR = 0x01;                        // 使能FIFO,并设置触发点为1字节
  
   while(1)
   {
  UART1_SendByte(0x01);           //发送“0x01”
  
  UART1_SendByte(0x01);//回显
  while(!UART1_GetByte());      
  if(rcv_data!=0x01)           
   
  {
  for(i=0;i<34;i++)
  UART1_SendByte(a);
  }

   }
}
请各位高手指点一下,感激不尽!!
点赞  2008-11-5 14:55
引用: 引用 4 楼 xuelian922 的回复:
我前面也遇到过类似的情况,可能原因有:
1,接线问题,RX,TX是否交叉
2,波特率是否相同
3,程序的问题


------------------------------------我觉得极有可能是这个问题。
点赞  2008-11-6 16:35
各位过路神仙帮帮忙吧,现在还是没调通啊
点赞  2008-11-11 09:47
估计是单片机这边波特率不对,曾经遇到过这类问题就是这个原因。毕竟计算机和ARM都没有问题。
点赞  2008-11-11 18:21
引用: 引用 9 楼 yunjian4516 的回复:
估计是单片机这边波特率不对,曾经遇到过这类问题就是这个原因。毕竟计算机和ARM都没有问题。

补充。。。单片机代码可能执行错误,达不到这个波特率。
点赞  2008-11-11 18:23
中间有没有加232的芯片,可能是电平不匹配
点赞  2008-11-12 22:30
单片机跑115200,可能速率太高
点赞  2008-11-14 21:29
先从硬件找问题,再找软件
最好拿示波器看看波形,看是没发出来,还是发送出来没收到
点赞  2008-11-17 22:11
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复