
AT指令处理程序及ESP8266模块驱动配送,含串口DMA空闲中断接收功能
5星
- 浏览量: 0
- 大小:None
- 文件类型:None
简介:
本项目提供了一套高效的AT指令处理方案和针对ESP8266模块的驱动,特别集成了串口DMA空闲中断接收机制,极大提升了数据传输效率与稳定性。
我编写了一个串口驱动程序,并使用了DMA来接收数据,在接收到一整包的数据后会产生一个空闲中断信号以表明接收完成。该程序还包含我自己实现的动态内存管理代码,以及与ESP8266设备相关的驱动。
在项目的测试阶段中,我们设置了460,800波特率,并且每秒传输30KB数据(每次1024字节),同时每一包需要应答15字节。在此过程中,AT指令的处理是通过多个缓冲级别来实现的:模块应答缓存级、等待响应缓存级以及被忽略的AT指令集缓存级。
对于那些在规定时间内没有收到回应的数据包会从内存中删除以释放资源;如果某个数据包包含已注册需要回调函数执行的特定AT命令,那么该缓冲区将会调用相应的处理程序。使用`strstr()`函数可以在接收到的数据包内搜索到具体的AT指令,即使这些指令被分隔在不同的数据包里。
下面是一些关键功能:
- `at_init`: 初始化串口和一些变量。
- `at_time_task`: 使用定时器每毫秒回调一次以计时超时的命令缓冲区以及等待超时的数量等信息。
- `at_clear_all`: 在设备启动后清除所有缓存级,释放内存资源。
- `at_processing`: 处理AT应答指令的超时和等待响应的数据包;此功能需要不断循环运行,并可以设置为定时器任务的一部分。在UCOS操作系统中,我创建了一个独立的任务来执行这个函数。
- `at_cmd_cb_hand`: 对已注册回调的命令进行处理的功能。
- `at_send_cmd` 和 `at_send_data`: 分别用于发送AT指令和数据;它们支持使用类似printf的格式化字符串(如%d等)。
- 其他功能包括忽略某些特定应答、取消被忽略的指令、注册新的AT指令回调函数,等待指定命令返回以及查询相关缓存长度。
这些功能的设计旨在提高效率,并确保即使在高负载情况下也能准确无误地处理和响应设备发出的各种命令。
全部评论 (0)


