首页 > 其他分享 >合宙esp32c3开发板多软串口及GPIO测试

合宙esp32c3开发板多软串口及GPIO测试

时间:2023-05-14 17:34:26浏览次数:50  
标签:合宙 String 16 isListening 开发板 串口 print Serial

合宙esp32c3开发板共引出GPIO口如下:GPIO0~13,GPIO18~21

并有如下提示:

使用注意事项

  1. BOOT(IO09)管脚上电前不能下拉,ESP32会进入下载模式。

  2. 使用到IO08管脚进行设计,不建议外部直接下拉,因为在下载烧录时,IO08管脚为低电平,不能使用串口进行下载。

  3. IO12(GPIO12)、IO13(GPIO13)在QIO模式下为SPI信号SPIHD和SPIWP复用,为了增加可用GPIO数量,开发板选择采用2线SPI的DIO模式,IO12、IO13并未连接flash,使用自己编译的软件时需要注意配置flash为DIO模式。

  4. 外置SPI flash的VDD已链接至3.3V电源系统,使用时不需再配置其他电源,采用普通2线SPI通信方式,对应管脚如表4-3。

  5. GPIO11默认为SPI flash的VDD引脚,需要配置后才能作为GPIO使用。

 

由于有一应用需要5个串口,而esp23c3本身只有2个硬件串口,并且一硬串口用于调试,故须用SoftwareSerial库再建4个软串口。然后将剩余GPIO做了简单测试。

根据SoftwareSerial库,esp23c3的有效pin如下:return (pin >= 0 && pin <= 1) || (pin >= 3 && pin <= 7) || (pin >= 18 && pin <= 21); 共九个,每个软串口用2pin,故建4个软串口也就是极限了。

测试程序:

  1 #include <SoftwareSerial.h>
  2 SoftwareSerial uart1(4,5);//RX=d5,TX=d6
  3 SoftwareSerial uart2(6,7);//RX=d7,TX=d8
  4 SoftwareSerial uart3(18,19);//RX=d7,TX=d8
  5 SoftwareSerial uart4(0,1);//RX=d7,TX=d8
  6 String UART_String="";
  7 String UART2_String="";
  8 String UART3_String="";
  9 String UART4_String="";
 10 void setup() {
 11   Serial.begin(38400);
 12   uart1.begin(38400);
 13   uart2.begin(38400);
 14   Serial.print("k1 uart1.isListening():");
 15   Serial.println(uart1.isListening());
 16   Serial.print("k1 uart2.isListening():");
 17   Serial.println(uart2.isListening());
 18   Serial.print("k1 uart3.isListening():");
 19   Serial.println(uart4.isListening());
 20   Serial.print("k1 uart3.isListening():");
 21   Serial.println(uart4.isListening());
 22   uart3.begin(38400);
 23   uart4.begin(38400);
 24   Serial.print("k2 uart1.isListening():");
 25   Serial.println(uart1.isListening());
 26   Serial.print("k2 uart2.isListening():");
 27   Serial.println(uart2.isListening());
 28   Serial.print("k2 uart3.isListening():");
 29   Serial.println(uart3.isListening());
 30   Serial.print("k2 uart4.isListening():");
 31   Serial.println(uart4.isListening());
 32   pinMode(9, OUTPUT);
 33   pinMode(10, OUTPUT);
 34   pinMode(8, OUTPUT);    
 35 //  pinMode(11, OUTPUT);    //11一直高,不能做io用
 36   pinMode(12, INPUT_PULLUP);
 37   pinMode(13, INPUT_PULLUP);
 38 
 39  /* 
 40   uart1.listen();
 41   Serial.print("1 uart1.isListening():");
 42   Serial.println(uart1.isListening());
 43   Serial.print("1 uart2.isListening():");
 44   Serial.println(uart2.isListening());
 45 //uart2.listen();
 46   //uart1.begin(9600);
 47   Serial.print("2 uart1.isListening():");
 48   Serial.println(uart1.isListening());
 49   Serial.print("2 uart2.isListening():");
 50   Serial.println(uart2.isListening());
 51   */
 52 }
 53 void loop() {
 54   if(Serial.available()>0)
 55   { 
 56     char ch=Serial.read();
 57    uart1.print(ch );//读取电脑发送的数据,并通过软串口1发送
 58    uart2.print(ch );//读取电脑发送的数据,并通过软串口2发送
 59    uart3.print(ch );//读取电脑发送的数据,并通过软串口3发送
 60    uart4.print(ch );//读取电脑发送的数据,并通过软串口4发送
 61   }
 62   if(uart4.available()>0)
 63   {
 64     if(uart4.peek()!='\n')//在收到换行符前软串口接受数据并链接为字符串
 65     {
 66       UART4_String+=(char)uart4.read();
 67     }
 68     else
 69     {
 70       uart4.read();
 71       Serial.print("0/1UART4 data:");
 72       Serial.println(UART4_String);//将软串口4接受的数据打印输出至电脑
 73       UART4_String="";
 74     }
 75   }
 76   if(uart3.available()>0)
 77   {
 78     if(uart3.peek()!='\n')//在收到换行符前软串口接受数据并链接为字符串
 79     {
 80       UART3_String+=(char)uart3.read();
 81     }
 82     else
 83     {
 84       uart3.read();
 85       Serial.print("18/19UART3 data:");
 86       Serial.println(UART3_String);//将软串口3接受的数据打印输出至电脑
 87       UART3_String="";
 88     }
 89   }
 90   if(uart2.available()>0)
 91   {
 92     if(uart2.peek()!='\n')//在收到换行符前软串口接受数据并链接为字符串
 93     {
 94       UART2_String+=(char)uart2.read();
 95     }
 96     else
 97     {
 98       uart2.read();
 99       Serial.print("6/7UART2 data:");
100       Serial.println(UART2_String);//将软串口2接受的数据打印输出至电脑
101       UART2_String="";
102     }
103   }
104   if(uart1.available()>0)
105   {
106     if(uart1.peek()!='\n')//在收到换行符前软串口接受数据并链接为字符串
107     {
108       UART_String+=(char)uart1.read();
109     }
110     else
111     {
112       uart1.read();
113       Serial.print("4/5UART1 data:");
114       Serial.println(UART_String);//将软串口1接受的数据打印输出至电脑
115       UART_String="";
116     }
117   }
118   digitalWrite(9,digitalRead(12));
119   digitalWrite(8,digitalRead(12)||digitalRead(13));
120   digitalWrite(10,digitalRead(13));
121 }

