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 更多代码示例仓库