乐鑫技术交流
直播中

李永每

8年用户 1523经验值
私信 关注
[问答]

如何在自己的程序中启用AT模块?

我正在使用 esp-open-sdk。

AT 命令适用于默认的 esp 软件(或使用 Espressif bin 文件刷入 esp 后)。
每次我用自己的程序覆盖默认软件时,esp 都不会对 AT 命令做出反应。

你知道如何在你自己的程序中启用AT模块吗?
可能吗?

乐鑫 SDK NONOS SDK API 文档介绍了 at_custom.h 和 at_init(),但看起来这是为了开发自定义 AT 命令。

我不想实现任何自定义 AT 命令,我只想通过 AT 命令(连接到接入点等)在我自己的程序中公开标准功能。

调用 at_init() 是正确的方法吗?

我试图自己验证它,但我面临以下问题。

这是我的草图:

#include
#include
#include

void ICACHE_FLASH_ATTR user_init(void)
{
   uart_div_modify(0, UART_CLK_FREQ / 115200);
   os_delay_us(1000);

   at_init();
   at_port_print("rnAT module initializedrn");
}



这是我在构建时遇到的错误:

xtensa-lx106-elf-gcc -I. -DICACHE_FLASH -mlongcalls   -c -o user_main.o user_main.c
xtensa-lx106-elf-gcc -Teagle.app.v6.ld  user_main.o  -nostdlib -Wl,--gc-sections -Wl,--start-group -lgcc -lmain -lnet80211 -lwpa -llwip -lpp -lphy -lc -lat -lairkiss -lwps -lsmartconfig -lespnow -lssl -Wl,--end-group -o user_main
/opt/esp-open-sdk/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.5/../../../../xtensa-lx106-elf/bin/ld:user_main部分“.text”不适合区域“iram1_0_seg”
/opt/esp-open-sdk/xtensa-lx106-elf/lib/gcc/xtensa-lx106-elf/4.8.5/../../../../xtensa-lx106-elf/bin/ld:区域“iram1_0_seg”溢出 3641 字节
collect2:错误:ld 返回 1 退出状态
: recipe for target 'user_main' failed
make: *** [user_main] Error 1


回帖(1)

其实znvm

2024-7-16 16:57:34
要在您的程序中启用AT模块,您需要遵循以下步骤。请注意,这里假设您已经熟悉ESP8266/ESP32开发和esp-open-sdk。

1. 首先,确保您的开发环境已经设置好,并且已经安装了esp-open-sdk。

2. 在您的程序中包含必要的头文件。对于AT模块,您需要包含以下头文件:

```c
#include "c_types.h"
#include "at.h"
#include "osapi.h"
```

3. 在您的程序中初始化AT模块。您可以使用`at_init()`函数来初始化AT模块。将此函数调用放在程序的初始化部分,例如在`user_init()`函数中:

```c
void user_init(void)
{
    // 其他初始化代码

    at_init(); // 初始化AT模块
}
```

4. 配置AT模块。在初始化AT模块之后,您需要配置它以接收AT命令。这通常涉及到设置UART接口的波特率和其他参数。您可以使用`os_printf()`函数来发送AT命令:

```c
os_printf("AT+UART_CUR=115200,8,1,0,3rn");
```

5. 处理AT命令响应。在发送AT命令后,您可能需要处理来自ESP模块的响应。您可以使用`at_port_recv()`函数来接收数据:

```c
#define AT_RECV_BUFF_SIZE 256
char at_recv_buff[AT_RECV_BUFF_SIZE];

int recv_len = at_port_recv(at_recv_buff, AT_RECV_BUFF_SIZE, 1000);
if (recv_len > 0)
{
    at_recv_buff[recv_len] = '';
    os_printf("Received: %srn", at_recv_buff);
}
```

6. 根据您的需求发送其他AT命令。现在,您可以使用`os_printf()`函数发送其他AT命令,例如连接到Wi-Fi接入点:

```c
os_printf("AT+CWJAP="yourSSID","yourPassword"rn");
```

7. 编译和烧录您的程序。使用esp-open-sdk编译您的程序,并将其烧录到ESP模块上。

8. 测试您的程序。在烧录程序后,您应该能够通过串口监视器发送AT命令并接收响应。

请注意,这里提供的示例仅用于演示如何在您的程序中启用和使用AT模块。您可能需要根据您的具体需求和ESP模块型号进行调整。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分