在树莓派3B+里启用串口,并通过UART读取GPS模块的数据帧。

树莓派3启用UART

#####先更新系统

sudo apt-get update
sudo apt-get upgrade
sudo raspi-config

在raspi-config中设置:

  • disable login shell over serial
  • enable serial hardware port

#####然后重启

sudo reboot

#####编辑配置文件

sudo nano /boot/config.txt

在最后一段加上:

dtparam=spi=on
dtoverlay=pi3-disable-bt
core_freq=250
enable_uart=1
force_turbo=1

然后编辑cmdline.txt

sudo cp boot/cmdline.txt boot/cmdline_backup.txt
sudo nano /boot.cmdline.txt

将cmdline.txt的内容替换为: dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait quiet splash plymouth.ignore-serial-consoles

#####禁用树莓派Serial Getty服务

sudo systemctl stop serial-getty@ttyS0.service
sudo systemctl disable serial-getty@ttyS0.service

重启系统

sudo reboot

#####激活ttyAMAO 上一步我们禁用了ttyS0,现在我们启用ttyAMA0.

sudo systemctl enable serial-getty@ttyAMA0.service

好了到了现在,我们已经启用了树莓派的串口,并可以通过/dev/ttyAMA0来访问串口设备。

树莓派的串口引脚

树莓派的引脚定义图如下所示: 树莓派引脚定义

UART的收发引脚分别为:

  • Tx ——GPIO14(pin8)
  • Rx ——GPIO15(pin10)

连接串口设备并测试

我们使用GPS串口设备进行测试,GPS模块有如下5个引脚:

  • VCC
  • GND
  • TX
  • RX
  • PPS

GPS模块和树莓派连接方式如下:

  • VCC ——pin01
  • GND——pin06
  • TX——pin10

其他引脚可以不连接。

使用cat或者minicom调试GPS串口:

cat /dev/ttyAMA0
#或者
minicom -D /dev/ttyAMA0 -b 9600

能够读取到类似下边的串口输出:


$GPTXT,01,01,01,ANTENNA OK*35

$GNGGA,115810.475,,,,,0,00,25.5,,,,,,*70

$GNGLL,,,,,115810.475,V,M*6D

$GPGSA,A,1,,,,,,,,,,,,,25.5,25.5,25.5*02

$BDGSA,A,1,,,,,,,,,,,,,25.5,25.5,25.5*13

$GPGSV,3,1,09,05,05,121,,10,25,314,27,12,14,138,,13,13,058,16*73

$GPGSV,3,2,09,15,49,043,32,20,53,321,18,21,52,249,,24,77,090,*77

$GPGSV,3,3,09,32,11,265,*40

参考