实验四:C 语言开发/模数转换(ADC)实验
一、实验目的
1、掌握
C 语言嵌入式开发的基本步骤和原理。
2、学习使用
C 语言操作外设的方法。
3、掌握模数转换器外设的操作原理和编程。
二、实验设备
1、硬件:PC
机一台 、Mini2440 ARM
实验板一套 J-link
仿真器一套
2、软件:WindowsXP 系统,Keil uVision 4.0
集成开发环境
三、实验内容
(1)建立汇编-C
程序框架。
(2)使用
ADC 读取 Mini2440
实验板上的滑动变阻器产生的电压值。
四、实验预习要求
(1)学习
ARM 子程序调用相关的指令;
(2)查阅
S3C2440 芯片手册,了解模数转换器系统的结构和原理。
五、实验步骤
(一)C 语言编程实验:
(1)实验程序分为汇编语言和
C 语言两部分。汇编语言程序是处理器上电复位后执行的第一段程序,负责最基础的硬件初始化,在本实验中主要是初始化栈指针(SP)寄存器,为调用
C 语言函数做准备,然后跳转到 C 语言 main 函数执行;从 main
函数开始,程序的编写结构和执行原理基本上与 PC
机上典型的 C语言相同。
(2)启动
Keil uVision,新建一个工程
ex04-1。不需要系统提供的
Startup文件。建立汇编源文件
ex04-1.s,编写实验程序,然后添加到工程中。设置工程选项,存储器映射。设置工程调试选项。建立仿真初始化文件
RAM.ini。
具体步骤参考实验二。
(3)
建立 C 语言源文件 main.c,编写实验程序,然后添加到工程中。
。
(4)编译程序,
使用仿真器在目标板上调试运行程序, 使用单步、 设置断点,观察程序执行的流程,观察函数调用过程中栈指针寄存器(R13,SP)的值的变化。
(5)编程并观察
C 语言语句编译后对应的 ARM
汇编程序。
(二)模数转换器(ADC)实验:
(1)
本实验使用 S3C2440
片内模数转换器。从结构图和芯片手册可以知道, 该 ADC 模块总共有 8 个通道可以进行模拟信号的输入, 分别是 AIN0、AIN1、AIN2、AIN3、YM、YP、
XM、XP。模拟信号从任一通道输入,然后设定寄存器中预分频器的值来确定
AD 转换器频率,最后 ADC
将模拟信号转换为数字信号保存到 ADC
数据寄存器 0 中(ADCDAT0),然后
ADCDAT0 中的数据可以通过中断或查询的方式来访问。对于 ADC 的各寄存器的操作和注意事项请参阅数据芯片手册。本实验使用通道 0 采集实验板上的滑动变阻器的分压电压值.
(2)启动
Keil uVision,新建一个工程
ex04-2。不需要系统提供的
Startup文件。建立汇编源文件
ex04-2.s,编写实验程序,然后添加到工程中。设置工程选项,存储器映射。设置工程调试选项。建立仿真初始化文件
RAM.ini。
(3)实验程序实现了一个用于控制读取
ADC 指定通道的值的函数: int ReadAdc(int
ch);
在对 preScaler 变量初始化之后,即可通过调用该函数来多次采集连接在ADC 上的模拟信号值。
(5)
编译链接工程。连接实验板电源、J-link
仿真器,进行仿真调试。单步运行程序, 并改变板上滑动变阻器 W1 的阻值, 观察采集到的电压数值的变化。
六、实验程序
C
语言实验程序见程序清单 4.1、4.2。模数转换器实验程序见程序清单
4.3