[STM32MP1]

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

[复制链接]
299|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用起来。

&uart4 {

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

pinctrl-0 = <&uart4_pins_a>;

pinctrl-1 = <&uart4_sleep_pins_a>;

pinctrl-2 = <&uart4_idle_pins_a>;

/delete-property/dmas;

/delete-property/dma-names;

status = "okay";

};

&uart8 {

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

pinctrl-0 = <&uart8_pins_a>;

pinctrl-1 = <&uart8_sleep_pins_a>;

pinctrl-2 = <&uart8_idle_pins_a>;

/delete-property/dmas;

/delete-property/dma-names;

status = "disabled";

};

&usart1 {

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

pinctrl-0 = <&usart1_pins_a>;

pinctrl-1 = <&usart1_sleep_pins_a>;

pinctrl-2 = <&usart1_idle_pins_a>;

uart-has-rtscts;

status = "disabled";

};

/* Bluetooth */

&usart2 {

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

pinctrl-0 = <&usart2_pins_a>;

pinctrl-1 = <&usart2_sleep_pins_a>;

pinctrl-2 = <&usart2_idle_pins_a>;

uart-has-rtscts;

status = "okay";

bluetooth {

shutdown-gpios = <&mcp23017 13 GPIO_ACTIVE_HIGH>;

compatible = "brcm,bcm43438-bt";

max-speed = <3000000>;

vbat-supply = <&v3v3_ao>;

vddio-supply = <&v3v3_ao>;

};

};

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

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


8533a4e29b26817d8db7a160bb7e01b2

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

0004d4f344160726a28aec47ca450059

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


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


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

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

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

#!/bin/bash

UART_DEVICE="/dev/ttySTM1"

BAUD_RATE="9600"

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

stty -F $UART_DEVICE cs8 $BAUD_RATE

echo "Hello UART" > $UART_DEVICE

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

cat $UART_DEVICE

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

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

使用特权

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

61

主题

214

帖子

1

粉丝