C#开发ESP32E(2)串口配置使用

1.安装外设配置库(nanoFramework.Hardware.Esp32)和串口使用库(nanoFramework.System.IO)

1.1 nanoFramework.Hardware.Esp32介绍

该库可配置I2C,SPI,Serial ports(串口),PWM channels,ADC、DAC(模数转换和数模转换)

配置函数介绍

Configuration.SetPinFunction(int pin, DeviceFunction value);
通过Configuration的SetPinFunction函数设置外设引脚功能(配置寄存器)
参数1为引脚号,参数2为设备功能

eg:
Configuration.SetPinFunction(16, DeviceFunction.COM2_RX);
设置16号引脚功能为COM2的RX

1.2 nanoFramework.System.IO介绍

核心为SerialPort类,具体用法跟平时C#使用串口通信差不多

查看可用串口
SerialPort.GetPortNames();
返回可用的串口号(不是硬件上的串口号下点详细介绍)

1.3 可用串口

根据官方文档介绍COM1为固定占用用于调试信息了,因此还剩COM2,COM3可用。

实际硬件介绍

我这里对应的COM1是这个Typec口,因此后续查看串口效果改用COM2口。

蓝色区域为COM1固定占用,红色区域为选取的COM2,对应的引脚为16,17。

2.代码使用

完整代码

点击查看代码
public class Program
    {
        static SerialPort _serialDevice;
        public static void Main()
        {
            Configuration.SetPinFunction(16, DeviceFunction.COM2_RX);
            Configuration.SetPinFunction(17, DeviceFunction.COM2_TX);
            Debug.WriteLine("Hello from nanoFramework!");

            // 获取可用串口
            var ports = SerialPort.GetPortNames();

            Debug.WriteLine("Available ports: ");

            foreach (string port in ports)
            {
                Debug.WriteLine($" {port}");
            }

            _serialDevice = new SerialPort("COM2");

            // 设置参数
            _serialDevice.BaudRate = 9600;
            _serialDevice.Parity = Parity.None;
            _serialDevice.StopBits = StopBits.One;
            _serialDevice.Handshake = Handshake.None;
            _serialDevice.DataBits = 8;

            // 设置缓冲区大小
            _serialDevice.ReadBufferSize = 2048;

            // 使用以上设置打开串口
            _serialDevice.Open();

            _serialDevice.WriteTimeout = 500;

            while (true)
            {
                _serialDevice.WriteLine(" hello from nanoFramework!");
                Thread.Sleep(2000);
            }

        }
    }

3.官方文档

3.1 nanoFramework.Hardware.Esp32 API介绍

(https://docs.nanoframework.net/api/nanoFramework.Hardware.Esp32.Configuration.html)

3.2 Esp32介绍

(https://docs.nanoframework.net/content/esp32/esp32_pin_out.html#serial-ports)

3.3 更多代码示例仓库

https://github.com/nanoframework/Samples

posted @ 2023-05-18 15:40  SharpThreed  阅读(388)  评论(14编辑  收藏  举报