基于Cortex—m3为内核的开发板设计与制作

更新时间:2023-09-03 06:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于Cortex—m3为内核的开发板设计与制作

作者:丁红 王怀德

来源:《现代电子技术》2012年第18期

摘要:为了实现以CortexM3为内核制作一个实验开发板,用于教学、竞赛、工控开发,通过一系列的模拟仿真和研究分析,设计了开发板的电路原理图,分析了以太网的结构、原理、初始化过程,USBOTG的设计思路、电路原理图和初始化过程以及SD卡驱动电路的设计过程,并制作了可实际使用的电路板。整个开发板主要能够为学生的课程设计、毕业设计、创新活动提供良好平台。

关键词:CortexM3;LPC1768;以太网驱动电路;USBOTG驱动电路;SD卡驱动电路 中图分类号:TN91934文献标识码:A文章编号:1004373X(2012)18001903

ARMCortexM3处理器是一款具有极高运算能力和中断响应能力的处理器内核,能够实现8位和16位处理器级数的代码存储密度。该内核体积很小,从而使它的封装更为小型,成本更为低廉,应用更为广泛。NXP(恩智浦半导体)公司的LPC1700系列ARM是基于

CortexM3内核的微控制器,是为嵌入式系统应用而设计的高性能、低功耗的32位微处理器,适用于仪器仪表、工业通信、电机控制、灯光控制、报警系统等领域。它的操作频率高达120MHz,采用3级流水线和哈佛结构,带独立的本地指令和数据总线,代码执行速度高达

1.25MIPS/MHz,同时包含1个支持随机跳转的内部预取指单元[1]。本文设计了以LPC1768为控制器核心的开发板,完成了以太网、USBOTG、SD卡驱动等控制电路设计及程序驱动设计。

1以太网驱动电路的设计

以太网模块包含一个功能齐全的10Mb/s或100Mb/s以太网MAC(媒体访问控制),以太网MAC通过使用DMA硬件加速功能来优化其性能。以太网模块具有大量的控制寄存器组,可以提供:半双工/全双工操作、流控制、控制帧、重发硬件加速、接收包过滤以及LAN上的唤醒等。利用分散集中式(ScatterGather)DMA进行自动的帧发送和接收操作,减轻了CPU的工作量[2]。

以太网模块是一个AHB主机,驱动AHB总线矩阵。通过矩阵,它可以访问片上所有的RAM存储器。建议以太网使用RAM的方法是专门使用其中一个RAM模块来处理以太网通信。那么该模块只能由以太网和CPU,或许GPDMA进行访问,从而获取以太网功能的最大带宽[3]。

以太网模块使用简化的媒体独立接口(RMII)协议和片上媒体独立接口管理(MIIM)串行总线、还有管理数据输入/输出(MDIO)来实现与片外以太网PHY之间的连接。本设计以太网PHY所采用的芯片是KSZ8041TL[4]。

在以太网模块的初始化过程中,软件需完成:

(1)将软件复位条件从MAC中移除;

(2)通过MAC的MIIM接口配置PHY;

(3)选择RMII模式;

(4)配置发送和接收DMA引擎,包括描述符数组;

(5)配置MAC中的主机寄存器(MAC1,MAC2等等);

(6)使能接收和发送数据通道[5]。

软件通过对MAC的MCFG,MCMD,MADR寄存器进行编程来读写PHY寄存器。写数据应该写入MWTD寄存器,读数据和状态信息可以从MRDD和MIND寄存器中读取。以太网模块支持RMIIPHY。在初始化过程中,软件必须通过对命令寄存器进行设置来选择RMII模式[7]。

在切换到RMII模式之前,默认的软件复位(MAC1寄存器的位15)必须失效。在该操作过程中需要运行phy_ref_clk,且将其内部连接上。

设备驱动软件通过分配存储器中的“描述符数组”和“状态数组”来完成对发送和接收DMA引擎的初始化。发送和接收功能各自都有专门的描述符和状态数组。这些数组的基址需在TxDescriptor/TxStatus和RxDescriptor/RxStatus寄存器中编程。数组中描述符的数目要与数组中状态的数目相等[8]。

以太网控制器的初始化代码如下:

2USBOTG驱动电路设计

对于OTG功能,必须将OTG收发器连接到LPC1700系列CortexM3微控制器设备,使用USB信号的内部USB收发器,并仅使用OTG功能的外部OTG收发器(见图1)。该选项在VP/VM模式下使用内部收发器。

电路给出了构建OTG功能时需要在基础USB外设上添加的电路,电路中的通用串行总线控制器可以是LPC1768和USBSIE(串口引擎);为总线提供电源的外部设备需要一路3.3V

本文来源:https://www.bwwdw.com/article/31ri.html

Top