ADuC845设计总结(一)

来源:互联网 发布:软件工程和计算机知乎 编辑:程序博客网 时间:2024/04/30 11:42

1.1 存储器结构

内部数据存储器地址范围00H-FFH,256B大小,其中低半部分用于存放通用数据,即内部RAM,高半部分为特殊功能寄存器SFR,地址80H-FFH。内部RAM又分割成通用寄存器组(共4组,每组8个字节共32字节,00H-1FH)、可位寻址RAM(16字节,20H-2FH)、通用RAM(30H-7FH共80字节)。

注:复位后堆栈指针位于07H,压栈时指针先加1,即从08H寄存器组2开始。如果用户使用多个寄存器组,需把堆栈指针初始化为数据存储没用到的内存区间。

ADuC84x内核为8052,8052核比8051增加了128B片内RAM,地址80H-FFH,和SFR地址冲突,因此使用间接寻址来访问这128B的RAM(即IDATA RAM的高128B区间),使用直接寻址访问SFR。注:00H-7FH范围RAM可直接也可间接寻址。

ADuC84x具有片内XDATA RAM,地址从000H-FFFH,共2KB。使用UV4时,在START_AD.A51的配置向导界面启用,即设置文本编辑界面的CFG84x寄存器,此时片内XDATA RAM被映射到外部存储器空间的低2K地址区间。XDATA RAM需使用MOVX和DPTR访问。参见手册23页。

总结:128字节内部RAM、128字节SFR、128字节IDATA RAM、2K字节XDATA RAM。

1.2 Power-down模式及唤醒:

设置PowerControl Register (PCON),可进入Power-down模式。如果PLLCON寄存器的OSC_PD为0(PLLCON.7=0),且TIC被使能,则TIC中断唤醒器件,器件随后执行TIC中断代码。唤醒时间20us,PLL从唤醒到锁定约1ms。

PLLCON寄存器OSC_PD位为0,则32K晶振在power-down模式下继续运行,TIME INTERVAL COUNTER (TIC)使用32K时钟,此时继续运行,当TIC的TII为设1,则计数条件满足产生中断,唤醒CPU,代码从地址0053H(中断号10)开始运行。

   各中断向量地址和中断号对应关系见手册86页。TIC有6个相关SFR,用户代码访问时也使用32k时钟频率,因此需要保证足够的访问时间。

PCON寄存器还可选择除了TIC中断外,是否还能被INT0外部中断、SPI中断(SPI或I2C)中断唤醒,这两个中断即使32K振荡器不加电也能唤醒CPU,唤醒时间为30us,如果内部振荡器工作,唤醒时间为20us。PLL从唤醒后到锁定大约1ms,在此之前代码执行,但是如串口波特率等不精确。

1.3 SPI传输:

1)       工作在MASTER模式下,最高SCK为0.78MHz,参见手册Figure 77。一般推荐使用SPI模式3

2)       SPI传输结束后,SPICON寄存器ISPI位被处理器设为1(不管SPI中断有没有使能),可根据此位判断一次SPI传输是否结束。如果SPI传输结束,用户代码需把此位重新设置为0,或者通过读取SPIDAT自动设为0。

3)       SPI常用模式0和3,其区别仅在于SCK空闲时为高还是低。

²  SPI模式0:输入数据在SCK上升沿锁存,输出数据在SCK下降沿输出。SCK空闲时为低。

²  SPI模式1:输入数据在SCK下降沿锁存,输出数据在SCK上升沿输出。SCK空闲时为低。

²  SPI模式2:输入数据在SCK下降沿锁存,输出数据在SCK上升沿输出。SCK空闲时为高。

²  SPI模式3:输入数据在SCK上升沿锁存,输出数据在SCK下降沿输出。SCK空闲时为高。

   CPOL和CPHA为00则模式0;为01为模式1;为10则模式2;为11为模式3。这是根据手册图46确定的,如果根据SPICON寄存器描述,则11为模式2,10为模式3,这应该是不对的。

   如果采用模式0,则ADUC8XX的SPICON寄存器一般设为0X31,即主模式0,时钟Fcore/4。

原创粉丝点击