27
S3C44B0X S3C44B0X 看看看看看看看看看看看看A/D A/D 看看看 看看看 功功功功功功功 功功功功功功功

S3C44B0X 看门狗定时器、 A/D 转换器

  • Upload
    satin

  • View
    167

  • Download
    1

Embed Size (px)

DESCRIPTION

S3C44B0X 看门狗定时器、 A/D 转换器. 功能及应用开发. S3C44B0X 看门狗定时器. 在嵌入式应用中, CPU 必须可靠工作,即使因为某种原因进入了一个错误状态(运行不稳定、死机或停不了机即程序跑飞等现象),系统也应该可以自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。 看门狗有 硬件看门狗和软件看门狗 之分,如果用 MCU 芯片外部电路实现,为硬件看门狗;如果用芯片内部定时 / 计数器实现,称为软件看门狗。当看门狗超时后,引起看门狗中断,给系统发出一个复位信号引起系统重启。 - PowerPoint PPT Presentation

Citation preview

Page 1: S3C44B0X 看门狗定时器、 A/D 转换器

S3C44B0XS3C44B0X看门狗定时器、看门狗定时器、 A/DA/D转换器转换器

功能及应用开发功能及应用开发

Page 2: S3C44B0X 看门狗定时器、 A/D 转换器

S3C44B0XS3C44B0X 看门狗定时器看门狗定时器 看门狗定时器概述看门狗定时器概述

在嵌入式应用中, CPU 必须可靠工作,即使因为某种原因进入了一个错误状态(运行不稳定、死机或停不了机即程序跑飞等现象),系统也应该可以自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。

看门狗有硬件看门狗和软件看门狗之分,如果用 MCU芯片外部电路实现,为硬件看门狗;如果用芯片内部定时 /计数器实现,称为软件看门狗。当看门狗超时后,引起看门狗中断,给系统发出一个复位信号引起系统重启。

“ 喂狗”—当一个硬件系统开启了 watchdog 功能时,运行在这个硬件系统上的软件必须在规定的时间间隔内向看门狗发送一个信号,即复位看门狗计数器的值,以免watchdog 计时超时引发系统重启。

Page 3: S3C44B0X 看门狗定时器、 A/D 转换器

S3C44B0XS3C44B0X 看门狗定时器看门狗定时器 看门狗定时器工作过程看门狗定时器工作过程

看门狗定时器使用 MCLK 为其时钟源, MCLK 频率首先预分频, WTCON[15:8] 送入预分频值,然后使用再分频因子( 16 、 32 、 64 、 128 )再分频,由 WTCON[4:3] 选择,接着 WTDAT 中存放的计数初值装载到 WTCNT中, WTCNT 开始递减计数。当计数到 0 时,由 WTCON[2]位控制是否允许看门狗中断产生。若该位为 0 ,不允许中断,进入复位信号产生器。此时,若看门狗输出复位信号的允许位 WTCON[0] 为 1 时,允许产生复位信号,复位信号产生器就发出一个复位信号 RESET 。

注:在看门狗使能之后, WTDAT 不能自动装入 WTCNT 。因此,初值必须在看门狗定时器开始工作前,写到看门狗定时器计数寄存器 WTCNT 中。

Page 4: S3C44B0X 看门狗定时器、 A/D 转换器

看门狗功能框图:看门狗功能框图:

系统时钟

WTCON:看门狗定时计数寄存器

WTDAT:看门狗定时器数据寄存器

预分频

再分频

计数初值

中断允许位

复位信号

Page 5: S3C44B0X 看门狗定时器、 A/D 转换器

看门狗功能框图:看门狗功能框图:

看门狗定时器时间周期:

Page 6: S3C44B0X 看门狗定时器、 A/D 转换器

看门狗寄存器:看门狗寄存器:一旦使能,WTDAT不能自动装入WTCNT,因此,初值必须在看门狗定时器开始工作前,写到

WTCNT中。WTCON

Page 7: S3C44B0X 看门狗定时器、 A/D 转换器

WTDAT

WTCNT

看门狗寄存器:看门狗寄存器:

Page 8: S3C44B0X 看门狗定时器、 A/D 转换器

1 、设置复位操作功能;

2 、对看门狗控制寄存器 WTCON 设置,包括比例因子、分频值、复位使能等;

3 、对看门狗数据寄存器 WTDAT 和计数寄存器 WTCNT 进行设置;

4 、启动看门狗计数器。

看门狗定时器应用流程

Page 9: S3C44B0X 看门狗定时器、 A/D 转换器

