如何设置树莓派皮科串行编程?USB串行输出

在本教程中,我们将学习如何使用树莓派的串口和显示一些文本。本教程仅适用于使用官方SDK编写C语言的树莓派Pico。我们将学习所有必要的步骤树莓派Pico串行编程和打印' Hello, World!'文本的串行输出。

Raspberry-Pi-Pico

树莓派的串口简介

使用Raspberry Pi Pico闪烁LED后,下一个逻辑步骤是使用串口打印一些文本,比如Hello World。这里的重点不是通过串口打印的文本,而是Raspberry Pi Pico将数据传输到串口的过程。

关于Raspberry Pi Pico Serial C SDK的美丽之处是,它定义了“stdio”风格的函数,如“printf”供我们使用。

在继续编程树莓派Pico串口之前,我们必须了解一点树莓派Pico的串口输入和输出。树莓派Pico的串行输入和输出可以是UART或USB CDC。

树莓派Pico有两个UART外设:UART0和UART1。当您使用' printf '函数打印数据时,默认的串口是UART,并且使用UART0外设。

注意:Pico SDK有一个单板配置文件,名为“Pico .h”,它将一些重要的引脚设置为不同操作的默认值,如UART、板载LED、I2C、SPI等。

根据该单板配置文件,UART0是默认的UART外设,UART0_TX Pin是GPIO 0 (g0), UART0_RX Pin是GPIO 1 (GP1)。看看树莓派Pico的引脚在“开始与树莓派Pico”教程中所有可能的GPIO引脚,可以配置为UART0或UART1引脚。

探索Hello World示例

在简要介绍Raspberry Pi Pico的串行编程之后,让我们不再探究串行输出的示例。在继续之前,如果你还没有通过使用C SDK对编程树莓派Pico进行初始设置,那么我强烈建议你参考之前的教程“用C编程树莓派Pico”。

在那篇教程中,我讨论了设置树莓派(这是树莓派电脑,不是Pico)的所有必要步骤,比如下载工具、SDK、示例和用Blinky示例编程Pico。

在' pico-examples '目录(在/home/pi/pico目录下)中,可以看到组织到几个目录中的所有示例的列表。在之前的教程中,我们研究了' blink '目录(以及相应的源文件)。

cd ~
cd pico / pico-examples
ls

如果你浏览目录列表,有一个名为' hello_world '的目录。这个目录包含串口编程的示例项目。

Raspberry-Pi-Pico-Serial-1

更改到' hello_world '目录并列出其内容。你可以看到它包含两个目录叫做' serial '和' usb '。如果您想要通过UART Port进行串行通信,那么请使用' serial '目录中的项目。如果你想使用树莓派的USB串口选项,然后转到' USB '目录。

cd hello_world
ls

Raspberry-Pi-Pico-Serial-2

首先,我们将在' serial '目录中看到项目,该目录执行时将打印文本' Hello, world!通过树莓派Pico的UART。更改到' serial '目录并列出内容。您可以在这个目录中看到两个文件,分别是' CMakeLists.txt '和' hello_serial.c '。

cd系列
ls

Raspberry-Pi-Pico-Serial-3

要查看' hello_serial.c '的源代码,可以通过下面的命令使用vim。

vim hello_serial.c

我复制了下面的代码,供您参考。

注意:要退出vim,键入':q '。

代码非常简单。在一些硬件初始化之后(对于UART或USB),程序打印' Hello, world!,以1000毫秒的延迟连续发送。如果您注意到这段代码,就会发现没有任何内容指定是使用UART还是USB。这样做的原因是它在CMake中配置。

使用CMake指令,我们可以将串行输出设置为UART或USB CDC(或两者)。事实上,如果你打开' hello_world '目录中的' usb '目录,你会看到两个文件:' CMakeLists.txt '和' hello_usb.c '。' hello_usb.c '的内容与' hello_serial.c '完全相同。

不同之处在于每个目录中对应的“CMakeLists.txt”文件。甚至不需要修改源代码,你基本上可以通过配置' CMakeLists.txt '文件启用UART或USB作为串行输出。

探索CMakeLists文件

在hello_world目录的' serial '目录下,使用vim打开' cmakellists .txt '文件。我复制了CMakeLists.txt的内容供您参考。

因为SDK中的默认配置是使用UART0作为串口,所以在这个' CMakeLists.txt '文件中没有什么重要的内容。如果你想看到实际的CMake指令启用和/或禁用UART和USB,那么我们必须看一下' USB '目录中的' hello_world '目录中的' CMakeLists.txt '文件。

