4314|15

10

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

MSP430 Launchpad G2553 DOCTL与BCSCTL1寄存器问题 [复制链接]

小白一枚,才接触430.在一个配置时钟例程中发现了这么一句:
BCSCTL1= CALBC1_1MHZ;      
DCOCTL = CALDCO_1MHZ;  
注释表明这是设置DOC频率为1MHZ
然后我就去头文件中找CALBC1_1MHZ和 CALDCO_1MHZ这两个参数的值是多少,然后发现
CALBC1_1MHZ_          (0x10FFu)  
CALDCO_1MHZ_         (0x10FEu)

这两句都是16位的值啊,但是我记得在操作DCO与BCSCTL1的寄存器都写的是8位的说明吧?那么高8位是什么a?为什么两句的高8位是写入0001 0000b?

接下来我就去查用户手册了,但是在时钟寄存器配置使用中,BCSCTL1与DCOCTL 也都只有低8位的说明吧
但是CALBC1_1MHZ_与CALDCO_1MHZ_ 都是16位的值啊,手册中没有对高8位的说明,网上也没有找到相关的说明,


然后我想按照低8位的值来对比各个寄存器的值吧,就将CALBC1_1MHZ_的值0x10FF即0001 0000 1111 1111b对应着手册DCO控制寄存器,可以得出:
DCOx = 111b;MODx = 1 1110b
同理;
XT2OFF = 1; XTS = 1; DIVAx = 11b; RSELx = 1111b;
再查阅数据手册:

由于DCOx = 111b 所以MODx无效;又由RSELx = 1111b,频率为16~26HZ

看到这里瞬间就无语了,根本设定1MHZ频率有半毛线关系a!
当然我想应该是我自己理解错了吧,因为网上搜和手册里都有这样设置DCO为1MHZ的例子。哎,想了半天没搞懂
所以希望大家帮帮忙,一是帮我解释一下这2句话的含义特别是,手册上8位的寄存器,软件上写入的怎么是16位的值??二是求教一下我查用户手册和数据手册的方法哪里错了,或者是我理解错了。请教一下查阅手册的方法。

自我感觉我是有些专牛角尖,但是我就是属于一点没搞懂就学不下去那种,也希望大家能够传授点方法这些,先谢过各位了哈~

1.png (10.85 KB, 下载次数: 0)

例程中设置时钟位1MHZ

例程中设置时钟位1MHZ

22.png (130.37 KB, 下载次数: 0)

DCOCTL与BSCCTL1

DCOCTL与BSCCTL1

2.png (46.12 KB, 下载次数: 0)

2.png

3.png (8.04 KB, 下载次数: 0)

3.png

最新回复

前面的部分都没理解错,最后一段我没有看懂…… 不能直接将(0x10FEu)赋给BCSCTL1这个寄存器,不然会造成意想不到的结果。你要赋值的是它指向的结果,而不是这个指针。 至于它是怎么调用指针指向数值的我也没搞懂,我C语言学艺不精,偶尔还要向度娘问语法。 我不知道能不能用*(0x10FEu)的形式来赋值,也不知道这种写法是否符合语法要求,你可以试试。  详情 回复 发表于 2015-8-7 15:38
 
点赞 关注
个人签名butterfly effect

回复
举报

3415

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
接触msp430不多
不过印象中,CALBC1_1MHZ_和CALDCO_1MHZ_之类的具体数值是出厂校准后保存在Flash的某个地址的存储空间
定义成0x10FFu,可能是指这个地址吧
最好能看看定义文件的说明
 
个人签名

So TM what......?

 


回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

板凳
 
其实我觉得您是将问题有点高的复杂化 了呢。

1. DCO的确认中,就要根据您截图的,DCO的高3位来确定的呢。然后配合如下的图和用户手册中DCO (see Note 1)类似这样的来确定DCO的频率的呢。



2. 再者关于BCSCTL1的寄存器的配置问题,不妨您就单独对如下图(这个是430别的手册的截图)展示的每个位配置就好了啊。然后将其写成16进制数不就OL了吗。不要太在意别人怎么写的,主要要看您是否能理解了呢。


 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

4
 
huaiqiao 发表于 2015-8-4 23:07
其实我觉得您是将问题有点高的复杂化 了呢。

1. DCO的确认中,就要根据您截图的,DCO的高3位来确定的呢 ...

嗯嗯 我主要就是不太理解别人写的是什么意思,因为本来就是才学,自己写又不会,只好看别人之前写过的,但是又遇到看不懂的,对应手册又查不明白,所以就感到老火了。
但是回到问题上来说,我用的是MSP430 launchpad G2553的开发板,例程中将RSEL 设置为111b,DCO设置为11b,就对应曲线的最上面一条,但是这条曲线的频率选择不是1MHZ呀?

