ADI Blackfin DSP处理器-BF533的开发详解21:RTC实时时钟的原理及应用(含源码)

硬件准备

ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器

软件准备

Visual DSP++软件

硬件链接


硬件设计原理图

ADI Blackfin DSP处理器-BF533的开发详解21:RTC实时时钟的原理及应用(含源码)_第1张图片

功能介绍

ADSP-BF53x 处理器上集成了一个实时时钟(RTC)模块,板卡上设计了一个专门用于 RTC 时钟源的晶体32.768KHz,通过配置 ADSP-BF53x 处理器的 RTC 寄存器,实现时间的读取。

代码实现功能

代码实现了配置 ADSP-BF53x 处理器的 RTC 寄存器,为其设定一个初始时间,通过打印将当前的时间信息打印在软件窗口中。更新时间后,RTC 会延迟一秒钟后更新为新的时间。

测试步骤

1. 将仿真器(ICE)与 ADSP-EDU-BF53x 开发板和计算机连接好。
2. 先给 ADSP-EDU-BF53x 开发板上电,再为仿真器(ICE)上电。
3. 运行 VisualDSP++ 5.0 软件,选择合适的 BF533 的 session 将仿真器与软件连接。
4. 加载 VisualDSP++ 5.0 工程文件 BF53x_RTC.dpj,编译并全速运行。

测试结果

VisualDSP++ 软件上看到打印设置的当前时间。
ADI Blackfin DSP处理器-BF533的开发详解21:RTC实时时钟的原理及应用(含源码)_第2张图片

程序源码

#include

void Set_PLL(unsigned int pmsel,unsigned int pssel)
{
unsigned int new_PLL_CTL;
*pPLL_DIV = pssel;
asm(“ssync;”);
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm(“ssync;”);
asm(“idle;”);
}
}

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}

void main(void)
{
int time_flag=0;

int day = 0;
int hours = 12;
int min = 15;
int sec = 30;
unsigned long times;

Set_PLL(16,4);
Init_EBIU();			

*pRTC_PREN = 1;
*pRTC_ISTAT = 0;
*pRTC_ICTL = 0;	

 *pRTC_STAT = (day<<17)|(hours<<12)|(min<<6)|(sec);
 while(1)
 {
 		times = *pRTC_STAT;
 		day = (times>>17)&0x7fff;
 		hours = (times>>12)&0x1f;
 		min = (times>>6)&0x3f;
 		sec = times &0x3f;
 	
 		if(time_flag != sec)
 		{
 			time_flag = sec;
 			printf("time is %d day %d:%d:%d\n",day,hours,min,sec);
 		}
 }

}

PS:这些程序都是我以前写的,不是从哪里Copy来的,搞这个的新手值得看一看哈,有任何问题都可以提问,ADI的这个系列DSP,我觉得没有什么问题我解决不了的。

你可能感兴趣的:(ADI,DSP资料下载,ADI,DSP技术中心,Blackfin专题,ADI,DSP,ADI,DSP中文资料)