【micropython】ESP32/ESP8266串口引脚重定向

当我们使用ESP32板件的时候,可能会使用多个串口,在micropython中,UART0用于REPL通讯,我们可以使用UART1和UART2。
在PINMAP中,UART1是引脚GPIO9和GPIO10,UART2是PIN16和PIN17
img

当我们直接使用ESP32的UART1时,会出现错误:
image-20210328204900378

短接16/17后,运行会出现错误:

image-20210328205154172

>>> uart1.write('a')
Guru Meditation Error: Core  0 panic'ed (IllegalInstruction). Exception was unhandled.
Memory dump at 0x401576fc: 0008e0d7 ffaf0000 ffffffff
Core  0 register dump:
PC      : 0x40157703  PS      : 0x00060031  A0      : 0x00000001  A1      : 0x3ffbe410  
A2      : 0x3ffbd6ac  A3      : 0x3ffbf774  A4      : 0x3ffbf770  A5      : 0x00000001  
A6      : 0x0000007f  A7      : 0x00000000  A8      : 0x80157700  A9      : 0x3ffbe3f0  
A10     : 0x3ffba780  A11     : 0x3ffba88c  A12     : 0x3ffbe424  A13     : 0x3ffba864  
A14     : 0x00000000  A15     : 0x3ffe5605  SAR     : 0x0000001f  EXCCAUSE: 0x00000000  
EXCVADDR: 0x00000000  LBEG    : 0x4000c349  LEND    : 0x4000c36b  LCOUNT  : 0xffffffff  

Backtrace:0x40157700:0x3ffbe410 0xfffffffe:0x3ffbe470 |<-CORRUPTED


ELF file SHA256: 56a3348b1921e984

Rebooting...
ets Jun  8 2016 00:22:57

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:4
load:0x3fff0034,len:5636
load:0x40078000,len:12696
load:0x40080400,len:4292
entry 0x400806b0
MicroPython v1.14 on 2021-03-28; ESP32 module with ESP32
Type "help()" for more information.

此时我们需要将UART1进行重定向

重定向

在ESP32中,可以将引脚进行重定向

UART.init(baudrate=9600, bits=8, parity=None, stop=1, *, …)

初始化函数具备两个参数

  • tx specifies the TX pin to use.
  • rx specifies the RX pin to use.

在初始化串口时,可以重新定向串口引脚位置,例如将UART1引脚重新定向至PIN32,PIN33

pin33:TX

pin32:RX

使用跳线短接PIN33,PIN32

初始化函数:

from machine import UART
uart1=UART(1)
uart1.init(115200,tx=32,rx=33)
uart1.write('abcde')
uart1.read()

运行结果:

>>> from machine import UART
>>> uart1=UART(1)
>>> uart1.init(115200,tx=32,rx=33)
>>> uart1.write('abcde')
5
>>> uart1.read()
b'abcde'
>>> 
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!我可以为您解答关于MicroPython ESP32和STM32之间串口通信的问题。 要实现ESP32和STM32的串口通信,您可以按照以下步骤进行操作: 1. 首先,确保您的ESP32和STM32设备上都已经安装了MicroPython固件。 2. 在ESP32上,您可以使用UART模块来设置串口通信。首先,导入UART模块: ```python from machine import UART ``` 3. 然后,通过实例化UART类来创建一个串口对象。您需要指定串口引脚和波特率等参数。例如,假设您使用的是ESP32的UART2引脚和波特率为9600: ```python uart = UART(2, baudrate=9600) ``` 4. 接下来,您可以使用串口对象的`write()`方法向STM32发送数据: ```python uart.write('Hello STM32!') ``` 5. 在STM32上,您需要编写相应的代码来接收ESP32发送的数据。具体的代码取决于您使用的STM32开发板和编程环境。一般来说,您可以使用STM32的UART库来配置和接收数据。例如,使用STM32Cube HAL库: ```c #include "stm32f4xx_hal.h" UART_HandleTypeDef huart2; void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { // 处理接收到的数据 // ... } int main(void) { // 初始化STM32串口 HAL_UART_MspInit(&huart2); // 开启接收中断 HAL_UART_Receive_IT(&huart2, rx_data, 1); while (1) { // 主循环代码 // ... } } ``` 请注意,上述代码仅为示例,具体的实现细节可能因您的硬件和需求而异。 希望这些信息对您有所帮助!如果您还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值