电子大神的日记本,供应链专家的功夫茶盘,在这里记录、分享与共鸣。

登录以开始

谈CC2510与B20

最近很多人在讨论CC2510挂DS18B20温度传感器这事,我也凑上两句吧。

记得我第一次用B20的时候也着实用了不少时间,大概有1周的时间,才把别人为S51写的程序在自己的电路跑出一个结果,当时觉得这个单总线真的不好用,不过跑能之后也兴奋了一把。现在在网上能找到很多18B20的写温程序,《路上》也有。可是这些程序除了是基C51这类单片机的之外,就只剩下AVR的和PIC的程序了。

做完那次课题设计就再没有碰过DS18B20,只是关于它的记忆有点深刻,记得在操作B20的时候,每读、写一位中间有个延时,不能长过某个时间,也不能短过某个时间,当时我在读B20的时候还来了个EA=0,把中断关完了。但倒底是不是一定要把中断关了才能读出温度,我也不知道。这就是我对B20的了解。

对于CC2510,我在无线龙上班,所以电脑桌上总会有几个放着,呵呵。2510其实也是51内核,不过指令周期比前面提到的51要短很多,我想这也是很多人在操作B20的时候不好写软件延时程序的最终原因吧。所以我在这里就想跟各位用2510的朋友说下2510的系统时钟设定。2510一共有4个时钟源,把括内部集成的高、低速RC振荡器,外部高、低频率晶振,它们的频率分别是13M,32K,26M,32.768K,4个时钟源分成高低两组,高速一组可以都打开或者打开一个时钟源,PM1及更低功能下两都关闭。而低速一组只能有一个时钟源可以打开,仅在电源模式PM3下两者都关闭。在接有外部晶振时,2510会对RC振荡器进行校准。为了延时可靠,在使用B20的时候选用高速晶振吧。《CC1110/CC2510无线单片机和无线自组织网络入门与实战》这本书上有讲2510/1110的时钟,可以参考。

现在在来说2510系统时钟的分步,2510的系统时钟可以用CLKCON.SPKCLK(D2-D0位)来分频,一共8种分频倍数。分频结果为:
000   26M(高速RC只能在13M)
001   13M
010    6.5M
011    3.25M
100    1.625M
101    812.5K
110    406.25K
111    203.125K
在这里我们选010 -6.5M这个组合。也就每执行13条指命耗时2us。如果我们要延时50us的话,就需要325个指令周期。

再说说延时吧,一般在C里面我们都是用for(;;)或者while(i--)这样的语句来延时,这里应该也可以用,试着多改几下入参,应该是可以用的。以前看过些精确延时的帖子,现在都不记得的方法了。汇编我又不懂,不过刚好前几天在21IC上看到一个很有意思的宏,搬来这里给大家看看,也许用得上,我写的延时代码用的也是这个。

#define __NOP1__ asm("nop");
#define __NOP2__ __NOP1__ __NOP1__
#define __NOP4__ __NOP2__ __NOP2__
#define __NOP8__ __NOP4__ __NOP4__
#define __NOP16__ __NOP8__ __NOP8__
#define __NOP32__ __NOP16__ __NOP16__
#define __NOP64__ __NOP32__ __NOP32__
#define __NOP128__ __NOP64__ __NOP64__

#define __NOPX__(a)             \
    if ((a)&(0x01))    {__NOP1__}                    \
    if ((a)&(0x02))    {__NOP2__}                    \
    if ((a)&(0x04))    {__NOP4__}                    \
    if ((a)&(0x08))    {__NOP8__}                    \
    if ((a)&(0x10))    {__NOP16__}                    \
    if ((a)&(0x20))    {__NOP32__}                    \
    if ((a)&(0x40))    {__NOP64__}                    \
    if ((a)&(0x80))    {__NOP128__}

好了,就说这些吧,把代码帖上,希望大家能尽快的用2510将B20的数据准确地读出来。rar

!!!~~关注2510和B20的调试结果。~~~~!!!!!!

博主
zigbee@163.com
路上
在使用TI CC无线芯片的过程,写下本博 QQ:447655867 Mail: zigbee (a)163.com 重新工作
点击跳转