加到输入和输出引脚上允许的最大电压的限制问题;两个电源间电流的互串问题;必须满足的输入转换门限电平问题。
器件对加到输入脚或输出脚的电压通常是有限制的。这些引脚有二极管或分离元件接到VCC。如果接入的电压过高,则电流将会通过二极管或分离元件流向电源。例如3V器件的输入端接上5V信号,则5V电源将会向3V电源充电。持续的电流将会损坏二极管和电路元件。
S3C44BOX是LVCMOS电路,MC14433, X9312是CMOS电路,现比较一下LVCMOS和CMOS逻辑电平见表。
可见LVCMOS的VON<3.3,而CMOS的VIH,>3.5V,所以LVCMOS不能驱动CMOS,所以必须选择电平转换器件进行电平转换,选择IDT公司的IDT74FCT164245T,它是16位3. 3V和5V双向逻辑电平转换的CMOS芯片,它有两个端口A,B,其中A端接3.3V, B端接5V,控制其输入输出使能引脚就可以控制逻辑电平转换方向,如图所示,只画出一个8位端口的转换逻辑框图。
控制xOE,xDIR引脚逻辑电平就可以控制端口电平转换方向,具体
8
情况请看表。
3.5 LCD显示、存储器设计
由于S3C44BOX内部有LCD控制器,故选择不带驱动器的液晶,选择台湾三亚的STN液晶LM403,它是160X160点阵,四位数据数据总线,EL背光,它的电源电压是3.3V,因此可直接和S3C44BOX相连。
程序存储器选择2MB 16位的SST39VF160, RAM选择现代公司8M 16位PC100/PC133 SDRAM HY57V641620。
3.6 键盘、串口设计
键盘采用3X3矩阵式,串口采用MAX3232。
3.7 系统晶振与复位电路设计
系统cPu外部晶振是8Mhz,由于S3C44BOX内部有锁相环,CPU主频可凡倍于外部晶振,CPU主频可通过软件设定。用于系统实时时钟的备用Li电池电源,系统实时时钟为32. 726Khz。
由于系统内部有看门狗电路,可以通过软件设定看门狗时间。但是为了系统的可靠性。设计了系统的硬复位电路,它通过斯密特74hc 14触发器复位。
3.8 热电偶冷端温度测量
由于热电偶的冷端的温度随着环境温度的变化而变化,所以需要对热电偶的冷端温度进行补偿,在有的设计中直接在热电偶测温电路中用电桥法补偿,但需要经常较准比较麻烦。本文采用实时测量热电偶的冷端环境温度,用软件的方法进行补偿。
9
用MAX876产生lOV精密电压基准,输出误差士7MV,配合OP07产生lOMA恒流源,运算放大器工作在开环状态,由于同相端和反相端的压差几乎为零,运算放大器的偏置电流可以忽略不计,所以产生IOMA的电流通过10052铂电阻。查铂热电阻(Pt100)的分度表,0\为10052, 20\为107. 7952,
大约每升高一度,热电阻的阻值增加为0. 3952,那么热电阻的电压变化为0.0039v,而S3C44BOX内置10位A/D转换器,它的基准电压为2.5V,它的分辨率为0.00244V,所以10位A/D转换器能满足精度要求。 冷端温度测量的输出接在S3C44BOX的A/D转换的AINO通道上。系统的硬件电路原理图详见附录A,B,C和D。
3.9 小结
本章设计了以S3C44BOX为核心的硬件电路,包括系统晶振、A/D转换、LCD显示、串行口、存储器系统、硬复位电路、3. 3V和5V接口电路、量涅转换、通道选择等电路。
第4章系统软件设计
4.1 移植μC/OS-II
S3C44BOX处理器架构是ARM7TDMI,汇编语言是ARM指令集,要想移植成功,得花时间熟悉新处理器的结构和汇编指令,改写与处理器相关的代码。
10
可以看出,p.C/OS-II中有3个和处理器相关的代码,在移植过程中只需改动OS_ CPU. H、OS_ CPU_ A.ASM和OS_ CPU_ C.C三部分即可。 1.设置OS一 CPU. H代码
除了定义一些数据类型外,还定义了两个重要函数: #define OS_ENTER_CRITICAL() #define OS EXIT CRITICAL()
ARMDisableInt() /*关中断*/ ARMEnableInt()/*开中断*/
在OS CPU A. S中详细的定义了ARMDisableInt () ,ARMEnableInt () 。 2.设置OS_ CPU一 C.C
定义
void*OSTaskStkInit (void (*task)(void *pd), void *pdata, void *ptos,INT 16U opt);
/*这个函数被OSTaskCreate()或OSTaskCreateExt()来调用初始化一个任务*/ void OSTaskCreateHook (OS_TCB *ptcb); /*此函数当任务被创建时被调用*/ void OSTaskDelHook (OS_TCB *ptcb); /*此函数当任务被删除时被调用*/ vo i d OSTaskSwHook (void); /*此函数当任务交换时被调用*/ void OSTaskStatHook (void):
/*每时刻由uC/OS-II调用去统计任务*/ void OSTimeTickHook(void): /*系统嘀嗒时间钩子函数
这几个钩子函数没有定义,需要用户自己定义。 3.设置OS CPU A. ASM 定义了四个函数
ARMEnableInt /*在SVC模式能够中断*/ STMDB sp!,{r0} MRS r0,CPRS ORR r0, #NoInt MSR CPSR cxsf, r0
11
LDMIA sp!,{r0} MOV pc, lr
ARMEnableInt/*在SVC模式不能够中断*/ STMDB sp!,{r0} MRS r0, CPSR ORR r0, r0, #NoInt MSR CPSR cxsf, r0 LDMIA sp!,{r0} MOV pc, Ir
void OS_TASK_SWAP(void)/*任务环境交换*/ STMFD sp!,{Ir}; STMFD sp!,{Ir}; STMFD sp!,{r0一r12}; MRS r4, CPSR STMFD sp!,{r4} MRS r4, SPSR STMFD sp!,{r4}
--------------------------------------------------------------- OSStartHighRdy/*开始优先级最高的任务*/ LDR r4, addr OSTCBCur: LDR r5,addr-OSTCBHighRdy; LDR r5,(r5]; LDR sp, [r5]; STR r5,[r4]; LDMFD sp!,{r4}; MSR SPSR cxsf, r4; LDMFD sp!,{r4}; MSR CPSR_ cxsf, r4;
LDMFD sp!,{r0一r12, 1r, pc};
配置完后,μ/OS-II就可以运行在ARM处理器上。
12