原创 谈CC2510与B20

2008-7-3 21:51 4327 6 23 分类: MCU/ 嵌入式

最近很多人在讨论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的调试结果。~~~~~~!!!!!!

文章评论17条评论)

登录后参与讨论

wangxinfeng6666_749290079 2012-7-2 21:54

这个延时还不错

zigbee_904218839 2010-8-9 08:35

2150做不了zigbee,但是也可以作点茶系统,只是2510单跳传输距离不如1110的好,2510是2.4G的,1110是433M的,你可以评估下1110,我这也没有什么好资料了,可以买个板子来学习,第一步是做软件,然后再想硬件.

用户867511 2010-6-12 15:52

我最近要要用Zigbee做一个点菜系统,要用到cc2510,我对Zigbee才刚刚开始上手,能给我发些2510的相关资料么?或者指导我下,我要中文的,呵呵呵呵。我的邮箱是 changfei6647@sina.com

zigbee_904218839 2009-8-30 20:55

我没有写CCXXX0+DS18B20的程序.不过网上已经有人把写好的程序发出来了。 但是如果在调试过各中遇到问题,欢迎大家到此讨论.

用户20718 2009-8-14 20:19

你好,我也想要一份cc2430上的DS18B20程序,不知版主可不可以给我发一份,万分感谢:65159954@qq.com

zigbee_904218839 2009-1-9 18:22

T20031935 你给eklf@163.com发封邮件向他索要吧,我现在的电脑已经没有这份资料了。

zigbee_904218839 2009-1-9 18:19

其他方面差不多了。

用户127006 2008-12-29 12:28

你好 CC2510和CC1110除了频道外还有什么区别 应用方面的

用户25691 2008-12-29 12:28

你好 CC2510和CC1110除了频道外还有什么区别 应用方面的

用户142654 2008-11-20 20:31

你好 我和上面的大哥 也是一个情况 用cc2430外接DS18B20 因为刚刚上手zigbee 不是很熟悉 所以希望你也可以把发给他的资料发给我一份 万分感谢 我的邮箱: homeboy1984@163.com
相关推荐阅读
emot 2016-06-29 23:39
想在网上直播来讲讲zigbee,大家怎么看
近来发现zigbee热度不减,不才想把所了解的zigbee都跟大家分享,大致按照这个来做。请大家提些建议,是不是还有特别重要但我遗漏的。先来攒些人,人够了我们就开。 --------------...
emot 2015-09-24 07:06
BLE 空中升级谈(二)
BLE 空中升级谈   -- CC2541 的产品开发中OAD注意事项(续)   TI CC2541支持多个硬件,多个软件对它进行空中升级,可以有不同的组合,硬件有    ...
emot 2015-09-24 07:01
BLE 空中升级谈
BLE 空中升级谈   -- CC2541 的产品开发中OAD注意事项     现在的智能设备(可穿戴,智能家居,智能玩具等)是越来越多了,大公司的产品颜值高,功能强大而完备的应该说是比比皆是,这里...
emot 2015-05-19 10:27
寻找共事的朋友[深圳科技园 嵌入式软件 可穿戴]
岗位职责:嵌入式软件工程师 招聘人数:2 简历语言要求:中文 语言能力:英语 掌握程度:熟练 工作地点:深圳南山科技园 工作待遇:面谈   工作职责: 1. 与硬件工程师合作完...
emot 2014-05-06 08:41
CC2530的通信速率实测
首先要说的是这里的测试包括了zigbee与非zigbee两种情况,测试zigbee的通信速率建议使用TI协议栈ZSTACK-2.5.1A(swrc126.zip)中的TransmitApp来进行测...
emot 2014-01-17 18:08
XBee与 RBee ZigBee透明传输模块互传测试
XBee与 RBee ZigBee透明传输模块互传测试   本次测试的目标是为了初步探索ZigBee透明传输模块的传输速率峰值范围,同时也要检查不同公司模块之间的兼容性。测试的目标是 由美国Digi提...
我要评论
17
6
关闭 站长推荐上一条 /2 下一条