rtc实时时钟

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《RTC实时时钟的开发》

1、建立工程

运行QUARTU SⅡ9.0(以下简称Q2),建立工程,File→New Project Wizard,如下图

点击New Project Wizard后弹出指定工程名的对话框,根据需要可进行如下填写

点击Next,出现添加工程文件的对话框

EP2C5Q208C8.

硬件选择完毕后,点击Next,出现以下对话框,这里不进行设置

最后得到一个新工程总结,对话框中的信息即为以上的设置总结

点击Finish。到此为止,工程已经建立完成,接下来需要建立一个Block Diagram/Schematic File,点击Fil e New,如下图所示

点击OK,工程中出现了一个Block1.bdf文件

构建NIO SⅡ软核

接下来,我们进入了构建软核环节,点击Tools SOPC builder或者下图红圈标注的图标

点击以后,SOPC Builder运行,界面如下图所示

将系统的名称命名为core,目标硬件描述语言选择Verilog,然后点击OK,

clk_0为时钟名称,50.0为时钟值,单位为MHz,我们可以对它进行修改,用鼠标左键双击50.0,将其改为100.0,这是我们的软核时钟就是100MHz,接下来我们要建立NIO SⅡProcessor。

构建CPU模块

用鼠标左键双左侧边框中的NIO SⅡProcessor

点击后出现如下对话框,选择速度最快功能最多的NIO SⅡ/f。

点击Next,将红圈处选为None,也就是关闭Data Cache。

连续点击Next,直到出现下图为止

这里设置调试级别,级别越高,功能越多,占用的资源也就越多,我们选择级别1,点击Finish,结束NIO SⅡProcessor的建立。

建立SDRAM模块

接下来建立SDRAM控制器

SDRAM(HY57V641620)是16位的。

在软核中添加EPCS Serial Flash controller

建立SYSTEM ID

点击后如下图所示

建立JTAG UART

点击后弹出以下窗口,不用做任何修改,直接单击Finish。

建立PIO

宽度设置为1,方向设置为输出,建立两个同样的PIO。

最后一个PIO宽度为1,方向设置为双向。

配置及编译NIOSⅡ

接下来我们修改一下所有模块的名字,右键单击模块名,在弹出的菜单中单击Rename 即可。

修改后如下图所示

接下来需要对CPU进行一下设置,双击cpu,将Reset Vector的Memory设置为epcs,将Exception Vector设置为sdram。点击Finish,完成cpu的设置。

起始地址为0x00000000,因为flash是系统重启后的起始地址。

下来自动分配基地址

最后自动分配优先级

保存一下文件

点击Next,点击Generate。

弹出的对话框中双击我们已经建立好的软核

建立锁相环PLL模块

接下来建立一个对时钟倍频的锁相环,开发板上的时钟是20MHz的有源晶振,我们要

将其倍频到100MHz,来满足之前建立软核的时钟。

双击Block1.bdf的空白界面,单击红圈处。

出现下图后点击Next

选中要建立的ALTPLL,并将其命名为PLL。

出现下图后将输入晶振选择为20MHz

出现下图后,去掉不需要的管脚

连续点击Next直到出现下图,将倍数因子改为5,这是c0的频率就变成了100MHz

设置好后,点击Next,弹出时钟c1的设置窗口,选择使用这个时钟,将倍数因子改为5,相位偏移量改为-75°。

直接点击Finish。回到QUARTUS,将建立好的PLL放在空白处。

右键单击软核和锁相环模块,为二者自动生成引脚,并连接二者。

TCL脚本文件

将黑金动力提供的脚本文件复制到工程目录2014418中

根据脚本文件修改管脚名称

运行脚本文件

首先保存一下文件,然后右键单击工程名

弹出下图后,点击硬件和指针选项

按照下图进行修改

修改设置并确定后开始编译

编译完成后得到一个总结

回到Block1.bdf,可以看到引脚的分配情况

至此,硬件部分设计完成。

软件设计

打开NIOSⅡ9.0 IDE,单击Workbench

转换工作空间,一定要确定工作空间是正确的

建立工程

点击后会出现工程向导界面,单击红圈处的内容

为新工程命名为trcsoft,选择正确的PTF文件,建立一个空白的模板

点击Finish完成新工程的建立,接下来对工程rtcsoft进行配置

单击c/c++ build

调试级别是编译过程中显示编译内容的多少,建议将级别调到最高,设置完成后回到主界面。

新建一个C源文件main.c

键入以下内容

#include

#include

#include

#include

#include"../rtcsoft/ds1302.h"

unsigned char time[7] = {0x00,0x04,0x19,0x20,0x04,0x07,0x14};//格式为: 秒分时日月星期年

int main()

{

ds1302.set_time(time); //设置实时时钟的时间

while(1){

ds1302.get_time(time); //采集时间

printf("20%d-%d-%d %d:%d:%d\n",time[6],time[4],time[3],time[2],time[1 ],time[0]);

usleep(100000);

}

return 0;

}

新建一个header文件ds1302.h

键入以下内容

#ifndef DS1302_H_

#define DS1302_H_

#include"../rtcsoft/sopc.h"

#define RTC_DATA_OUT RTC_DATA->DIRECTION = 1

#define RTC_DATA_IN RTC_DATA->DIRECTION = 0

typedef struct{

void (* set_time)(unsigned char *ti);

void (* get_time)(char * ti);

相关文档
最新文档