测试结果:

k1 uart1.isListening():1
16:16:42.125 -> k1 uart2.isListening():1
16:16:42.125 -> k1 uart3.isListening():0
16:16:42.159 -> k1 uart3.isListening():0
16:16:42.159 -> k2 uart1.isListening():1
16:16:42.159 -> k2 uart2.isListening():1
16:16:42.159 -> k2 uart3.isListening():1
16:16:42.159 -> k2 uart4.isListening():1
16:19:16.611 -> 0/1UART4 data:config,set,reboot4
16:20:36.425 -> 4/5UART1 data:config,set,reboot1
16:22:23.313 -> 6/7UART2 data:config,set,reboot1
16:25:28.891 -> 18/19UART3 data:config,set,reboot3

[16:19:07.969]收←◆sdsdasasdf01

[16:19:16.586]发→◇config,set,reboot4

[16:20:26.745]收←◆dfhynjgf45

[16:20:36.409]发→◇config,set,reboot1

[16:22:15.097]收←◆zxddfdf67

[16:22:23.282]发→◇config,set,reboot1

[16:25:05.789]收←◆SoftwareSerial uart3(18,19)

[16:25:28.857]发→◇config,set,reboot3

4个软串口工作正常,另外GPIO11始终为高,不受控。

标签:合宙,String,16,isListening,开发板,串口,print,Serial
From: https://www.cnblogs.com/chengwh/p/17399708.html

