ARM学习心得etc
- 格式:docx
- 大小:271.48 KB
- 文档页数:6
ARM学习心得1.ARM是32位精简指令集处理器2.ARM7 3级流水线冯.诺依曼结构3.ARM9 5级流水线哈佛结构4.只有Load/Store指令可以访问存储器5.支持数据cache和指令cache6.处理器模式:(1).用户模式(usr)(2).快速中断模式(fiq)(3).外中断模式(irq)(4).管理模式(svc)(5).中止模式(abt)(6).未定义模式(und)(7).系统模式(sys)7.工作模式:(1).ARM指令集 32位(2).Thumb指令集 16位8.ARM处理器含有37个寄存器,包括31个通用寄存器和6个状态寄存器9.R13(SP-堆栈寄存器)R14(LR-链接寄存器)R15(PC-程序计数寄存器)CPSR(当前程序状态寄存器)SPSR(备份程序状态寄存器)10.小端模式:高地址位存放高数据位,低地址位存放低数据位;大端模式与之相反11.寻找方式:(1).立即数寻找立即数为8位以#开头(2).寄存器寻找(3).寄存器移位寻找(4).寄存器间接寻找(5).基址变址寻找(6).多寄存器寻找(7).相对寻找(8).堆栈寻找12.常用指令解析:(1).MOV MOV Rd,operand2 只适用于寄存器与寄存器或寄存器与立即数之间(2).MOVS 影响CPSR中的标志位(3).MVN MVN Rd,operand2 数据取反传送(4).LSL LSL n 逻辑左移(5).LSR LSR n 逻辑右移(6).ASL ASL n 算数左移相当于乘2(7).ASR ASR n 算数右移相当于除2(8).ROR ROR n 循环右移(9).RRX RRX n 带扩展的循环右移(10).ADD ADD Rd,Rn,operand2 加法(11).ADC ADC Rd,Rn,operand2 Rd=Rn+operand2+c 带进位的加法加上CPRS的C位(12).SUB SUB Rd,Rn,operand2 减法(13).SBC SBC Rd,Rn,operand2 Rd=Rn-operand2+c-1 带进位的减法(14).RSB RSB Rd,Rn,operand2 Rd=operand2-Rn 逆向减法(15).RSC RSC Rd,Rn,operand2 Rd=operand2-Rn+c-1 带进位的逆向减法(16).AND AND Rd,Rn,operand2 Rd=Rn and operand2 逻辑与(17).ORR ORR Rd,Rn,operand2 Rd=Rn or operand2 逻辑或(18).EOR EOR Rd,Rn,operand2 Rd=Rn xor operand2 逻辑异或(19).BIC BIC Rd,Rn,operand2 Rd=Rn and not operand2 位清零(20).CMP CMP Rd,operand2 比较,影响CPSR标志位(21).CMN CMN Rd,operand2 负数比较,影响CPSR标志位(22).TST TST Rd,operand2 位测试,影响CPSR标志位(23).TEQ TEQ Rd,operand2 相等测试,影响CPSR标志位(24).MUL MUL Rd,Rn,operand2 乘法 32位(25).MLA MLA Rd,Rn,Rm,operand2 Rd=Rn*Rm+operand2 乘加 32位(26).UMULL UMULL Rd,Rn,Rm,operand2 Rd=[Rm*operand2](0-31) Rn=[Rm*operand2](32,63) 64位无符号乘法(27).SMULL SMULL ... 64位有符号乘法(28).UMLAL UMLAL Rd,Rn,Rm,operand2 Rd=[Rm*operand2](0-31)+Rd Rn=[Rm*operand2](32-63)+Rn 64位无符号乘加(29).SMLAL SUMLAL... 64位有符号乘加(30).LDR LDR Rn,operand2/=start/=0x010201 加载内存数据(31).STR STR Rn,operand2/=start/=0x012010 数据存入内存(32).LDM 从内存中加载多个数据(33).STM 存储多个数据到内存(34).B B Rn 跳转(34).BL 带链接的跳转改变R14(35).BX 带状态切换的跳转(36).BLX 带链接和状态切换的跳转......13.运用于STM和LDM的模式:(1).IA 每次传送后增加地址(2).IB 每次传送前增加地址(3).DA 每次传送后减少地址(4).DB 每次传送前减少地址(5).FD 满递减堆栈STMFD SP!,{R1-R4} ;将R1-R4的数据存放到SP所指的内存中高寄存器放在高地址位,SP自增4当前SP不存放数据(6).ED 空递减堆栈当前SP存放数据(7).FA 满递增堆栈(8).EA 空递增堆栈14.条件标志位:编码扩展表示式标志位影响意义0000 EQ Z置1 等于操作数0001 NE Z清0 不等于操作数0010 CS/HS C置1 进位/无符号数大于或等于操作数0011 CC/LO C清0 无进位/无符号数小于操作数0100 MI N置1 负数0101 PL N清0 正数或00110 VS V置1 溢出0111 VC V清0 无溢出1000 HI C置1且Z清0 无符号数大于操作数1001 LS C清0且Z置1 无符号数小于或等于操作数1010 GE N等于V 有符号数大于或等于操作数1011 LT N不等于V 有符号数小于操作数1100 GT Z清0且N等于V 有符号数大于操作数1101 LE Z置1且N不等于V 有符号数小于或等于操作数1110 AL 任何状态总是,常忽略1111 NV 从不使用 ---15.子程序参数传递规则:当参数不超过4个时用R0-R3来存放返回值存放在R0中,存放顺序:寄存器编号由小到大当参数超过4个时,前面4个参数按上面规则存放,后面的参数按参数传递顺序右后往前依次入栈16.CPSR结构:31 30 29 28 27 ... 7 6 5 4 3 2 1 0N Z C V Q I F TN:Negative 负数标志位N=1:结果为负数N=0:结果为正数或零Z: Zero 零标志位 Z=1:结果为0 Z=0:结果不为0C: Carry 进位标志位 C=1:C=0:... 有四种情况V: oVerflow 溢出标志位 V=1:V=0:... 有两种情况I:IRQ中断使能/失能 I=1:失能IRQ I=0:使能IRQF:FIQ中断使能/失能 F=1:失能FIQ F=0:使能FIQT:状态标志位 T=1:Thumb状态 T=0:ARM状态4-0:工作模式:10000 usr10001 fiq10010 irq10011 svc10111 abt11011 und11111 sys17.ARM工作模式间的切换(1).切换方式:软件切换、硬件切换(2).除usr外其他的都叫特权模式,在特权模式下可以任意切换其他模式(3).在usr模式下只有通过硬件的方法切换到其他工作模式(4).除usr和sys,其他模式都叫异常模式(5).机器上电复位时,处于svc模式18:C语言和ARM汇编混用的几种方法:(1).内联汇编:在C函数中插入汇编语句使用arm或__arm关键字(2).嵌入式汇编:.........。
arm实训总结标题:ARM实验实训总结报告一、前言本次ARM实验实训是我对嵌入式系统设计与开发的一次深度实践。
通过这次实训,我对ARM微处理器的结构原理、指令集以及基于ARM架构的嵌入式系统开发流程有了更为直观和深入的理解。
二、实训内容回顾在实训过程中,我们主要围绕ARM Cortex-M系列处理器进行学习和实践。
首先,从理论层面,我们系统地学习了ARM体系结构、工作模式、存储器管理、异常处理等基础知识;其次,在实践环节,我们使用Keil MDK等开发工具进行了汇编和C语言编程,完成了中断服务程序设计、定时器应用、串口通信等多个实战项目。
三、实训过程及收获1. 硬件操作与调试:通过对ARM开发板的实际操作,我亲身体验了硬件连接、程序下载、在线调试等环节,对硬件底层的工作原理有了更清晰的认识,也锻炼了我的动手能力和问题解决能力。
2. 软件编程与实现:通过编写和调试ARM汇编和C语言代码,我对ARM的指令集、寄存器配置、中断处理机制等有了深入理解,同时也提升了我的编程技能和逻辑思维能力。
3. 团队协作与交流:在完成复杂项目的过程中,我们分工合作,共同探讨解决方案,这不仅提高了我在团队环境下的工作效率,也锻炼了我与他人沟通协调的能力。
四、实训反思与展望尽管在实训过程中取得了一定的进步,但我也意识到自身在某些方面还有待提升,如对实时操作系统RTOS的理解与应用、硬件驱动程序的设计与优化等。
未来的学习中,我将深化对这些领域的研究,努力提升自己在嵌入式系统开发方面的综合能力。
总结,此次ARM实训是一次宝贵的实践经历,它使我对嵌入式系统的软硬件协同设计有了更深层次的认知,并为我后续从事相关领域的工作或研究打下了坚实的基础。
五、结语ARM实训不仅是对我现有知识的检验,更是对未来专业技能的磨砺。
我会珍视这份实践经验,以此为契机,持续探索并深化对嵌入式系统尤其是ARM架构技术的研究,为我国的科技创新事业贡献自己的力量。
arm实验心得体会在进行arm实验的过程中,我收获了很多知识和经验,也体会到了实验的重要性和意义。
以下是我关于arm实验的心得体会。
首先,在实验中我学习到了关于arm架构的基本知识。
arm架构是一种广泛应用于手机、平板电脑和嵌入式领域的处理器架构。
在实验中,我了解到arm指令集的特点和分类,学会了如何通过汇编语言来编写arm程序。
我能够区分不同的arm寄存器,并熟练运用指令进行数据的读取和存储。
这些知识对于我进一步学习和了解计算机体系结构非常重要。
其次,实验也让我体会到了手动编写程序的乐趣和挑战。
在arm实验中,我需要亲自编写指令并进行调试,这与平时使用高级语言编程的经验完全不同。
手动编写程序需要思考指令的功能和执行顺序,同时需要十分严谨地进行调试和错误修复。
这些挑战锻炼了我的逻辑思维和问题解决能力,同时也为我今后的编程学习打下了良好的基础。
另外,实验还让我深刻认识到了实践的重要性。
光靠理论知识是无法真正掌握一个技能的,必须通过实践来加深理解和应用。
通过亲自编写arm程序,我更加深入地了解了计算机的工作原理和指令执行的过程。
实验也让我意识到了实际操作中可能出现的各种问题和错误,从而提醒我在编程过程中要更加仔细和谨慎。
我在实验中多次因为一小处错误导致程序无法正确执行,这让我更加重视细节和精确性。
此外,实验还提高了我的团队合作能力。
在实验中,我需要与同学们共同研究和解决问题。
通过合作,我们相互帮助、交流意见,并共同进步。
我们互相监督和鼓励,共同完成实验目标。
这锻炼了我的沟通能力和合作能力,也培养了我对团队合作的重视和珍惜。
最后,实验让我对计算机领域的未来充满了信心和热情。
通过亲身参与arm实验,我深刻认识到计算机技术在现代社会中的重要性和广泛应用。
我对于未来计算机技术的发展和创新充满了期待,并希望自己能够为这个领域的进步做出一份贡献。
实验不仅是对知识的检验和巩固,更是对自己兴趣和激情的验证和启发。
总之,通过这次arm实验,我收获了很多知识和经验,也体验到了手动编写程序的乐趣和挑战。
学习嵌入式系统(ARM)的一些想法在学习单片机的时候学的比较快,在学51 和AVR 的时候都可以说是得心应手。
可能就是手前面学习的影响,认为学ARM 也会比较顺利。
到开始学习ARM 的时候才知道要入门是多么“痛苦”,每天就对着教程、资料折磨。
没有多少是学的明白的,完全不知道怎么学起。
它涉及的内容和知识太多了。
我整理了一下这段时间的学习资料,我已经看完的和我接下来要用的,总共29 G,我前10 年读书用的资料都可能没有这么多。
学ARM 不能再和以前学单片机那样,刚开始时,不能说从哪里开始学。
只有拿着资料、教程慢慢磨。
久了就积累了一定的知识就会明白了,这个过程的滋味只有做过才能体会。
前些天也实在很困惑无从下手。
然后就下定决心从Entry 入手,从CPU 的第一条指令开始,跟着走下去。
这样做的阻力更加大,像在Bootload 里面我就只会读C 和汇编,Makefile、连接脚本、脚本文件、配置文件就没有办法读了。
所以根本就不明白它是这么编译的。
很多人都说不要把ARM 当做单片机来学。
我觉得学嵌入式应该分开内容学习,第一步就是要把它当单片机学起。
把它当单片机学就是要彻底把开发板上的硬件驱动程序全部都学会了(液晶、Nandflash、Norflash、网卡、声卡等)。
对片上资源(串口、usb、ad、DMA 等等)的驱动和CPU 的汇编指令熟练掌握。
这样就为移植bootload 打下了扎实的基础。
把硬件搞定后就学软件了。
学习Linux 系统也是个漫长的过程啊!!!!刚刚见到Linux 的时候,“天啊这东西这么能用啊”。
要学会Linux 的命令和操作(各个软件的操作、各项参数的配置),会使用Linux 了就学习Linux 下的编程(shell 编程、Makefile、连接脚本、C 编程),然后就深入学习Linux 的内核代码,把Linux 的目录结构弄熟了。
把它里外都搞定了。
arm心得.第一篇:arm心得.心得体会(许晶)本次实习时间是一周,我们组所选的题目是直流电动机转速控制设计,其要求有:硬件部分要求在LPC2100系列ARM的最小系统的基础上,设计通过按键控制直流电动机速度的驱动电路,要求通过LPC2100内置的PWM发生器控制直流电动机;并将电动机速度通过串口送至PC机。
软件部分要求设计以上功能的脱机运行程序,并在试验室调试通过。
我负责的是硬件部分。
首先我将系统分为两部分。
一是电动机控制驱动电路;二是ARM最小系统。
在电动机驱动中,直流电机控制使用了H桥驱动电路,控制口线为P0.21、P0.22。
在ARM 最小系统中,分为5部分:电源电路、复位电路、JTAG接口电路、RS232串口电路、时钟电路。
在制作原理图中,我查阅了实验指导书和课本。
我所选用的是2114板子。
因为LPC2114是基于一个支持实时仿真和跟踪的16/32位ARM7TDMI-STM CPU的微控制器,并带有128/256 k字节(kB)嵌入的高速Flash存储器。
128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。
对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%,而性能的损失却很小。
在这个过程中,我注意到了许多问题。
通过最小系统的制图,我对一些问题逐渐了解,不像刚开始学习一样,感觉什么也不懂,硬装知识。
我画了5部分,这几个部分让我对书上的内容更加深了学习。
如:时钟电路中,我就把时钟系统和晶体振荡两节课程,重新学习。
而在软件设计中,在我的搭档编程完之后,我也对程序进行了研究。
在主程序中,我们用的是i、j表示速度与方向,正转为“+”、反转为“—”;最小速度为1,最大速度为4。
先让电机正向慢慢的加速,加到正传的最大速后,在按下就变成反转,然后在依次加速,往返循环,直至没有按键按下。
所运用的是,调节PWM的占空比就能达到电机的速度调节。
我们组在硬件中遇到的问题并不多,主要是在画各部分原理图时找器件很不熟练,不能很快的找到。
通过这次模具设计,本人在多方面都有所提高。
通过这次设计,综合运用本专业所学课程的理论和实际知识进行设计,提高学生独立工作能力,巩固与扩充了ARM等课程所学的内容,掌握ARM设计的方法和步骤,同时各科相关的课程都有了全面的复习,独立思考的能力也有了提高。
在短短的一个星期中,让我们初步让理性回到感性的重新认识,也让我们初步的认识了这个社会,对于以后做人所应把握的方向也有所启发,体现出团队课程设计的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。
本次实习使我亲身感受了所学知识与实际的应用,理论与实际的相结合,让我们大开眼界,也算是对以前所学知识的一个初审吧!这次生产实习对于我们以后学习、工作也真是受益菲浅。
通过这次为期一周的课程设计,在不断的失败和努力中,锻炼了我们的动手能力,培养了团队协作及永不放弃、不屈不挠的精神。
并且使我们对ARM的知识得到了进一步的提高,同时也补充了我们对电机控制的相关知识。
这次课程实际仅仅是基于ARM微处理器应用的一个开端,在这期间我们还有很多的不足,比如不能完成引脚的最优连接,不能完成硬件系统和软件程序的自主设置和编写,但我相信通过以后对ARM嵌入式系统的继续学习,自己会得到进一步的提高。
我会把这此实习作为我人生的起点,在以后的工作学习中不断要求自己,完善自己,让自己做的更好。
学习arm的心得体会篇一:ARM学习心得体会ARM四天学习心得体会1.懂得了如何使用IAR的软件使用,使用前要先进行环境的设置,具体见文档IAR使用说明。
2.第一次是学习点亮LED灯,在点亮LED灯中学习到如果要点亮LED灯必须学会调用已经写好的库函数,对系统进行初始化SystemInit ;对IO口进行初始化GPIOInit ;,还得对GPIO口的设置GPIOSetDir--设置GPIO口为输入为1的IO口,设置完成后就可以对IO口成为输入输出方向,当要点亮LED灯时,要使用到GPIOSetValue();函数,当为确定好某个IO口确定时,后一个为0时可以设置LED灯为点亮了,然后就可以对IO口进行设置了,用法和单片机基本一致,具体可以参考程序《闪灯》。
3.蜂鸣器的鸣响很简单,就是首先对蜂鸣器的IO端口进行设定以驱动蜂鸣器,GPIOSetDir( PORT3, 3, 1 ); 当蜂鸣器需要鸣响时,直接对PORT3_3端口进行赋值0《GPIOSetValue( PORT3, 3, 0 ); 》不让蜂鸣器鸣响则是(GPIOSetValue( PORT3, 3, 01); )就可以了。
4.串口的使用串口开始时要初始化出口,并且通过串口打印前会把数据存在数据缓存区里面,如果我们需要通过输入值来控制ARM板子的功能时,可以读取缓存区(UARTBuffer[UARTCount-1])的内容(缓存区的内的数据都是字符型数据【char】)然后就可以通过输入的值来处理,可以用中断方式,也可以用查询方式,可参考串口中断程序5.中断的使用使用中断时需要初始化中断例如:init_timer32(TEST_TIMER_NUM,TIME_INTERVAL); // 初始化定时器 enable_timer32(TEST_TIMER_NUM); //使能定时器使定时器工作 LPC_SYSCON->SYSAHBCLKCTRL |= (1篇二:学习ARM的心得体会arm四天学习心得体会1.懂得了如何使用iar的软件使用,使用前要先进行环境的设置,具体见文档iar使用说明。
arm9实验心得体会在进行ARM9实验过程中,我积累了许多宝贵的经验和体会。
首先,通过实践我深入了解了ARM9处理器的结构和工作原理。
在实验中,我了解了ARM9处理器的寄存器、指令集和存储结构,并学会了如何进行调试和优化程序。
其次,我学会了使用ARM板进行硬件连接和软件编程。
在实验中,我通过连接实验板和计算机,在Linux环境下进行软件开发。
我学会了使用交叉编译器进行开发,以及编写C语言代码和汇编代码。
通过实验,我对嵌入式系统的开发有了更深的了解。
另外,我还学会了使用ARM调试工具进行程序调试。
在实验中,我学会了使用gdb调试工具和openocd调试工具,对程序进行单步调试和查看寄存器变化。
通过调试,我可以更好地理解程序的执行过程和优化程序的性能。
此外,通过实验我也了解了嵌入式系统的特点和应用。
嵌入式系统具有体积小、功耗低等特点,因此在很多应用领域都有广泛的应用,比如智能家居、车载系统等。
在实验中,我了解了嵌入式系统的应用场景和技术要求,对未来的就业和学习方向有了更明确的认识。
总之,通过ARM9实验,我不仅学到了专业知识,还培养了动手实践的能力和团队合作的意识。
在实验中,我经常面临各种问题和挑战,需要通过合作和沟通才能解决。
这让我意识到在工程实践中,团队合作和交流的重要性,以及自己在团队中的角色和责任。
这些经验对我今后的学习和工作都有很大的帮助。
通过这次ARM9实验,我不仅学到了专业知识,还学会了解决问题和团队合作的能力。
这些经验和体会对我今后的学习和工作都有着深远的影响。
我相信,在未来的学习和工作中,我会继续努力,不断提升自己的技术水平和综合能力,为社会做出更大的贡献。
从开始搞ARM到现在将近半年多了,第一个项目搞得有些眉目了,终于感觉像是入门了,半年来,有开始的新鲜,中间的苦闷,到最后的欣喜。
其中过程可谓曲折离奇,遇到了很到前人没有遇到过的疑难杂症,当然很多时候是因为我的粗心酿成的。
曾经也有过放弃的念头,那个焦虑,像得了狂躁症一样。
后来下定决心即使绩效没了,工作丢了也要搞完它。
其实在这个过程中,看到跟我一样的很多新人在论坛上发帖求助,可是很多时候回者寥寥无几,可能问题太幼稚,也可能问题描述的不清楚。
我发过很多帖子,甚至直接骚扰了网上很多的牛人,他们都给了我很大的帮助,但是我当时的想法太简单了,总想着某个牛人能够解决掉这个问题,现在想想,即使是牛人,没有看到具体的问题也很难给你一个解决方法,遇到困难不能把希望完全寄托在别人身上,要挖掘自身潜力,一遍遍仔细看手册,反复试验,不断思考,问题肯定能解决掉,只是时间问题而已。
再次要感谢公司对我的容忍,一个这么简单的东东允许我搞了这么久。
其实,在前面的过程中,一直有写点什么的冲动,但是当时困难重重、前途未卜,也没了这个心情。
现在可以坐下来仔细总结下前面的问题,有现在都没搞明白的,特向大家请教了;有解决掉的,那就说说经验教训,给其他人一些参考。
首先声明本人脑瓜笨,逻辑思维差,点一个灯点了一个多月,最后还发现没点对。
所以提到的问题可能很幼稚,说话也好像前言不搭后语,有兴趣看的那就受累了哈。
先说说我们的这个块板子,裸奔的at91sam9260,外扩Norflash、SRAM,实现程序既可以跑在Norflash中,也可以拷贝到Sram中跑。
任务就一个:控制一个片外AD,读出数据然后通过串口发出。
很简单的吧,这我都搞了几个月呢,你说菜不菜吧。
以下我将回想整个的ARM学习过程,涉及到的知识都是很简单的基础知识,老鸟就不用看了,希望可以帮助到像我一样的菜鸟。
前三个月主要是熟悉的过程,当时完全没有想到后面程序的调试会如此的困难,想当然地认为又不上系统,无非是32位的单片机嘛。
ARM 学习心得
一、通用I/O口设置:
1、使用PINSELx定义端口作为通用I/O功能, 每个引脚可能有4
个功能, 因此需要用2位来确定其功能
2、设置SCS寄存器第0位为1, 使其作为快速I/O端口
3、使用PINMODEx定义端口的模式, 分为上拉, 下拉, 浮空, 因
此需要用2位来确定其模式
4、使用FIOxDIR来确定端口方向
5、使用FIOxMASK与FIOxCLR, FIOxSET, FIOxPIN联合来设置端
口的值
6、由于通用I/O一般情况下方向是确定的, 通常或者为输入,
或者为输出, 要模拟数据总线, 必须在需要的时候, 随时
改变端口的方向, 可使用FIOxDIR寄存器完成此项工作
7、除EXTINT0-EXTINT3外,端口0和端口2均可以作为外部
中断源,它们共用EXTINT3这个外部中断。
8、根据实际情况合理选用。
主要对上电时的初始值。
上拉或
下拉都是弱的,有时也用外部分电阻上/下拉。
对于输入,
上拉表示通用端口所连接的外部信号不存在时, 端口值
为1, 下拉为0。
对于输出,如果没有更改时,上拉输出
为高(1), 下拉输出为低(0)。
FIOxPIN总是可以读出端口的
状态。
FIOxPIN对非通用I/O端口也可读出其状态。
9、对于内置(片上)外设, 如UART, CAN, SPI等:使用PINSELx定
义端口作为特定外设。
通常情况作为外设的引脚的方向是
确定的,如果可能,还会自动改变方向。
大多情况下,无
须设置上拉或下拉模。
设置外设的参数,如果需要的话,
安装中断服务程序外设上电(有些外设默认是上电的,有些
不是)启动外设
二、以太网模块心得
实例1:
以微处理器LPC2368为核心、DP83848C为以太网物理层
接口芯片,介绍嵌入式以太网接口的实现方法。
以太网接口电路主要由MAC控制器和物理层接口
(Physical Layer,PHY)两大部分构成。
LPC2368内嵌一个
以太网控制器,支持精简的媒体独立接口(Reduced Media
Independent Interface,RMII)和带缓冲DMA接口(Buffered
DMA Interface,BDI),可在半双工和全双工模式下提供
10M/100Mbps的以太网接入。
因此,LPC2368内部实际上
己经包含了以太网MAC控制,但并未提供物理层接口,所
以,需要外接一片物理层芯片以提供以太网的接入通道。
在这里选用National Semiconductor公司的DP83848C作为
以太网物理层接口芯片,它提供了包括MII/RMII/SNI接口,
可以很方便地与LPC2368连接。
DP83848C是一个10/100Mb/s单端低功耗物理层器件,有
几种智能降功耗模式,包括有25MHz时钟输出,很容易通过
外接变压器和双绞线媒体接口;支持两种IEEE 802.3u MII 和RMII Rev 1.2,方便了设计;集成的亚层支持10BASE-T 和100BASE-TX以太网协议;低功耗小于270mW、3.3V MAC 接口;可配置的SNI接口;48引脚LQFP封装(7x7mm)。
DP83848C作为一种以太网物理层收发器,广泛应用于高端外围设备、工业控制和工厂自动化操作、通用的嵌入式应用领域
LPC2368与DP83848C连接比较简单,直接通过RMII接口连接即可。
连接好后,DP83848C再通过网络隔离变压器和RJ45接口接入传输媒体,其电路框图如图1所示。
16ST8515为网络隔离变压器,其主要是起信号传输、阻抗匹配、波形修复、杂波抑制以及高电压隔离等作用,以保护系统的安全
电路原理图:
实例2:
S3C4510B 内嵌一个以太网控制器,支持媒体独立接口(Media Independent Interface,MII)和带缓冲DMA 接口(Buffered DMA Interface,BDI)。
在该系统中,使用RTL8201 作为以太网的物理层接口。