void Test_WDTimer(void){ rINTMSK=~(BIT_GLOBAL|BIT_WDT); pISR_WDT=(unsigned)Wdt_Int; isWdtInt=0;

rWTCON=((MCLK/1000000-1)<<8)|(3<<3)|(1<<2); rWTDAT=8448/4; rWTCNT=8448/4; rWTCON=rWTCON|(1<<5); while(isWdtInt!=10);

rWTCON=((MCLK/1000000-1)<<8)|(3<<3)|(1); // reset enable rWTCNT=8448*2; rWTCON=rWTCON|(1<<5); while(1); rINTMSK|=BIT_GLOBAL;}

void Wdt_Int(void){ rI_ISPC=BIT_WDT; Uart_Printf("%d ",++isWdtInt);}

interrupt enable

Watch Dog timer enable

实例

Page 10: S3C44B0X 看门狗定时器、 A/D 转换器

A/DA/D 转换器转换器主要性能指标主要性能指标分辨率转换时间量程绝对精度

相对精度线性误差输入带宽输入电压范围

A/D 转换器为10 位,则其

分辨率为:满量程的

1/1024 的模拟量

A/D 转换器为 10 位,输入 5V 电压的模拟量,

求分辨率——A/D 转换器能分辨的最小模拟输入量

——A/D 转换完成一次所需时间—— 所能转换的输入电压范围

—— 整个输出数字范围内,任一数码对应模拟量实际值与理论值之间的最大误差,用差值表示

—— 与绝对误差同一含义,用百分比表示

——0~ 输入信号的最高频率——1 LSB (最低有效位)

——0~2.5V

Page 11: S3C44B0X 看门狗定时器、 A/D 转换器

S3C44B0X A/DS3C44B0X A/D 转换器转换器

10 位逐次逼近式模数转换器;

特性特性

分辨率:A/D转换器能分辨的最小模拟输入量

1/1024

A/D转换器转换方法分类1 、计数式2 、逐次逼近式

Page 12: S3C44B0X 看门狗定时器、 A/D 转换器

最高转换速率: 100ksps

测量范围: 0 ~ 2.5V ;8 通道多路模拟输入端;具有掉电模式。10 位分辨率1 LSB 线性误差0~100HZ 输入带宽

特性特性

( kilo samples per second )

Page 13: S3C44B0X 看门狗定时器、 A/D 转换器

S3C44B0X A/DS3C44B0X A/D 转换器内部结构框转换器内部结构框图图

SAR :Successive

Approximation Register

逐次逼近

AMUX :通道选择

Page 14: S3C44B0X 看门狗定时器、 A/D 转换器

A/DA/D 转换器转换器 A/DA/D 转换器内部结构转换器内部结构

ADCDAT

A/D转换控制电路

A/D数据寄存器

ADCCON

A/D控制寄存器

AD 转换时钟AIN0

AIN1

AIN7

ADCPSR

A/D预分频寄存器

Page 15: S3C44B0X 看门狗定时器、 A/D 转换器

A/DA/D 转换器寄存器描述转换器寄存器描述

名称 描述 访问 复位值ADCCO

NA/D控制寄存器。 A/D转换开始前,必须设置 ADCR寄存器来选择工作模式。 读写 0x00000

01

ADCDAT

A/D数据寄存器。该寄存器包含 ADC 的 10位的转换结果。 读写 NA

ADCDAT

A/D转换控制电路

A/D数据寄存器

ADCCON

A/D控制寄存器

AD 转换时钟AIN0

AIN1

AIN7

ADCPSR

A/D预分频寄存器

Page 16: S3C44B0X 看门狗定时器、 A/D 转换器

A/DA/D 转换器寄存器描述转换器寄存器描述

位 6 5 4:2 1 0

功能 FLAG SLEEPINPUT

SELECTREAD_START

ENABLE_START

———— 控制寄存器控制寄存器

注: 1 、转换期间, FLAG 位一直为 0 ,转换结束后为 1 ; 2 、 SLEEP 位为 1 表示休眠状态, A/D 转换操作暂停,退出休眠状态需要等待 10ms ; 3 、通道切换至少有 15us 的间隔。 4 、通过 READ_STRAT 使能,可以通过 DMA 通道将 AD 转换数据存储到内存。

ADCCON

A/D控制寄存器

ADCDAT

A/D转换控制电路

A/D数据寄存器

AD 转换时钟AIN0

AIN1

AIN7

ADCPSR

A/D预分频寄存器

Page 17: S3C44B0X 看门狗定时器、 A/D 转换器
Page 18: S3C44B0X 看门狗定时器、 A/D 转换器

ADCDAT

A/D转换控制电路

A/D数据寄存器

AD 转换时钟AIN0

AIN1

AIN7

ADCPSR

A/D预分频寄存器

A/DA/D 转换器寄存器描述转换器寄存器描述———— 预分频寄存器预分频寄存器

ADCCON

A/D控制寄存器

注:预置比例因子决定转换时间的长短,数据越大,转换时间越长。A/D 转换时间计算:如系统时钟为 66MHz , PRESCALER=20 :转换时间 =1/ ( 66MHz/ ( 2* ( 20+1 ))) *16

Page 19: S3C44B0X 看门狗定时器、 A/D 转换器

S3CEV40 上采用 4 线式电阻式触摸屏,点数 320*240 。

触摸屏分类:触摸屏分类:表面声波触摸屏;电容感应触摸屏; -苹果手机 材质很硬 与玻璃相当

支持多点触摸红外线触摸屏;电阻式触摸屏; -诺基亚 5800手机 材质很软

不支持多点触摸

S3C44B0X A/DS3C44B0X A/D 转换器转换器

线数越多,坐标定位越精确

Page 20: S3C44B0X 看门狗定时器、 A/D 转换器

S3CEV40S3CEV40 触摸屏的接口设计触摸屏的接口设计

触摸屏触摸屏 XX 轴方向接通轴方向接通 5V5V 均匀电压场,均匀电压场, YY 方向同样有方向同样有 5V5V的均匀电压场。接触点产生后,即产生中断通知的均匀电压场。接触点产生后,即产生中断通知 CPUCPU 进进行行 A/DA/D 转换,则导电层将接触点的电压引至控制电路进行转换,则导电层将接触点的电压引至控制电路进行A/DA/D 转换,得到的电压值和转换,得到的电压值和 5V5V 相比可以得到触摸点的坐相比可以得到触摸点的坐标。标。

已知触摸屏左上和右下角坐标:已知触摸屏左上和右下角坐标: YmaxYmax ,, YminYmin ,, XmaxXmax ,,XminXmin

则转化为象素点坐标(则转化为象素点坐标( XX ,, YY ):):X=X= ( ( Xa - Xmin Xa - Xmin )) **320/320/ ( ( Xmax - Xmin Xmax - Xmin ))Y=Y= ( ( Ya - Ymin Ya - Ymin )) **240/240/ ( ( Ymax - Ymin Ymax - Ymin ))

Page 21: S3C44B0X 看门狗定时器、 A/D 转换器

触摸屏的接口设计触摸屏的接口设计

修正修正

Page 22: S3C44B0X 看门狗定时器、 A/D 转换器

触摸屏的接口设计触摸屏的接口设计X : AIN1

Y : AIN0

Page 23: S3C44B0X 看门狗定时器、 A/D 转换器

void TS_init(void){ /* enable interrupt */ rINTMOD=0x0; //IRQ 中断模式 rINTCON=0x1; rI_ISPC |= BIT_EINT2; // clear pending_bit

rPUPE = 0x0; // Pull up rPDATE = 0xb8; // should be enabled DelayTime(100); rEXTINT |= 0x200; // falling edge trigger pISR_EINT2=(int)user_irq1; // set interrupt handler rCLKCON = 0x7ff8; // enable clock ,时钟和电源管理模块 rADCPSR = 0x1;//0x4; // A/D prescaler rINTMSK =~(BIT_GLOBAL|BIT_EINT2);

oneTouch = 0;}

触摸屏的初始化触摸屏的初始化

Page 24: S3C44B0X 看门狗定时器、 A/D 转换器

.macro IRQHandle user_handle: stmdb sp!, {r0-r11, ip, lr} /* 保存 r0-r11, ip, lr */ ldr r0, =\user_handle mov lr, pc bx r0 /* 调用 user 中断处理程序 */ ldmia sp!, {r0-r11, ip, lr} /* 恢复 r0, ip, lr */ subs pc, r14, #4 /* 中断返回 */ .endm .extern TSInt .global user_irq1 user_irq1: IRQHandle TSInt

Page 25: S3C44B0X 看门狗定时器、 A/D 转换器
Page 26: S3C44B0X 看门狗定时器、 A/D 转换器

void TSInt(void){ int i; char fail = 0; ULONG tmp; ULONG Pt[6];

// <X-Position Read>rPDATE=0x68;rADCCON=0x1<<2; // AIN1

DelayTime(1000); // delay to set up the next channelfor( i=0; i<5; i++ ){

rADCCON |= 0x1; // Start X-position A/D conversion

while( rADCCON & 0x1 ); // Check if Enable_start is low while( !(rADCCON & 0x40) ); // Check ECFLG

Pt[i] = (0x3ff&rADCDAT);}// read X-position average valuePt[5] = (Pt[0]+Pt[1]+Pt[2]+Pt[3]+Pt[4])/5;

tmp = Pt[5];

触摸屏的中断功能触摸屏的中断功能

Page 27: S3C44B0X 看门狗定时器、 A/D 转换器

// <Y-Position Read>rPDATE=0x98;rADCCON=0x0<<2; // AIN0

DelayTime(1000); // delay to set up the next channel

for( i=0; i<5; i++ ){

rADCCON |= 0x1; // Start Y-position conversion while( rADCCON & 0x1 ); // Check if Enable_start is

low while( !(rADCCON & 0x40) ); // Check ECFLG

Pt[i] = (0x3ff&rADCDAT);}// read Y-position average valuePt[5] = (Pt[0]+Pt[1]+Pt[2]+Pt[3]+Pt[4])/5;

if(!(CheckTSP|(tmp < Xmin)|(tmp > Xmax)|(Pt[5] < Ymin)|

(Pt[5] > Ymax))) // Is valid value? {

tmp = 320*(tmp - Xmin)/(Xmax - Xmin); // X - position

Uart_Printf("X-Posion[AIN1] is %04d ", tmp);

Pt[5] = 240*(Pt[5] - Xmin)/(Ymax - Ymin);Uart_Printf(" Y-Posion[AIN0] is %04d\n", Pt[5]);

}