ST MP157 设备树及驱动开发-RS232/485/GPS驱动

1 硬件电路

  • STM32MP1有 8 个串口,四个同步串口(USART1、USART2、USART3 和 USART6),四个异步串口(UART4、UART5、UART7 和 UART8)。
  • 当系 统 启 动 以 后 串 口 驱 动 和 设 备 匹 配 成 功 , 相 应 的 串 口 就 会 被 驱 动 起 来 , 生 成/dev/ttySTMX(X=0….n)文件。
  • STM32MP1 的 USART3 接口和 UART5 接口,USART3 连接 RS485RS232的公头,UART5 连接 GPS RS232 的母头。我们依次来看一下这个两个串口的硬件原理图。
  • ttySTM0 为serial0,对应uart4
  • ttySTM1 为 serial1,对应uart5
  • ttySTM2 为 serial2,对应usart3

1.1 RS232 原理图(原理图错误更正:USART5对应UART5)

  • RS485 和 COM2 共用 USART3
  • COM1 和 ATK 模块共用UART5

image.png

1.2 RS485原理图

image.png

1.2 GPS原理图

image.png

2 设备树

2.1 添加usart3和uart5的引脚信息

  • usart3_pins_c

image.png

  • uart5_pins_a

image.png

2.2 向usart3和uart5节点追加内容

image.png

2.3 设置串口的别名

  • ttySTM0 为 serial0,对应 uart4;ttySTM1 为 serial1,对应 uart5;ttySTM2 为 serial2,对应usart3

image.png

  • serial0 是 uart4 的别名,表示在系统启动生成一个名为“/dev/ttySTM0”的设备文件,serial1就会生成“/dev/ttySTM1”如此类推,最多 8 个。serial0 就是我们的调试串口

image.png

3 移植 minicom

  • minicom 类似我们常用的串口调试助手,是 Linux 下很常用的一个串口工具,将 minicom移植到我们的开发板中,这样我们就可以借助 minicom 对串口进行读写操作。buildroot 已经集成了 minicom,所以我们只需要重新配置 buildroot,使能 minicom 即可。

image.png image.png

4 驱动测试

image.png

4.1 RS232驱动测试

  • ttySTM0 为serial0,对应uart4
  • ttySTM1 为 serial1,对应uart5
  • ttySTM2 为 serial2,对应usart3

image.png image.png image.png image.png

  • 发送测试-首先测试开发板通过 UART5 向电脑发送数据的功能,需要打开 minicom 的回显功能(不打开也可以,但是在 minicom 中看不到自己输入的内容),回显功能打开以后输入“AAAA”,

image.png

  • 电脑的 COM11就会接收到“AAAA”,MobaXterm 中 COM11 收到的数据如图所示:

image.png

4.2 RS485驱动测试

  • ttySTM0 为serial0,对应uart4
  • ttySTM1 为 serial1,对应uart5
  • ttySTM2 为 serial2,对应usart3

image.png

  • 使用 SecureCRT 创建一个 COM12 的连接,开发板使用 USART3,对应的串口设备文件为/dev/ttySTM2,因此开发板使用 minicom 创建一个/dev/ttySTM2 的串口连接。串口波特率都选择 115200,8 位数据位,1 位停止位,关闭硬件和软件流控。

image.png

4.3 GPS测试

  • ttySTM0 为serial0,对应uart4
  • ttySTM1 为 serial1,对应uart5
  • ttySTM2 为 serial2,对应usart3

image.png

  • GPS 都是被动接收定位数据的,模块接收定位卫星数据,然后计算出位置信息通过串口输出。所以我们要先设置 minicom,UART5 对应/dev/ttySTM1,串口设置要求如下:
  • ①、波特率设置为 38400,因为正点原子的 ATK1218-BD 模块默认波特率就是 38400。
  • ②、8 位数据位,1 位停止位。
  • ③、关闭硬件和软件流控

image.png

  • 设置好以后就可以静静的等待 GPS 数据输出,GPS 模块第一次启动可能需要几分钟搜星,等搜到卫星以后才会有定位数据输出。搜到卫星以后 GPS 模块输出的定位数据如图所示

image.png

Guess you like

Origin juejin.im/post/7069365432880218149