针对PIC微控制器设计窍门.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
针对PIC微控制器设计窍门

针对PIC微控制器的设计窍门 上网时间: 2005年09月19日 除了可在广泛应用的Microchip公司PIC微控制器芯片中挤出更多特性外,本文探讨的诸如增加额外串口以及在8位芯片上进行32位运算等技巧,也可适用于其它微控制器。 图1:作为异步串行数据的ASCII 码字母“Q”(0x51)。 尽管Microchip公司不断为其日益扩大的PIC微控制器产品线增加更多功能,但有时设计工程师只需其中一小部分功能。也许设计工程师还需要目前尚不存在的一组特性,或者继承了一种设计但不能升级,或者可能只想进行试验并打破以往传统限制。本文将介绍一些挖掘各种PIC产品极限的应用方法,其中一些技巧也适用于其它微控制器,但这里只介绍用于PIC的源代码与具体示例。本文还将分析一些方法,它们是关于如何增加另一个异步串口、更容易地处理精度扩展(32位或更高)算法、增强并行从端口以及如何使用一些异步串口常被忽略的特性。 异步串口 许多PIC都具有一个或两个异步串口,但如果它们不够用,那么位拆裂(Bit-banging)剩余I/O管脚是一种常用的解决方案,且适用于整个PIC系列。但这种方案是软件密集型的,它在保持可靠通信所需的关键时序的同时,将难以进行其它任何操作。另一种选择方案是检测起始位的上升沿,并采用定时器中断来读取数据。这种方法在位拆裂方法的基础上有了很大改进,但仍需要大量的软件开销以处理每一位的中断,而面向任何中断的延迟都可能导致同步问题。 图2:作为同步串行数据的ASCII 码字母“Q”(0x51)。 大多数PIC还提供一个串行外围接口(SPI)。仅需很小开销,普通的同步SPI就可被设计成能够接收标准的异步传输。 一个典型的异步数据流包括一个起始位(总为0)、8个数据位(最低有效位在前)以及一个终止位(总为1)。图1给出了一个接收ASCII码字母“Q”(16进制为51)的例子,也可采用更少的数据位或者增加一个奇偶校验位或额外的终止位。 SPI端口也采用8位数据,但它同步在两个不同管脚上发送和接收字节。数据时钟可消除对起始位或终止位的需要,且最高有效位在前。图2显示由SPI端口发送的一些数据,SPI端口在每个时钟的下降沿接收数据,在上升沿发送数据。 开始启动 一旦被接收,数据肯定被翻转,但如果SPI时钟的下降沿与每一个异步数据位的中心同步,那么数据也可能保持原样。起始位的下降沿提供最初的同步记号,其它同步记号则利用PIC的一个SPI选项。这里有好几种定时选项,包括使用定时器TMR2等。TMR2计数直到其值等于特殊函数寄存器PR2的值,然后TMR2触发SPI时钟并复位为0,接着再继续计数。如果TMR2从大于PR2的值开始计数,则第一个时间间隔将比平常的时钟周期要长,因为它首先要复位到0(如图3所示)。 图3:TMR2在起始位的前沿初 始化为 -PR2。 SPI端口接管产生同步记号的任务后,它将用所有的8个数据位进行计时而无需其它开销。但它会占用从起始位上升沿到TMR2与SPI端口正确初始化这段时间,从而导致中断延迟,如果启用优先级更高的中断,延迟时间将更长。不过不用担心这种中断延迟,因为PIC还有另一个秘密武器。许多PIC都具有两个或多个捕获/比较/PWM模块,I/O管脚可在下降沿上捕获定时器的值,在起始位的上升沿则将TMR1值存储在一个CCPRx特殊函数寄存器中,并产生一次中断。中断服务程序将带有TMR1-CCPRx-PR2值的TMR2初始化,以消除掉任何延迟。列表1给出的是一个典型的中断程序。 可选的“if(!CCP1)”行可确认输入管脚是否仍为低,以避免将瞬间毛刺读成串行数据。由于-PR2(未标出)必须大于PR2,所以应仔细选择TMR2的预定标器的值,并使TMR1的预定标器的值与之一样。在上面例子中,dTim2PR2为52。最坏情况下的中断延迟应该小于串行数据速率,例如在9,600波特上,该值大约为104微秒或16MHz PIC上416条指令的执行时间。SPI中断正好能够隐藏数据并启用下一个字节的CCP1中断,但切记在某些时刻翻转数据位。 尽管设计工程师通常不能控制输入数据的到达时间,且两个接收器必须时刻保持警惕,但设计者通常能交替使用两个发送器。有很多方法可用来处理硬件路由,仅需少数几个逻辑门或晶体管以及一个输出位就可进行这种选择。图4显示采用一个含4个NAND门的74HC00的方法。可在“串口1”上“选择”高速发送,在“串口2”上“选择”低速发送,这两种路径的“数据输入”都来自TX管脚。 图4:利用一个4与非门来控 制两个串口。 帧错误(FERR)标记 PIC异步串口的状态位包括FERR标记。FERR表示终止位为低而不是所要求的高,这表明发送方的波特率低于接收方的波特率,

文档评论(0)

ikangyme + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档