[STM32MP1] 【STM32MP135F-DK测评】STM32MP135串口数据收发

[复制链接]
1485|1
 楼主| xinmeng_wit 发表于 2024-2-20 22:05 | 显示全部楼层 |阅读模式
本帖最后由 xinmeng_wit 于 2024-2-25 21:15 编辑

1、查看设备树文件
为了确认哪些uart口可以使用,可以先查看一下设备树文件:
3b00d7de40f07d013be5a81c3aed031a
大致猜测这4个串口的驱动官方已经做好了。
再查看具体的UART的设备节点,可以看到目前只启用了uart4和usart2。其中usart2应该是接的蓝牙模块,uart4应该是串口控制台。Usart1和uart8尚未使用到,因此我们可以将usart1和/或uart8用起来。

  1. &uart4 {

  2. pinctrl-names = "default", "sleep", "idle";

  3. pinctrl-0 = <&uart4_pins_a>;

  4. pinctrl-1 = <&uart4_sleep_pins_a>;

  5. pinctrl-2 = <&uart4_idle_pins_a>;

  6. /delete-property/dmas;

  7. /delete-property/dma-names;

  8. status = "okay";

  9. };

  10. &uart8 {

  11. pinctrl-names = "default", "sleep", "idle";

  12. pinctrl-0 = <&uart8_pins_a>;

  13. pinctrl-1 = <&uart8_sleep_pins_a>;

  14. pinctrl-2 = <&uart8_idle_pins_a>;

  15. /delete-property/dmas;

  16. /delete-property/dma-names;

  17. status = "disabled";

  18. };

  19. &usart1 {

  20. pinctrl-names = "default", "sleep", "idle";

  21. pinctrl-0 = <&usart1_pins_a>;

  22. pinctrl-1 = <&usart1_sleep_pins_a>;

  23. pinctrl-2 = <&usart1_idle_pins_a>;

  24. uart-has-rtscts;

  25. status = "disabled";

  26. };

  27. /* Bluetooth */

  28. &usart2 {

  29. pinctrl-names = "default", "sleep", "idle";

  30. pinctrl-0 = <&usart2_pins_a>;

  31. pinctrl-1 = <&usart2_sleep_pins_a>;

  32. pinctrl-2 = <&usart2_idle_pins_a>;

  33. uart-has-rtscts;

  34. status = "okay";

  35. bluetooth {

  36. shutdown-gpios = <&mcp23017 13 GPIO_ACTIVE_HIGH>;

  37. compatible = "brcm,bcm43438-bt";

  38. max-speed = <3000000>;

  39. vbat-supply = <&v3v3_ao>;

  40. vddio-supply = <&v3v3_ao>;

  41. };

  42. };

2、修改设备树
因为默认设备树文件中usart1和uart8的status是 "disabled"状态,需要改成okay,本篇以usart1为例做修改,因此修改设备树如下:
499451fd6302ab641c66eea6effc32d7

3、编译设备树
  1. make ARCH=arm dtbs LOADADDR=0xC2000040


8533a4e29b26817d8db7a160bb7e01b2

4、上传dtb文件到开发板
  1. scp arch/arm/boot/dts/stm32mp135*.dtb root@192.168.7.1:/boot

0004d4f344160726a28aec47ca450059

5、重启开发板
  1. root@stm32mp1:~# sync && reboot


6、查看设备节点是否被创建
  1. root@stm32mp1:~# ls /dev/ttyS*


73182b6be8d8f4d5a9f9ffa33a4e4413
可以看到多出来了一个ttySTM1的串口设备,这个设备就是我们之前配置的usart1。

7、确定usart1的引脚
Usart1的引脚可以通过查看stm32mp13-pinctrl.dtsi文件
2fd32b9f0a520f3276c84b229fd73a63
确认了TX是PC0,RX是PB0。

8、编写程序控制串口收发数据
为了测试方便,本次直接使用sh脚本来进行串口的数据的收发
脚本如下:

  1. #!/bin/bash

  2. UART_DEVICE="/dev/ttySTM1"

  3. BAUD_RATE="9600"

  4. echo -e "STM32MP135 UART TEST\n" > $UART_DEVICE

  5. stty -F $UART_DEVICE cs8 $BAUD_RATE

  6. echo "Hello UART" > $UART_DEVICE

  7. echo -e "Please send a message\n" > $UART_DEVICE

  8. cat $UART_DEVICE

9、执行脚本
  1. root@stm32mp1:~# ./uart.sh

使用串口工具查看开发板通过串口发出的消息:
d62076e8b4ca919218d476a9e2355ce4
如果向开发板发送消息,开发板会将该消息再发回给PC:
881cccd9ab320e4387b9f7ddbbb833a8
到此,完成uart的数据的接收与发送。

 楼主| xinmeng_wit 发表于 2024-2-20 22:08 | 显示全部楼层
补充一点,PB0和PC0引脚在开发板上已经通过扩展插针引出了,可以很方便的与其他设备连接,具体位置可以查看开发板原理图
您需要登录后才可以回帖 登录 | 注册

本版积分规则

70

主题

279

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部