2015-10-22 91 views
-1

我试图通过串口连接(GPIO UART引脚)在Raspberry Pi 2(raspian wheezy)和STM32F4板之间发送/接收数据。我在链接中使用示例代码:http://www.raspberry-projects.com/pi/programming-in-c/uart-serial-port/using-the-uartRaspberry Pi无法通过串行通信将数据发送到PC

它将电路板上的TX和RX引脚连接在一起时起作用。但是,当我通过模块USB-TTL PL2303将RPI连接到笔记本电脑并使用超级终端查看结果时,收到的字符是垃圾字符。我不明白为什么。有什么我错过了吗? 请问你能给我一些建议吗?谢谢!

+2

波特率,停止位,奇偶校验............................. –

+2

您是否设置了正确的波特率/串行超级终端的参数?通常应该是'115200-8-N-1' – 865719

+0

谢谢您的回复。我可以使用任何波特率吗?或者我必须要115200的波特率? –

回答

0

很有可能您使用的是不正确的波特率。它应该是115200(115200-8-N-1)(你可以使用其他的,但是你需要将两个端点设置为相同的波特率)。检查使用stty

stty -F /dev/ttyX

setserial串行连接的波特率。在波特率误差的情况下,你可以试试作者说什么:使用

尝试降低波特率(或仅具有 起始位低一个0xFF的字节),看看它是否工作。使用115k2波特率时,我们遇到了问题,我们的微控制器与RPi通信的速率可能达到 113636baud或119047baud。 113636baud产生了最低的误差,所以我们用它和TX从RPi正在接收的微控制器 工作正常。然而,当传输到RPi时,没有收到任何东西 。更改单片机使用119047baud导致RX到 工作。

+0

tcgetattr(uart0_filestream,&options); cfsetispeed(&options,B9600); cfsetospeed(&options,B9600); options.c_cflag&=〜PARENB; options.c_cflag&=〜CSTOPB; options.c_cflag&=〜CSIZE; options.c_cflag | = CS8; options.c_cflag&=〜CRTSCTS; options.c_cflag | =(CLOCAL | CREAD); tcflush(uart0_filestream,TCIFLUSH); tcsetattr(uart0_filestream,TCSANOW,&options); 这些是我的串行通信配置。我设置了9600的波特率,我也将它用于超级终端,但它仍然接收垃圾字符。 –

+0

@uv_utna您是否按照教程的建议与minicom进行了验证?确保速度(波特率):115200 位数:8 奇偶校验:无 停止位:1 流量控制:无 – 4pie0

+0

我的代码是正确的。电路中出现了一个愚蠢的错误。谢谢。 –