11.png (38.61 KB, 下载次数: 0)

11.png

点评

这个表只是一个定性的示意,实际上不同的MCU的DCO校准参数都不一样。你可以用工具将infoA里的校准数据读出来,这样你就能对这个DCO有一个更直接的认识。 我现在手头没有430单片机,等会到公司之后如果我还记得的话  详情 回复 发表于 2015-8-7 07:48
RSEL=111b=7(十进制),DCO=11b=3(十进制),然后你对应的上面的坐标上面不就知道了Fdco的频率值了吗?这个值是个大约的值,不是个定值。  详情 回复 发表于 2015-8-5 19:20
 
个人签名butterfly effect
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

5
 
ljj3166 发表于 2015-8-4 22:21
接触msp430不多
不过印象中,CALBC1_1MHZ_和CALDCO_1MHZ_之类的具体数值是出厂校准后保存在Flash的某个地 ...

好的~
G2553.H头文件里面CALBC1_1MHZ_和CALDCO_1MHZ_的值分别是是(0x10FFu)和(0x10FEu),并且是赋值语句,是给BCSCTL1与DCOCTL 寄存器里分别写入这两个值,而不是寄存器本身的地址值。而关键又在于手册上是8位的寄存器,但是写入的值确实16位的。但是我想430本身也是16位的,只是手册上没有把高8位写出来? 纠结的就是这里。并且对应写入寄存器的值,发现手册上和注释中的并不是同一个结果,再次纠结了,最后自己有找不出自己哪里错了,这才是最老火的。。。
 
个人签名butterfly effect
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

6
 
宅男改变世界 发表于 2015-8-5 18:09
嗯嗯 我主要就是不太理解别人写的是什么意思,因为本来就是才学,自己写又不会,只好看别人之前写过的, ...

RSEL=111b=7(十进制),DCO=11b=3(十进制),然后你对应的上面的坐标上面不就知道了Fdco的频率值了吗?这个值是个大约的值,不是个定值。
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

7
 
查看本帖全部讨论,请登录或者注册

点评

这个是在类似于Mixed Signal Microcontroller,这样的430的手册中,有个表格的,你好好找下,别死记硬背。不可取。  详情 回复 发表于 2015-8-6 08:39
 
个人签名butterfly effect
 
 

回复

4177

帖子

9

TA的资源

五彩晶圆(高级)

8
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

9
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

10
 
查看本帖全部讨论,请登录或者注册
 
 
 

回复

129

帖子

3

TA的资源

一粒金砂(中级)

11
 
查看本帖全部讨论,请登录或者注册

点评

这几个值分别是这几个寄存器的地址,我也知道是16位的,只是说手册上查不到高8位,我不理解给高8位写入的值是什么意思。其二就是就算是给寄存器低8位写入的这些值,我对应手册查到的也并不是将时钟频率设置为1MHZ。  详情 回复 发表于 2015-8-7 14:56
 
个人签名游离在码农与网工之间
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

12
 
查看本帖全部讨论,请登录或者注册

点评

首先谢谢层主热心而又耐心的回复。 那我谈谈我的理解哈,看我又没有理解错哈~ 首先 BCSCTL1= CALBC1_1MHZ; 这一句。 我查到BCSCTL1这个寄存器,在G2553.h的头文件里是这样定义的 #define BCSCTL1_  详情 回复 发表于 2015-8-7 15:20
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

13
 
查看本帖全部讨论,请登录或者注册
 
个人签名butterfly effect
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

14
 
查看本帖全部讨论,请登录或者注册

点评

前面的部分都没理解错,最后一段我没有看懂…… 不能直接将(0x10FEu)赋给BCSCTL1这个寄存器,不然会造成意想不到的结果。你要赋值的是它指向的结果,而不是这个指针。 至于它是怎么调用指针指向数值的我也没  详情 回复 发表于 2015-8-7 15:38
 
个人签名butterfly effect
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

15
 
查看本帖全部讨论,请登录或者注册

点评

嗯~最后一段的我的意思就是:不应该将(0x10FEu)这个值,直接赋给了寄存器啦~ 但是对于你说的这个,我的猜测是,,编译器起到将地址值转换成内存单元的作用吧。。。 我对照给51编程来看的话,比如:P1 = 0XFF;  详情 回复 发表于 2015-8-9 21:17
 
 
 

回复

10

帖子

0

TA的资源

一粒金砂(中级)

16
 
查看本帖全部讨论,请登录或者注册
 
个人签名butterfly effect
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 14

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表