单片机是一块LED显示屏的控制芯片,它可以和PC机通信;
把程序烧入ARM以后,ARM和PC机通信也没有问题,但是ARM和
单片机之间无法通信 :
PC机通过串口助手给单片机发送了“0x01 oxo1”后,单片机会
返回给PC机一个“01”的握手信号 ,
我把程序烧进ARM后,它也可以向PC机发送“0x01 0x01”的信号,
但是我把单片机和ARM通过串口连接起来后,ARM无法接受到单片机的
“01” 的返回信号 。
请高手帮我分析一下,这已经困扰我好几天了,多谢各位前辈了
我前面也遇到过类似的情况,可能原因有:
1,接线问题,RX,TX是否交叉
2,波特率是否相同
3,程序的问题
回以上几位大哥:
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);
}
}
}
请各位高手指点一下,感激不尽!!
引用: 引用 4 楼 xuelian922 的回复:
我前面也遇到过类似的情况,可能原因有:
1,接线问题,RX,TX是否交叉
2,波特率是否相同
3,程序的问题
------------------------------------我觉得极有可能是这个问题。
估计是单片机这边波特率不对,曾经遇到过这类问题就是这个原因。毕竟计算机和ARM都没有问题。
引用: 引用 9 楼 yunjian4516 的回复:
估计是单片机这边波特率不对,曾经遇到过这类问题就是这个原因。毕竟计算机和ARM都没有问题。
补充。。。单片机代码可能执行错误,达不到这个波特率。
先从硬件找问题,再找软件
最好拿示波器看看波形,看是没发出来,还是发送出来没收到