武汉华夏理工学院课程设计课程名称嵌入式技术与应用课程设计题目基于ARM9的数据采集程序设计专业自动化班级自动化1133学号1021241姓名成绩指导教师2016年11月14日课程设计任务书学生姓名:专业班级:自动化1133指导教师:工作单位:信息工程学院设计题目:基于ARM9的数据采集程序设计初始条件:1、硬件平台为博创经典UP-NETARM2410实验箱(S3C2410处理器)。2、软件平台为eclipse+keil+PUTTY(串口调试助手)。设计任务:(在规定的时间内完成下列任务)1、通过S3C2410X(ARM9)的ADC采集实验箱三个电位器的值,旋转电位器时可在屏幕上看到当前采集值的变化。2、中断功能:按下中断按键触发中断,中断时三个LED灯闪烁一次,且屏幕上打印正在中断的提示。3、报警功能:设定一个临界值(如500),当采集的值超过此临界值时,灯闪烁报警,三个电位器与三个灯一一对应。时间安排:各时间段的任务可以交替进行课程设计安排在第10-11周,地点在532实验室,设计步骤及时间进度如下:时间阶段内容第一周星期一介绍题目,查找相关资料第一周星期二需求分析第一周星期三硬件总体设计、软件总体设计,画出硬件原理图和程序流程图第一周星期四~星期五编写、调试、修改程序第二周星期一~星期三软硬件联调第二周星期四撰写设计报告第二周星期五检查、答辩后修改设计报告设计报告撰写格式要求:(按提供的设计报告统一格式撰写)报告内容应包括:(1)实现的功能(2)软硬件平台(3)硬件原理分析及原理图(4)硬件驱动的实现步骤及分析(5)程序流程图代码及注释(6)工程树形结构截图(7)运行及调试的步骤(图文并茂)(8)总结体会指导教师签名:2016年11月7日系主任(或责任教师)签名:2016年11月7日目录第1章需求分析............................................................1第2章硬件及驱动系统的实现.................................................22.1原理图与引脚..........................................................22.1.1LED引脚...........................................................22.1.2UART..............................................................22.1.3中断开关INTKEY....................................................22.1.4ADC驱动引脚......................................................32.2配置...................................................................32.2.1LED灯分析配置.....................................................32.2.2UART分析配置.....................................................32.2.3中断分析配置.......................................................72.2.4ADC及其驱动分析配置................................................102.3驱动...................................................................122.3.1相关寄存器定义.....................................................142.3.2实现驱动...........................................................152.3.3编写main函数......................................................172.3.4修改两个makefile...................................................17第3章系统运行及调试.........................................................183.1启动串口调试助手......................................................183.2启动H-JTAG...........................................................183.3运行eclipse工程.....................................................193.4添加文件到工程.......................................................193.5调试工程.............................................................193.6实验现象.............................................................21第4章总结和体会............................................................23参考文献...................................................................24附录....................................................................251第1章需求分析1.1考核要求1通过S3C2410X(ARM9)的ADC采集实验箱三个电位器的值,旋转电位器时可在屏幕上看到当前采集值的变化。2中断功能:按下中断按键触发中断,中断时三个LED灯闪烁一次,且屏幕上打印正在中断的提示。3报警功能:设定一个临界值(如500),当采集的值超过此临界值时,灯闪烁报警,三个电位器可与三个灯一一对应,并且发出声音警报。1.2软硬件平台1.2.1硬件平台博创经典UP-NETARM2410实验箱(S3C2410处理器)。1.2.2软件平台eclipse+keil+PUTTY(串口调试助手)。2第2章硬件及驱动系统的实现2.1原理图与引脚2.1.1LED引脚1LED灯及报警因为要实现三个LED灯闪烁,涉及到LED,通过搜索Database第6章Device找到如图2所示的引脚图,找到了GPC5,GPC6,GPC7引脚。当中断开关按下时,LED闪烁一次,同时,LED作为报警器,当超过临界阻值时(实验中为500),灯闪烁报警。2.1.2UART图2RS232引脚定义因为要接收数据(电位器的阻值),所以必然涉及到串行数据传输接口。如上图所示,可以看到各个引脚的信息,由于只需要接收数据,实验时接RS232-0。2.1.3中断开关INTKEY图3INTKEY引脚原理图3因为要实现按下中断按键触发中断,所以通过搜索Database第6章Device找到如图2所示的引脚图,找到了EINT5引脚。2.1.4ADC驱动引脚图4ADC驱动引脚原理图因为是采集实验箱电位器的值,要把模拟信号转换成为数字信号,这其中涉及到AD/DA转换。所以通过搜索Database第10章AD/DA找到图1的引脚图。首先实现是采集3个电位器的值,找到了AINT0,AINT1,AINT2引脚。2..2具体配置2.2.1LED灯分析配置(1)通过到第九章I/O搜索发现该引脚是多功能引脚,如下表,需要进行配置,即作如下配置:GPCCON[11:10]=0b01;GPCCON[13:12]=0b01;GPCCON[15:14]=0b01;表1PortC控制寄存器表2PORTC控制寄存器表3GPCDAT的描述(2)无需用到时钟,故无需分频。(3)因为要控制灯的点亮和熄灭,故要对GPCDAT进行配置,配置见led程序。2.2.2UART分析配置(1)通过到第九章I/O搜索RXD0和TXD0,找到了该引脚,是多功能引脚。(2)因需要接收更新的数据,uart没有时钟,故需要给它配置时钟。在CLOCK章搜索uart得到下表4表4CLK控制寄存器由于使用的是uart0,故应作如下配置:CLKCON[10]=0b1,即设置PCLK到串口。(3)其它参数配置与相关寄存器在uart一章搜索uart有:UART行控制寄存器(ULCONn),其功能及位描述如下表所示表5uart行控制寄存器UART控制寄存器(UCONn),其功能及位描述如下表所示表6UART控制寄存器5UARTFIFO控制寄存器(UFCONn),其功能及位描述如下表所示表7UARTFIFO控制寄存器UARTmodem控制寄存器(UMCONn),其功能及位描述如下表所示6表8UARTmodem寄存器UARTTX/RX状态寄存器(UMCONn),其功能及位描述如下表所示表9UARTTX/RX状态寄存器此寄存器系统已经配置好,用来判断发送或者接收是否完成的寄存器。UART波特率因子寄存器(UBRDIVn),其功能及位描述如下表所示表10UART波特率因子寄存器2.2.3中断配置7(1)到第九章I/O搜索发现EINT5是多功能引脚,需要进行配置,即EXTINT0[22:20]=0b01;即设置的是下降触发。表11外部中断控制寄存器表12外部中断挂起寄存器即中断请求,清除外部中断请求。引脚设置见表13。8表13PORTF控制寄存器(2)无需用到时钟,无需分频。(3)参数配置与相关寄存器在第十四章Interruptcontroller搜索EINT有:表14为EINTMASK寄存器,其功能及位描述如下表所示,这是多功能管脚中断使能,即外部中断使能,使用时配置为EINTMASK[5]=0b0。表14外部中断屏蔽寄存器表15为SRCPND寄存器,其功能及位描述如下表所示,这是清除中部的中断源,使用时配置为SRCPND[4]=0b1。9表15SRCPND(中断源挂起)寄存器表16为INTMOD寄存器,其功能及位描述如下表所示,这是指示中断源为irq类型,使用时配置为INTMOD[4]=0b0。表16INTMOD(中断模式)寄存器表17为INTMSK寄存器,其功能及位描述如下表所示,表内部中断使能,使用时配置为INTMSK[4]=0b0。表17INTMSK(中断屏蔽)寄存器表18为INTPND寄存器,其功能及位描述如下表所示。用来清除内部中断请求,使用时配置为INTPND[4]=0b1。表18INTPND(中断挂起)寄存器10表19是中断偏移寄存器,指示IRQ中断源。表19INTOFFSET(中断偏移)寄存器2.2.4ADC及其驱动分析配置(1)通过到第9章I/O一章搜索没找到,发现AINT0,AINT1,AINT2引脚并不是多功能引脚。(2)因为要及时对数据进行更新且系统的频率过高,所以要对时钟进行分频,搜索CLOCK章表20CLK控制寄存器11表21ADCCON从表20和21中可以看出需要做如下配置:CLKCON[15]=1,以便把系统时钟给ADC;READ_START[1]=1,因为已经使用了READ_START,因而可不用ENABLE_START。(3)参数配置与相关寄存器在ADC一章搜索表22ADC控制寄存器位描述在通道选择上,可通过SEL_MUX[