相关文章

  • openEuler RISC-V 成功适配 LicheePi 4A 开发板,推动 RISC-V 生态发展
    近期,RISC-VSIG在LicheePi4A开发板上成功实现了欧拉操作系统的适配。目前,最新版本的openEulerRISC-V23.03V1镜像已在LicheePi4A开发板上可用,这一成果再次展现了openEuler在推动RISC-V生态发展过程中所取得的新突破。下载地址:https://mirror.iscas.ac.cn/openeuler-......
  • 电脑串口通讯调试台达VFD-M变频器的方法和教程 所需硬件
    电脑串口通讯调试台达VFD-M变频器的方法和教程所需硬件:USB转485转换头,台达VFD-M变频器。控制效果:通过串口调试助手,modbusrtu通讯方式,控制变频器的正反转,停止,频率设定,及运行数据的读取。发送内容包括串口调试软件,通讯方法和视频教程,plc调试神器。测试变频器modbusrtu通讯功能的有......
  • 欧姆龙CP1H与三菱变频器通讯 CIF01(232串口方式)可直接拿来实用了,欧姆龙CP1H 与变频器
    欧姆龙CP1H与三菱变频器通讯CIF01(232串口方式)可直接拿来实用了,欧姆龙CP1H与变频器modbus通讯案例采用的器件:欧姆龙CP1HPLC,2个CP1WCIF01(232串口单元),RS232转RS485转换器,三菱FR-E740变频器进行modbusRTU模式通讯。接线方式:PLC的两个串口单元CIF01,一个接MCGS触摸屏,一个接RS23......
  • 检测机项目,四工位转盘。 上位机用LABVIEW做的,工控机有2个串口和
    检测机项目,四工位转盘。上位机用LABVIEW做的,工控机有2个串口和仪表VISA通讯读取保存数据到EXCEL表格,工控机和西门子1200PLC走OPC通讯,PLC程序有完整的注释,有IO表,电气图纸,机器的操作说明书。ID:6930668367170660......
  • FPGA串口读写驱动代码,已经下板验证过,自发自收可验,单发单收可验,波特率可调。
    FPGA串口读写驱动代码,已经下板验证过,自发自收可验,单发单收可验,波特率可调。uartrs232rs422rs485均可使用该代码。ID:4950653779755928......
  • 野火RA6M5开发板 IIC-OLED测试学习
    野火RA6M5开发板IIC-OLED测试学习野火RA6M5开发板野火RA6M5开发板上的外部高速晶振为24M.【瑞萨RA4系列开发板体验】通过Uart串口烧写程序https://bbs.elecfans.com/jishu_2322246_1_1.htmlIIC配置参考文章瑞萨e2studio-IIC-12864OLED移植https://blog.csdn.net/qq_2......
  • STM32_9(USART串口)
    串口通信串口是一种应用十分广泛的通讯接口,串口成本低、容易使用、通信线路简单,可实现两个设备的互相通信单片机的串口可以使单片机与单片机、单片机与电脑、单片机与各式各样的模块互相通信,极大地扩展了单片机的应用范围,增强了单片机系统的硬件实力 硬件电路简单双向串......
  • omron欧姆龙CJ/CP程序 欧姆龙CP1H-XA,主机搭载CIF串口模块与从机PC LIN
    omron欧姆龙CJ/CP程序欧姆龙CP1H-XA,主机搭载CIF串口模块与从机PCLINK通信控制,全自动CE锂电池贴胶检测机,主从站进行轴控制,涵盖人机配方一键换型功能,故障记录功能,产量统计及OEE功能,优质的触摸屏程序模板,气缸报警功能块,真空报警功能块轴实时位置脉冲转毫米功能块等,可重复调用整条生......
  • kvm打开串口服务
    KVM安装这里就不做介绍了,我们直接进入主题。在使用console来连接虚拟机进行安装操作前,我们先将[email protected]服务打开(串口服务)开启服务:[root@localhost~]#[email protected]设置为开机启动:[root@localhost~]#systemctlenableserial-......
  • stm32 AES256加密 串口IAP升级 bootloader程序 通过上位机将keil生成的
    stm32AES256加密串口IAP升级bootloader程序通过上位机将keil生成的BIN文件进行AES加密,得到新的加密文件,加密需要自己设置秘钥,加密升级包直接烧录不能运行。通过串口升级上位机将加密包发送到单片机,单片机接收到数据后,会根据你事先设置好的秘钥,对数据进行还原,再写入。解密完成,程......