牛人工程师及PIC32一个月发生的研发故事.docxVIP

牛人工程师及PIC32一个月发生的研发故事.docx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
牛人工程师与PIC32一个月发生的研发故事[导读]?那是始于2009年7月所发生的一个我和PIC32的故事。就在我的有关如何对16位PIC24微控制器进行编程一书刚刚出版不久,我听说Microchip公司一款新的32位PIC32微控制器已经出炉。该产品使用的是MIPS内核,同时还声称与16位的引脚以及PIC24系列产品外围兼容。对我来说这简直是太重要了!关键词:PIC32 Microchip MCU微控制器那是始于2009年7月所发生的一个我和PIC32的故事。就在我的有关如何对16位PIC24微控制器进行编程一书刚刚出版不久,我听说Microchip公司一款新的32位PIC32微控制器已经出炉。该产品使用的是MIPS内核,同时还声称与16位的引脚以及PIC24系列产品外围兼容。对我来说这简直是太重要了!我立即起身去要到一个样片并刷新基于GNU的MPLAB C32 C编译器的beta拷贝。 我只是必须看一下这款新产品像什么。它仍然像是PIC MCU?它能不能在同样的演示版上工作?毕竟,我已经用C语言为PIC24写完了15章颇有价值的16位代码和例程。长话短说,在随后的不到一个月的时间里,我不仅完成了代码移植,而且已经开始利用所掌握的PIC32的经验书写一本新书了! 下面就是对一个月里所发生的事情的简要叙述。我喜欢从我遵守最好的设计准则并从阅读数据页开始讲述,如果说我从头到尾全面阅读了数据页,那是撒谎!实际上我所做的与你做的完全一样。打开装有以前PIC24项目的MPLAB集成开发环境,点击F10键立即创建。 二进制数字 一长串的错误列表出现在输出窗口中。令我惊奇的是,所报道的所有错误都明显地只与我的二进制注释(0,即C语言的一个非标准扩展有关。我试图编译我关于16位控制器一书前三章中的第一个代码例程。这是一段非常简单的代码,用C来说明I/O,精确定时以及流控制(用于循环)命令。我立刻决定将所有二进制文字转换成标准十六进制的注释(0x00)并观看结果,瞧!编译器和链接器马上解析出代码没有任何错误。 感觉很幸运,我决定继续“前进”,并在一些实际的硬件——即Explorer 16演示板上运行代码。我获取了一个PIC32插件式模块(PIM),并取代我的16位器件一书中普遍所用的PIC24 PIM。加电后我抱着非常怀疑的态度观察了几秒钟,竟然没有“冒烟”!然后我取了一块MPLAB Real ICE调试器和编程器连接到板子上。MPLAB IDE竟然很快识别出该工具并报告已发现PIC32连接到板子上。 在快速和自动的固件升级后,我便立即按下编程键,随后便是运行命令…。但却不工作! 我意识到板子上明显有什么问题,但一点也不像我所期望的那样。这里需要解释一下。在我的16位器件一书的前三章中,我利用C语言向读者提供了如何生成 “Hello World”这类例子。其中,我讲到传统的实现方法是,向终端发送一个字符串,但这在嵌入式控制应用中是不现实或者不合适的。而是采用一个“有趣的”方案,即制作一排8个LED,当把板子拿在手上并挥动时,灯将有节奏地闪烁。它将显示出有用的信息,这要归功于眼睛的自然成像持久性。实际上对此进行编码要比描述更容易。 不同时钟 事实上是,PIC32得到的I/O引脚和定时全部都是错误的。 对于这一点,通常我只需要噼里啪啦地翻开数据页并按我自己的工作方式来查找问题的根源。出现的问题是,PIC32时钟产生模块比16位器件一书中所用的 PIC24F要更加复杂一些。实际上,PIC32模块更像16位MCU系列中最新的PIC24F上的振荡器模块。同样,在PIC32结构中,绝大多数外设模块被连接到工作频率不同的彼此分离的外设总线上,这些频率低于系统时钟,这有助于功率管理,当然也有助于解决EMI问题。 我耐心找出如何使外设总线工作在与同一项目(16MHz外设总线)中PIC24F所用相同的频率。我还找出了可以执行的相同指令数,而执行频率仅为PIC24F所要求系统频率的一半,这是因为PIC32内核每个时钟周期上可以执行一个指令。 JTAG默认值设置为on 在解决了时钟问题之后,我快速地浏览了一下时钟模块。有5个时钟模块。看上去绝对与PIC24F完全一样,进一步回溯PIC MCU的历史,一直回溯到PIC16C74(大约1994)都是兼容的。我继续验证I/O端口:同样的结构,同样的引脚数,同样反映“历史”的寄存器名称,发现一个兼容型的轨迹也许可以一直延伸到最初的PIC16C54(大约1991年)。 最后我对A/D转换模块进行了一次快速检查,对于绝大多数PIC MCU初学者来说这是一个最难理解的外设。其输入连接到I/O口的上端(绝大多数16位PIC器件的PORTB),并且先加电,故除非你的配置正确,否则它不会使你的数字输入工作。显然它与P

文档评论(0)

jdy261842 + 关注
实名认证
文档贡献者

分享好文档!

1亿VIP精品文档

相关文档