AD转换是非常普遍的模块了,在8位或者16位的单片机上都有应用,在HCS12系列的单片机上内置了一个AD转换器,可用于8位或者10位的AD转换,但做不了DA转换。原理很简单,就不提了。
寄存器:
ATDCTL2 AD的电源开关、中断和外部触发信号。
ATDCTL3 AD转换的序列长度、结果寄存器是否采用先进先出方式以及冻结模式下的设置。
ATDCTL4 时钟频率、第二阶段采样的时间长度及AD转换的精度(8位或者10位)。
ATDCTL5 AD转换序列的类型和采样的模拟量输入通道。
ATDSTAT0 包括转换完成标志位、外部触发中断溢出标志位、先入先出模式位和转换结果标号位。
ATDTEST1 用于激活特殊通道
ATDSTAT1 包含一些转换完成标志位。
ATDDIEN AD转换输入使能寄存器
PORTAD 数据寄存器
ATDDR AD转换结果寄存器
主要各个位的介绍见数据手册。
附初始化头文件:
ATDCTL2=0B11000000;
//ATDCTL2.ADPU=1为打开转换电源开关
//ATDCTL2.AFFC=1为AD转换CCF自动清零位
ATDCTL3=0B00001011;
//ATDCTL3.S1C=1表示序列长度为1
//ATDCTL3.FIFO=0为非FIFO模式
//ATDCTL3.FRZ0~FRZ1=11表示立刻进入冻结模式
ATDCTL4=0B00000111;
//ATDCTL4.PRS4~PRS0 = 00111表示总线频率16分频
ATDCTL4&=0B01111111;
//ATDCTL4.SRES8=0 表示10转换精度
AD模拟量输入的参考电压由VRL、VRH两个引脚决定。数字量的存储要注意是向左对齐或者向右对齐,并且注意软件滤波时防止溢出。
关键字:AD转换 HCS12 学习笔记
引用地址:
AD转换__HCS12学习笔记(3)
推荐阅读最新更新时间:2024-03-16 14:32
MSP430F5438学习笔记 DCO倍频至8MHZ
1.平台说明 MS430F5438 // 时钟默认情况 // FLL时钟 FLL选择 XT1 // 辅助时钟 ACLK选择 XT1 32768Hz // 主系统时钟 MCLK选择 DCOCLKDIV 1048576Hz // 子系统时钟 SMCLK选择 DCOCLKDIV 1048576Hz #include msp430.h void clock_config(void); void select_xt1(void); void dco_config(void); int main(void) { clock_config();
[单片机]
CAN总线学习笔记四:CAN总线通信
在理解了CAN总线的自通信程序后,再来探讨CAN总线间的相互通信变得容易了许多。对于是自通信还是相互通信,这个肯定是需要对寄存器进行必要的设置的,分析PIAE的两个程序后不难发现,自通信和互通信需要设置的知识模式寄存器,这个是在SJA1000的初始化时进行设定的。 本文引用地址:http://www.eepw.com.cn/article/268271.htm SJA1000的初始化程序我根据习惯,直接把它独立成一个子程序了。如下,是工作于自通信时的初始化程序。
///////////////////////////////////////////////
//函数:init_sja1000
//说明
[嵌入式]
143条 超详细整理STM32单片机学习笔记(必看)
1、AHB系统总线分为APB1(36MHz)和APB2(72MHz),其中2 1,意思是APB2接高速设备 2、Stm32f10x.h相当于reg52.h(里面有基本的位操作定义),另一个为stm32f10x_conf.h专门控制外围器件的配置,也就是开关头文件的作用 3、HSE Osc(High Speed External Oscillator)高速外部晶振,一般为8MHz,HSI RC(High Speed InternalRC)高速内部RC,8MHz 4、LSE Osc(Low Speed External Oscillator)低速外部晶振,一般为32.768KHz,LSI RC(Low Speed InternalRC
[单片机]
学习嵌入式Linux的笔记和体会
一个典型的桌面Linux系统包括3个主要的软件层---linux内核、C库和应用程序代码。 内核是唯一可以完全控制硬件的层,内核驱动程序代表应用程序与硬件之间进行会话。内核之上是C库,负责把POSIX API转换为内核可以识别的形式,然后调用内核,从应用程序向内核传递参数。应用程序依靠驱动内核来完成特定的任务。 在设计嵌入式应用的时候,可以不按照这种层次,应用程序越过C库直接和内核会话,或者把应用和内核捆绑在一起,甚至可以把应用写为内核的一个线程,在内核中运行,虽然这样在移植上带来了困难,但考虑嵌入式系统对尺寸要求小的特点,是完全可行的。不过我们使用三层软件结构的模式来学习嵌入式linux将会是我们认识更清晰,简单可行并使应
[单片机]
STM32学习笔记(5):通用定时器PWM输出
1. TIMER输出PWM基本概念 脉冲宽度调制(PWM),是英文 Pulse Width Modulation 的缩写,简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术。简单一点,就是对脉冲宽度的控制。一般用来控制步进电机的速度等等。 STM32的定时器除了TIM6和TIM7之外,其他的定时器都可以用来产生PWM输出,其中高级定时器TIM1和TIM8可以同时产生7路的PWM输出,而通用定时器也能同时产生4路的PWM输出。 1.1 PWM输出模式 STM32的PWM输出有两种模式,模式1和模式2,由TIMx_CCMRx寄存器中的OCxM位确定的( 110 为模式1, 111 为模式2
[单片机]
STM32学习笔记一(LED,跑马灯,呼吸灯)
1.点亮板上的LED小灯 首先,我先自我介绍一下。我叫华震,今年应届毕业,普通本三的学生。我有在培训机构培训过ARM Cortex-A8,为什么还要掉头来学习STM32(M3的核)呢,因我我发现现在大多数企业都在用STM32,包括裸机开发,跑ucOS-II、ucGUI等等。所以我买了块红牛开发板来学习STM32,当然如果你刚接触STM32只想简单的入个门的话,我建议你买个便宜的开发板就好了,或者买个最小系统也是可以的。有兴趣一起讨论学习的朋友可以加我QQ详聊,我的QQ是1002521871,验证密码是:呵呵。加QQ请发送“STM32学习讨论”验证消息,否则不加。那好前面就说这么多,下面我们来看看如何点亮我开发板的LED小灯吧。 那
[单片机]
STM32F4学习笔记12——RNG随机数发生器
RNG主要特性 RNG 处理器是一个以连续模拟噪声为基础的随机数发生器,在主机读数时提供一个 32 位的 随机数。 RNG的主要特性 ● 提供由模拟量发生器产生的 32 位随机数 ● 两个连续随机数的间隔为 40 个 PLL48CLK 时钟信号周期 ● 通过监视 RNG 熵来标识异常行为(产生稳定值,或产生稳定的值序列) ● 可被禁止以降低功耗 RNG功能描述 随机数发生器采用模拟电路实现。此电路产生馈入线性反馈移位寄存器 (RNG_LFSR) 的种子, 用于生成 32 位随机数。 该模拟电路由几个环形振荡器组成,振荡器的输出进行异或运算以产生种子。RNG_LFSR 由 专用时钟 (PLL48CLK) 按恒定频率提供时钟信息,
[单片机]
MSP430学习笔记(3)时钟模块
1. 时钟模块包括高速晶体振荡器、低俗晶体振荡器、数字控制振荡器DCO、锁频环FLL以及锁频环增强版本FLL+等部件构成。 2. 时钟模块产生3个输出结果:ACLK(辅助时钟),MCLK(主系统时钟)和SMCLK(子系统时钟)。 3. MSP430采用锁频环FLL以及锁频环增强版本FLL+等部件将晶体频率倍频至系统频率。数字控制振荡器DCO和锁频环FLL计数相结合可实现快速启动。在晶体振荡器失效时DCO可自动用于系统时钟。 4. 3个时钟输入源: a) LFXT1CLK:低频时钟源 b) XT2CLK:高频时钟源 c) DCOCLK:数字控制RC振荡器 5. 3种时钟信号 a)
[单片机]