-
MSP430F5418
使用总结
到目前
为止,已工作一月有余。培训的时候领导就说,硬件工程师一定要清楚自己的定
位,我们
并不只是设计一下电路,画画原理图和
PCB
就可以的,硬件相
关的驱动程序也是要
由我们来完成的,这也是硬件工程师的一项基本技能。
公司的产品是基于<
/p>
MSP430F5418
开发的,虽然在学校基于其他处理器也编
写过不少驱动
程序,但是面对一款新的处理器,仍然需要一个熟悉的过程,在程序的调试
过程中也或多或
少地遇到过一些问题,现总结如下。
1
)
UCS
时钟如同处理器的心脏,每一个周
期就是心脏的一次脉动。以前使用其他处理器时,只
需要选择合适频率的晶体,接在
p>
XT1
和
XT2
两
端,再加两个电容就可以了。而
MSP430F5418
的时钟
系统略显复杂,
容易让刚开始接触它的人一头雾水。
5418<
/p>
的时钟设置由
UCS
(
< br>Unified
Clock System
)来管理,
使用起来比较灵活,其结构图如下所示。
UCS
模
块有
XT1CLK
和
XT2CLK
p>
两个外部时钟源,
以及
VLOCLK
、
REFOCLK
和
DCOCLK
(
DCOCLKDIV
是
DCOCLK
的分频输出)
三个内部时
钟源。
其中
XT1CLK
、
REFOCLK
和
XT2CLK
< br>可以作为
FLLREFCLK
输入到
FLL
单元来改变
DCO
的输出。
所有这些时钟源经分频后都可以作为
MCLK
< br>、
SMCLK
和
ACLK
输出。
下面是一个
UCS
设置的例子,使用
32768Hz
的内部时钟源
REFOCLK<
/p>
,并通过
FLL
倍频使
< br>MCLK
为
16.384MHz
。
void UCS_Init
(
voi
d
)
{
UCSCTL3 |= SELREF__REFOCLK; //
< br>选取
REFOCLK
作为
FLL
REFCLK
__bis_SR
_register
(
SCG0
)
p>
; //
禁止
FLL
UCSCTL0 =
0x0000;
UCSCTL1
= DCORSEL_6;
UCSCTL2 = FLLD_1 + 499; //
将
REFOCLK
500
倍频到
16.384MHz
__bic_SR_register
(
SCG0
)
; //
使能
FLL
UCSCTL5 |= DIVS__32; //
SMCLK 32
分频后输出
UCSCTL4 |= SELA__REFOCLK;
//
选取
REFOCLK
为
ACLK
do
{//
清除时钟错误标志位
UCSCTL7 &=
~
(
XT2OFFG + XT1LFOFFG +
XT1HFOFFG + DCOFFG
)
;
SFRIFG1 &=
~OFIFG; //
清除时钟错误中断标志
} while
(
SFRIFG1 &
OFIFG
)
; //
等待时钟稳定
}
2
)
SPI
在进
行
SPI
接口的设置时,如果处理器作为主器件,那么一定要根
据从器件的时序确定