- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
嵌入式大作业(武汉华夏理工学院).docx
目录第1章 硬件设计11.1功能实现11.2硬件平台11.3硬件原理分析及原理图11.4硬件驱动的实现步骤及分析2第2章 软件设计52.1软件平台52.2相关寄存器定义52.3功能函数52.4主函数62.5修改两个Makefile7第3章 运行及调试8第4章 总结体会18第1章 硬件设计1.1功能实现通过S3C2410X(ARM9)的ADC采集实验箱三个电位器的值,旋转电位器时可在屏幕上看到当前采集值的变化。1.2硬件平台硬件平台为博创经典UP-NETARM2410实验箱(S3C2410处理器)。1.3硬件原理分析及原理图 1.3.1 A/D接口原理A/D转换器是模拟信号和CPU之间联系的接口,它将连续变化的模拟信号转换为数字信号,以供计算机和数字系统进行分析、处理、存储、控制和显示。 1.3.2 S3C2410的A/D转换器S3C2410的 A/D转换器包含一个8通道的模拟输入转换器,可以将模拟输入信号转换成10位数字编码。在A/D转换时钟频率为2.5MHz时,其最大转换率为500KSPS,输入电压范围是0~3.3V。A/D转换器支持片上操作、采样保持功能和掉电模式。 1.3.3硬件原理图图1电位器内部接线原理图1.4硬件驱动的实现步骤及分析 1.4.1 清楚原理硬件原理图如图1。 1.4.2 列出问题(硬件如何操作?) Muxed在IO一章搜索AIN0,没有,不是多功能引脚clk需配置时钟,查表1。开启时钟,在07-clock power management一章中搜索ADC。时钟分频,在16-ADC touch screen一章中的寄存器中配置。 256分频,并使能分频。表1 CLKCON控制寄存(CLKCON)位描述参数设置ADC通道选择。模式选择:正常/闲置。闲置模式(Standby Mode):在该模式下转换数据寄存器中的值都被保留为上次转换时的数据。 设置启动AD转换的方式:读启动 。功能int adc_read(void);如何判断采样转换完成?if (ADCCON[15] == 0b1)则转换完成,可读取采样值,否则继续等如何读取采样值(整数)?return ADCDAT0[0:9]void adc_init(void);设置muxed、 clk及参数如何启动ADC? tmp = ADCDAT0[0:9] 1.4.3看数据手册中设备对应章节内容overview看小节题目图和表,如下表2、表3。表2 ADC控制寄存(ADCCON)位描述表3 ADC转换数据寄存器(ADCDAT0)位描述 1.4.4看寄存器列表看寄存器列表说明,推断哪些寄存器是需要看的。详细看需要看的寄存器说明,能解决95%的问题。 1.4.5如果有问题没有解决, 看厂家的demo程序厂家给的驱动(裸机)Linux里面的驱动 1.4.6安排驱动结构初始化参数设置功能第2章 软件设计2.1软件平台软件平台为eclipse+keil+PUTTY(串口调试助手)。2.2相关寄存器定义工程-include文件夹-adc文件夹-adc.h,在adc.h中添加:#define CLKCON (*((volatile unsigned int*)0x4C00000C))//定义CLKCON寄存器#define ADCCON (*((volatile unsigned int*)0)//定义ADCCON寄存器#define ADCDAT0 (*((volatile unsigned int*)0x5800000C))//定义ADCDAT0寄存器void adc_init(void);//adc初始化函数int adc_read0(void);//读第一个电位器的值int adc_read1(void);//读第二个电位器的值int adc_read2(void);//读第三个电位器的值2.3功能函数 在工程中新建drivers文件夹,在drivers中新建adc文件夹,在adc中新建adc.c文件,在adc.c中添加如下代码:#includeadc/adc.hvoid adc_init(void){ CLKCON|=0X115; //开启时钟,PCLK Enable ADCCON|=0X114; ADCCON|=0XFF6; //时钟分频,256分频,并使能分频 // ADCCON=~(0x073); //ADC通道选择AIN0 ADCCON=~(0x12); //normal mode ADCCON|=0x11; //start by read // int tmp=ADCDAT00X3FF; //star
文档评论(0)