假设您在' hello_world '目录的' serial '目录下,使用以下命令进入' usb '目录并打开' usb '目录下的' CMakeLists.txt '文件。

cd . .
cd usb
ls
vim CMakeLists.txt

Raspberry-Pi-Pico-Serial-4

我拷贝了' usb '目录下' CMakeLists.txt '的内容供您参考。

这个文件中有两行可以帮助将串行输出设置为UART或USB。它们是:

pico_enable_stdio_usb (hello_usb 1)
pico_enable_stdio_uart (hello_usb 0)

这些行将通过USB启用printf输出,并通过UART禁用printf输出。

注意:在未来的项目中,如果你想通过USB启用' printf '输出,那么你必须在该项目对应的' CMakeLists.txt '文件中包含这些行。

构建Hello World示例

现在我们已经看到了如何配置CMake将输出设置为UART或USB,让我们继续在' hello_world '目录中构建项目。如果您还记得“blink”项目,那么构建过程也是一样的。

转到' pico-examples '目录中的' build '目录,在这个目录中更改为' hello_world '目录。

cd ~
cd pico / pico-examples
ls
cd构建
ls
cd hello_world

Raspberry-Pi-Pico-Serial-5

使用make命令启动构建过程。还可以使用-j选项指定并行作业的数量。

让阁下

Raspberry-Pi-Pico-Serial-6

它将花费几秒钟来完成构建。这将在' hello_world '目录' serial '和' usb '中构建这两个示例。

Raspberry-Pi-Pico-Serial-7

若要查看生成文件的列表,请更改到单个项目的构建目录。例如,让我们看看为' usb '生成的文件例子。

ls
cd usb
ls

Raspberry-Pi-Pico-Serial-8

您可以看到以下四个目标文件' usb '示例项目:

  • hello_usb.bin
  • hello_usb.elf
  • hello_usb.hex
  • hello_usb.uf2

类似地,' serial '项目也包含在' /pico/pico-examples/build/hello_world/serial '目录下的四个目标文件。

  • hello_serial.bin
  • hello_serial.elf
  • hello_serial.hex
  • hello_serial.uf2

闪烁的树莓派

我们将使用USB的例子,因为它更方便查看串行输出。我已经讨论了如何上传程序到树莓派Pico在之前的教程。西汉姆必威但为了提醒大家,我将再简单地回顾一下这些步骤。

按住“BOOTSEL”按钮,同时将树莓派Pico插入主机(我的情况是树莓派)。这将使树莓派Pico作为一个可移动的存储设备称为RPI-RP2。

我还解释了一个简单的小技巧,可以添加一个按钮来重置树莓派Pico,这样每次你想上传一个程序时,就不需要再拔下或重新插拔了。

浏览到Hello World USB项目构建目录(home/pi/pico/pico-examples/builds/hello_world/ USB),并拖放' hello_usb. dll '。uf2 '文件到RPI-RP2设备。Raspberry Pi Pico重新启动并开始执行代码。

Raspberry-Pi-Pico-Serial-9

如何查看USB输出?

我们知道,在闪烁树莓派皮科后,它开始运行程序。但是如何查看USB输出呢?我们必须使用一种叫做“Minicom”的特殊工具。要安装' minicom ',在终端中使用以下命令。

Sudo apt安装minicom

Raspberry-Pi-Pico-Serial-10

我的电脑(树莓派)已经安装了minicom。

在终端中输入以下命令打开串口:

minicom -b 115200 -o -D /dev/ttyACM0

当你按下enter键,minicom打开波特率为115200的串口,你可以看到“Hello, world!”,不断地被打印出来。

Raspberry-Pi-Pico-Serial-11

按“Ctrl+a”和“x”退出。

注意:我还没有讨论如何通过UART查看树莓派Pico的输出,因为使用USB非常简单。但如果你也对此感兴趣,那么我将更新本教程,增加一个新的章节,介绍Raspberry Pi Pico的UART上的串行输出。

结论

一个完整的教程在树莓派皮科串口编程在这里解释。您学习了如何配置树莓派Pico生成串行输出,如何使用CMake将串行输出定向到UART或USB,安装必要的工具,并最终查看通过USB打印的printf输出。

留下一个回复

您的电子邮件地址将不会被公布。必填字段被标记*