View
181
Download
1
Category
Preview:
DESCRIPTION
S3C44B0X 看门狗定时器、 A/D 转换器. 功能及应用开发. S3C44B0X 看门狗定时器. 在嵌入式应用中, CPU 必须可靠工作,即使因为某种原因进入了一个错误状态(运行不稳定、死机或停不了机即程序跑飞等现象),系统也应该可以自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。 看门狗有 硬件看门狗和软件看门狗 之分,如果用 MCU 芯片外部电路实现,为硬件看门狗;如果用芯片内部定时 / 计数器实现,称为软件看门狗。当看门狗超时后,引起看门狗中断,给系统发出一个复位信号引起系统重启。 - PowerPoint PPT Presentation
Citation preview
S3C44B0XS3C44B0X看门狗定时器、看门狗定时器、 A/DA/D转换器转换器
功能及应用开发功能及应用开发
S3C44B0XS3C44B0X 看门狗定时器看门狗定时器 看门狗定时器概述看门狗定时器概述
在嵌入式应用中, CPU 必须可靠工作,即使因为某种原因进入了一个错误状态(运行不稳定、死机或停不了机即程序跑飞等现象),系统也应该可以自动恢复。看门狗的用途就是使微控制器在进入错误状态后的一定时间内复位。
看门狗有硬件看门狗和软件看门狗之分,如果用 MCU芯片外部电路实现,为硬件看门狗;如果用芯片内部定时 /计数器实现,称为软件看门狗。当看门狗超时后,引起看门狗中断,给系统发出一个复位信号引起系统重启。
“ 喂狗”—当一个硬件系统开启了 watchdog 功能时,运行在这个硬件系统上的软件必须在规定的时间间隔内向看门狗发送一个信号,即复位看门狗计数器的值,以免watchdog 计时超时引发系统重启。
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 中。
看门狗功能框图:看门狗功能框图:
系统时钟
WTCON:看门狗定时计数寄存器
WTDAT:看门狗定时器数据寄存器
预分频
再分频
计数初值
中断允许位
复位信号
看门狗功能框图:看门狗功能框图:
看门狗定时器时间周期:
看门狗寄存器:看门狗寄存器:一旦使能,WTDAT不能自动装入WTCNT,因此,初值必须在看门狗定时器开始工作前,写到
WTCNT中。WTCON
WTDAT
WTCNT
看门狗寄存器:看门狗寄存器:
1 、设置复位操作功能;
2 、对看门狗控制寄存器 WTCON 设置,包括比例因子、分频值、复位使能等;
3 、对看门狗数据寄存器 WTDAT 和计数寄存器 WTCNT 进行设置;
4 、启动看门狗计数器。
看门狗定时器应用流程
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
实例
A/DA/D 转换器转换器主要性能指标主要性能指标分辨率转换时间量程绝对精度
相对精度线性误差输入带宽输入电压范围
A/D 转换器为10 位,则其
分辨率为:满量程的
1/1024 的模拟量
A/D 转换器为 10 位,输入 5V 电压的模拟量,
求分辨率——A/D 转换器能分辨的最小模拟输入量
——A/D 转换完成一次所需时间—— 所能转换的输入电压范围
—— 整个输出数字范围内,任一数码对应模拟量实际值与理论值之间的最大误差,用差值表示
—— 与绝对误差同一含义,用百分比表示
——0~ 输入信号的最高频率——1 LSB (最低有效位)
——0~2.5V
S3C44B0X A/DS3C44B0X A/D 转换器转换器
10 位逐次逼近式模数转换器;
特性特性
分辨率:A/D转换器能分辨的最小模拟输入量
1/1024
A/D转换器转换方法分类1 、计数式2 、逐次逼近式
最高转换速率: 100ksps
测量范围: 0 ~ 2.5V ;8 通道多路模拟输入端;具有掉电模式。10 位分辨率1 LSB 线性误差0~100HZ 输入带宽
特性特性
( kilo samples per second )
S3C44B0X A/DS3C44B0X A/D 转换器内部结构框转换器内部结构框图图
SAR :Successive
Approximation Register
逐次逼近
AMUX :通道选择
A/DA/D 转换器转换器 A/DA/D 转换器内部结构转换器内部结构
…
ADCDAT
A/D转换控制电路
A/D数据寄存器
ADCCON
A/D控制寄存器
AD 转换时钟AIN0
AIN1
AIN7
…
ADCPSR
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预分频寄存器
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预分频寄存器
…
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
S3CEV40 上采用 4 线式电阻式触摸屏,点数 320*240 。
触摸屏分类:触摸屏分类:表面声波触摸屏;电容感应触摸屏; -苹果手机 材质很硬 与玻璃相当
支持多点触摸红外线触摸屏;电阻式触摸屏; -诺基亚 5800手机 材质很软
不支持多点触摸
S3C44B0X A/DS3C44B0X 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 ))
触摸屏的接口设计触摸屏的接口设计
修正修正
触摸屏的接口设计触摸屏的接口设计X : AIN1
Y : AIN0
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;}
触摸屏的初始化触摸屏的初始化
.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
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];
触摸屏的中断功能触摸屏的中断功能
// <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]);
}
Recommended