树莓派4B下的usart串口测试

树莓派4B是树莓派最新发布的版本,串口测试是新手入门的一个必经之路。鉴于网上4B资料相对较少,很多资料都是从3B或3B+上移植过来的,但平台不同,需要的操作也可能不同,这里对树莓派4B做一些总结。
关于树莓派串口的问题,可参考链接(https://blog.csdn.net/qq_22121229/article/details/88784036)
因为笔者只是测试串口通信的可行性,所以,对于交换两个串口的映射并没有进行深入研究,这里只用树莓派4B miniUSB (GPIO14 15 对应的串口映射 /dev/ttyS0)进行测试。
1.修改配置文件 sudo vim /boot/config.txt (笔者使用的编辑工具为vim 可以使用sudo apt-get install vim 安装 读者也可以选择自己的编辑工具)
注释掉最后一行 dtovrtlay=w1-gpio
2.修改配置文件 sudo vim /boot/cmdline.txt
删掉console=serial0,115200 (可以先对文件备份,sudo cp /boot/cmdline.txt /boot/cmdline.txt.bak 方便以后对文档进行恢复 )
3.重启树莓派(sudo reboot)
4…可以对串口进行一些验证(stty -F /dev/ttyS0)查看串口波特率
5.硬件平台连接
笔者采用的是CH340 USB转串口 (树莓派4b有默认安装的驱动,读者可以自行验证)
6.ptyhon语言验证(python版本是2.7,3.7版本改代码并不适用,需要读者自行开发)

python
import serial
ser=serial.Serial(’/dev/ttyS0’,115200,timeout=0.5)
ser.isOpen()
ser.write(‘123456’)
7.电脑串口软件上显示 123456

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
树莓派4B和STM32之间进行串口通信时,需要使用GPIO引脚以及相应的代码进行连接和配置。下面是一个示例代码,演示了如何在树莓派4B和STM32之间进行串口通信。 在树莓派4B上的代码(Python): ```python import serial # 创建串口对象 ser = serial.Serial('/dev/ttyS0', 115200) # '/dev/ttyS0'为树莓派4B上的默认串口,波特率为115200 # 向STM32发送数据 ser.write(b'Hello STM32!') # 从STM32接收数据 data = ser.readline() print(data) # 关闭串口连接 ser.close() ``` 在STM32上的代码(C语言): ```c #include "stm32f4xx.h" // 配置串口 void USART2_Init(void) { RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); GPIO_InitTypeDef GPIO_InitStruct; USART_InitTypeDef USART_InitStruct; // 配置GPIO引脚 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3; GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; GPIO_Init(GPIOA, &GPIO_InitStruct); // 配置USART2 USART_InitStruct.USART_BaudRate = 115200; USART_InitStruct.USART_WordLength = USART_WordLength_8b; USART_InitStruct.USART_StopBits = USART_StopBits_1; USART_InitStruct.USART_Parity = USART_Parity_No; USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART2, &USART_InitStruct); // 启用USART2 USART_Cmd(USART2, ENABLE); } // 发送数据到树莓派 void sendToRaspberryPi(const uint8_t* data, uint32_t length) { for (uint32_t i = 0; i < length; i++) { while (USART_GetFlagStatus(USART2, USART_FLAG_TC) == RESET); USART_SendData(USART2, data[i]); } } // 接收树莓派发送的数据 uint8_t receiveFromRaspberryPi(void) { while (USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == RESET); return (uint8_t)USART_ReceiveData(USART2); } int main(void) { USART2_Init(); // 接收树莓派发送的数据并回传 while (1) { uint8_t data = receiveFromRaspberryPi(); sendToRaspberryPi(&data, 1); } } ``` 需要注意的是,在树莓派4B上,使用的是/dev/ttyS0作为默认串口设备。在STM32上,需要根据硬件连接情况和引脚配置进行相应的修改。以上代码仅供参考,具体的串口连接方式和代码实现可能会因硬件和需求的不同而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值