转 从51到ARM——LPC1788学习笔记[最后更新:8月23日
2014-01-21 11:24
661 查看
http://bbs.mydigit.cn/read.php?tid=459137&page=1
也许我发在MyDigit人气不高,毕竟这里很多都还是初学51,但是因为本人和这个站有一些特殊的感情,所以呢,还是发在这个地方。就算大家不看,也能捧个场,谢谢。 /****************************广告开始**************************/ 51单片机入门教程:http://bbs.mydigit.cn/read.php?tid=455109&page=1(这个教程我也参加编写了,所以打个小广告) /****************************广告结束**************************/ 前言 51单片机学完后,下一步是干什么呢?挑战51的极限 or 入门更高级的单片机?我不知道你的选择是什么,不过我选择了后者,这也就有了这个学习笔记。无论你学不学LPC17XX单片机,反正多看看没有坏处,对吧?如果里面有错误,也欢迎指出。 如果要入门更高级的单片机,那么具体我们要怎么选择呢?这个单片机的选型,我可是做足了功夫,各种单片机的对比介绍我也看了快半年了,这里我来做个总结。但是发现心中有千言万语但却不好表达,用文字来叙述会非常的混乱,所以呢,我列了个表格。 从表格中我们看到,单片机厂商是愈战愈勇,啥配置都往上加,说不定几年后单片机就超过曾经辉煌的P3 P4了呢。在这么多单片机当中,我最终选择了LPC178X系列,原因是我看中了它的LCD控制器和SDRAM支持,并在此论坛立贴为证,我要拿它搞个终极单片机时钟。有了目标,就好办了,先Google百度一下,看看有没有前人已经弄过这个东西,找点相关的学习资料(教程啊,学习笔记啊,例程啊),还有别忘了去它的官网把资料也打个包拖下来,事实证明,官网资料还是最强的。比如我现在学LPC1788,我找来了EK-LPC1788开发板的原理图和例程,还有官网的一堆资料,包括了数据手册,用户手册,应用手册,库和几个例程。值得一提的是,NXP免费提供emWin图形库供大家使用,在NXP单片机上使用无需担心授权问题(我映像中ST也是有自己图形库的。)而emWin的前身就是大名鼎鼎的uCGUI。准备好和我一同踏上这激动人心而又稍显艰苦的旅程了吗? 楼层导航 1L:手册阅读笔记 2L:PCB设计笔记 3L:程序编程笔记 最后感谢rgwan对本人提供的支持 更新记录: 8月22日:更新 1L时钟和复位 2L电源 8月23日:更新 1L EMC [ 此帖被nbzwt在2012-08-23 06:45重新编辑 ] | ||||||||||||||||
本帖最近评分记录:共4条评分 ,M币+26
回复 举报 |
分享到淘江湖新浪QQ微博QQ空间开心人人豆瓣网易微博百度鲜果白社会飞信 |
离线nbzwt 数码2级 发帖358 M币4902 专家14 贡献10 粉丝77 加关注 发消息 | 只看该作者1楼 发表于: 2012-08-22 时钟&复位 时钟和复位可以说就是单片机最小系统的基本要素,所以呢,先开始将时钟和复位。 时钟方面,我们来看看Datasheet是怎么说的。 Clock generation: Clock output function that can reflect the main oscillator clock, IRC clock, RTC clock, CPU clock, USB clock, or the watchdog timer clock. On-board crystal oscillator with an operating range of 1 MHz to 25 MHz. 12 MHz Internal RC oscillator (IRC) trimmed to 1% accuracy that can optionally be used as a system clock. An on-chip PLL allows CPU operation up to the maximum CPU rate without the need for a high-frequency crystal. May be run from the main oscillator or the internal RC oscillator. A second, dedicated PLL may be used for USB interface in order to allow added flexibility for the Main PLL settings. E文好的童鞋应该是一看就明白的,E文作为基本功还是很重要的。当然,NXP的工程师也非常贴心的把1000多页的User Manual翻译成中文,在这里呢,像他们致敬,能提供如此给力的芯片供我们发挥,谢谢。(DS原文应该中有一处错误,以上提供的我已经改正。) 接下来我们来看看时钟部分的Block图(谁能告诉我这个中文标准说法是什么?) 其中,irc_clk就是内部12MHz RC振荡器,而osc_clk则是外部晶振。从图中我们可以看到,sysclk可以从内部RC和外部晶振两个中选一个,并且sysclk进入主PLL进行倍频,为CPU、外设和EMC提供时钟。而USB比较特殊,它的时钟选择是独立的,可以从sysclk、主PLL和副PLL中选择。其中,副PLL不能选择IRC作为输入,所以如果使用内部RC振荡器还要用USB,那么唯一的解决方法就是,IRC通过主PLL倍频到192MHz,然后CPU二分频到96MHz,而USB选择主PLL输入,然后同样二分频到96MHz。 为什么一定要是96MHz呢?CPU没有办法,因为要和USB共用一个PLL,而USB必须输入48MHz的整偶数倍的频率才能工作(也就是96MHz的倍数),那么在PLL工作范围之内的唯一选择就是CPU也96MHz。 复位方面,继续看数据手册,不过很遗憾,我只找到一句话: On-chip Power-On Reset (POR). 具有片内上电复位,那好吧,我们看看用户手册怎么说。 LPC178x/177x 有 6 个复位源: RESET 管脚复位、看门狗复位、上电复位(POR)、掉电检测(BOD)复位、系统复位,以及锁定。 前面几个复位源还是蛮好理解的,这里来说说后面几个。 掉电检测复位实际上就是一个持续运行的电压比较器,它会检测当前的电压,当低于2.2V的时候就会产生一个中断,让软件处理低电压;而当低于1.8V时,会直接复位,因为在电压过低时,各器件工作会不可靠。 系统复位则是软件通过访问寄存器的方式来进行的复位。 锁定么,还是来看原文好了。 执行NMI 或硬故障处理程序时,如果发生硬故障,则处理器进入一个锁定状态。当处理器处于锁定状态时,它不执行任何指令。处理器保持在锁定状态,直到发生以下情况之一: • 处理器被复位; • 发生一个 NMI 故障。 注: 如果NMI处理程序使处理器进入锁定状态,则后续NMI也不会改变理器的锁定状态。 但是这个到底是什么呢?我个人理解就是处理器执行出错了 ,之后处理器就停止执行代码。(这部分的参考电路设计请参考2L) EMC 同我在项目预告中所说,LPC1788最吸引我的一点是支持挂SDRAM,原因我就不重复了。 现在我看来,或许我可以把Code放到SDRAM里面,这样就不用再在板上弄个Nor Flash了。OS+GUI可以放在片内的512KB Flash里面,然后跑User Application的时候直接从SD卡里面把二进制代码Copy到SDRAM里面,然后跳转到SDRAM中运行。不过唯一遗憾的是速度,我为了方便布线用了16bit的SDRAM,而M3内核的指令大多数是16bit的,那么一次只能读出一条指令,为了提高速度,可能最好还是让CPU和SDRAM跑在同频率下以提高速度。如果不介意稍微让EMC超点频的话,可以上84MHz(毕竟咱的RAM颗粒是100MHz的)。好吧,废话讲了一堆,该说正事了。 EMC功能简介 External Memory Controller (EMC) provides support for asynchronous static memory devices such as RAM, ROM and flash, as well as dynamic memories such as single data rate SDRAM. 怎么样,还是不错的吧。不过需要注意的是,如果你要用SDRAM,就不要使用144脚的产品!以下是一个支持设备简表
以下是各片选的地址和范围大小
应该也就这样了吧,也没有什么值得多说的,编程方面的,等我开始写了再说吧。 最后,奉上参考IC选型。 NAND Flash:HY27UF081G2A (128MB MLC Nand Flash) NOR Flash:JS28F128P30 (具体的大小我也没查到,反正我自己不用,也懒得继续找了) SDRAM:hy57v561620 (这个最好买,32MB PC100 SDRAM) SDRAM电路设计方面请参考2楼 To be continued [ 此帖被nbzwt在2012-08-23 06:44重新编辑 ] | ||||||||||||||||||||||||||||||||||||||||||||||||
回复 举报 |
离线nbzwt 数码2级 发帖358 M币4902 专家14 贡献10 粉丝77 加关注 发消息 | 只看该作者2楼 发表于: 2012-08-22 SCH篇 不得不说,NXP芯片的引脚排列是我看过的最坑爹的,布线压力直线上升啊。 给大家截个图吧 自己看下旁边的引脚号,你就知道是什么意思了。而且有意思的是,引脚号都是跳着来的,我估计晶片上的引脚也是双层的,上下引脚一个单数走,一个双数走。这样封装的倒是方便了,但是苦了我们DIYer啊! 附上LPC1788的原理图库,AD9格式的,希望对大家有用(208脚弄起来不容易啊) Schlib.rar (4 K) 下载次数:8 供电 首先呢,我们可以看见这个IC有很多电源脚,实际上,它们在内部都是连通的。那么为什么还要这么多呢?我也不太清楚,据说为的是更合理的去耦,而且如果不接的话回流的串扰很大,芯片的性能大大降低。反正在外部连起来就对了,记得每组电源旁都要连退耦电容。有些童鞋可能还不知道什么是退藕电容,这个是用来减少芯片对电源的干扰的。这里呢,我们看见了很多种电源引脚,其中VSSA和VDDA是模拟部分的电源,因为这次设计我不用用到IC片内的模拟功能,所以我就直接接上了电源。VREFP是AD DA参考电压,手册上建议和VDDA连通,那么我这里也直接接上了电源。如果需要用到模拟功能,那么模拟VCC和数字VCC一定要记得分离,滤波。 一下是电源正极部分的参考电路图,负极全部连在一起就可以了 PCB篇 还没开始呢,不过估计开始了就被整死了…… 未完待续,完成后我会提供AD9格式和PDF格式的原理图,方便大家制作。 |
相关文章推荐
- 泛微亮相CIO班结业典礼 携手北大探索产学研模式
- c#对象的内存结构(学习笔记)
- vc++6.0无法设置断点
- 资源文件的使用,实现国际化
- Android音频系统之AudioFlinger(一)
- 深入理解C语言指针奥秘系列文章(全)
- eclipse如何修改dynamic web module version
- SharePoint Foundation 2013在Windows Server 2008 r2 sp1中搭建的全过程
- Cocos2d-x游戏开发之 《捕鱼达人》 总结
- vector容器中如何删除元素
- Tomcat 工作原理【转】
- excel导出传入datatable,计算运行时间
- 也说庆丰包子铺:三层架构与小笼包
- 珍爱之礼 美妙感受
- 设置ListBox的Item的样式
- winform拦截关闭按钮触发的事件示例
- No8.面向对象
- HADOOP 分布式集群环境下第一个mapReduce程序—WordCount
- win for VirtualBox 下ubuntu 安装增强功能【失败】
- 发送邮件