ARM嵌入式系统中AT91M40800串口通信模块设计与实现

需积分: 9 11 下载量 177 浏览量 更新于2024-11-10 收藏 42KB DOC 举报
在当前嵌入式系统设计中,以ARM作为内核的处理器芯片已经成为主导,尤其是在不加载操作系统的背景下,这可以显著降低开发成本和复杂度。本文主要关注的是基于ATMEL公司的AT91M40800芯片(具有ARM7TDMI内核)的嵌入式系统,该芯片内置USART接口,通过与MAX232接口配合实现串行通信。 文章首先介绍了系统的整体架构,包括利用USART接口构建的硬件连接,如图1所示的系统框图,展示了如何利用这些硬件资源来构建串口通信模块。开发过程中,作者选择了IAR Embedded Workbench作为开发平台,这是一个针对ARM嵌入式系统的集成开发环境。尽管C语言提供了丰富的函数库,但在无操作系统支持的环境中,开发者需要特别注意内存管理,避免malloc和free等函数可能导致的堆栈溢出问题,同时应限制函数嵌套和递归。 在串口通信模块的设计上,文章着重讲解了驱动函数的编写,例如COM_Open(打开串口)、COM_Close(关闭串口)、COM_PDC_Send(PDC模式发送)、COM_PDC_Recv(PDC模式接收)以及COM_CheckENDRX和COM_CheckENDTX等,这些函数用于控制串口的打开、关闭和数据传输。PDC模式是一种高效的通信模式,它允许数据在不占用CPU的情况下进行接收或发送,类似于计算机中的DMA(直接内存访问)。 由于嵌入式系统(下位机)与PC(上位机)之间的速度差异,通信策略采取上位机主动发送数据,下位机被动接收的方式,以确保数据的稳定传输。文章还提到了自定义通信数据包的设计,其中MAX_SIZE_PACKET是关键参数,它定义了数据包的最大尺寸。 本文深入探讨了在ARM无操作系统环境下,如何通过IAR开发平台,结合AT91M40800芯片的USART接口和MAX232接口,设计并实现高效的串口通信模块,以及相应的驱动函数和通信策略。这对于理解和实践嵌入式系统串行通信技术具有重要的参考价值。