一、设计题目 ................................................................... 2 二、设计内容 ................................................................... 2 三、硬件原理 ................................................................... 3 四、程序流程图 ............................................................... 4 1接收程序流程图 ....................................................... 4 2、发送程序流程图 .................................................... 4 3、收发程序流程图 .................................................... 5 五、程序设计 ................................................................... 6 1、基于ARM7微处理器的串行接收驱动程序设计 . 6 2、基于ARM7微处理器的串行发送驱动程序设计 . 7 3、基于ARM7微处理器的串行接收发送驱动程序设计 ............................................................................... 10 六、心得体会 ................................................................. 16 七、参考文献 ................................................................. 16
1
一、设计题目
(1)基于ARM7微处理器的串行接收驱动程序设计 (2)基于ARM7微处理器的串行发送驱动程序设计 (3)基于ARM7微处理器的串行接收发送驱动程序设计
二、设计内容
1 (1)基于ARM7微处理器的串行接收驱动程序设计
① 初始化程序设计 ② 串行接收程序设计
(2)基于ARM7微处理器的串行发送驱动程序设计 ① 初始化程序设计 ② 串行发送程序设计
(3)基于ARM7微处理器的串行接收发送驱动程序设计 ① 初始化程序设计
② 串行接收发送程序设计
2 实现PC机与EL-ARM-830开发系统的串行通讯,具体通讯方式与内容:
(1) 帧格式:正常模式,无奇偶校验,一个停止位,8个数据位 (2)串行发送:每过一定时间,隔2行发送字符串“HOW ARE YOU!”,通过PC机的串口调试助手接收。
(3) 串行接收:将接收到的5个字符存储到以0XC300000为首地址的SDRAM中,通过串口调试助手发送字符.
(4)当接收到串口调试助手界面发送的“1”,发送第1屏信息;当接收到串口调试助手界面发送的“2”,发送第2屏信息;当接收到串口调试助手界面发送的“3”,发送第3屏信息 设计要求
(1)流程图设计,流程图上每个任务的文字说明。 (2)完整的程序清单。
(3)通过在PC机和EL-ARM-830开发平台上的调试。
2
三、硬件原理
硬件原理如图所示,U2 MAX232是RS-232C的接口电路,实现电平转换作用。能将来自S3C44B0X一侧的0V~3.3V正逻辑电平转换为符合EIA标准的负逻辑电平输出,既当S3C44B0X发出0V电平时,经过MAX232转换为3V~15V电平,当S3C44B0X发出3.3V电平时,经过MAX232转换为-3V~-15V电平;能将来自PC机一侧的标准RS-232电平,转换为TTL电平输出,既当MAX232接收到3V~15V电平时,能转换为0V电平传向S3C44B0X一侧,当MAX232接收到-3V~-15V电平时,能转换为5V电平传向S3C44B0X一侧。通过这种电平转换,实现S3C44B0X与标准RS-232C设备通讯。图10-8中R1、R2是限流电阻,起保护作用。原因是,MAX232向S3C44B0X一侧的电平信号是0~5V,而S3C44B0X仅能发出/接收0~3.3V电平,逻辑高电平不匹配,通过限流电阻,简单实现两种电平的接口。
串行通讯原理图
3
四、程序流程图
1接收程序流程图
开始
初始化 检测接收寄存器 是否有有效数据 YES
读出数据 结束
2、发送程序流程图
NO 开始 初始化 检测发送寄存器 是否为空 YES 发送数据 NO 结束 4
3、收发程序流程图
开始 初始化 检测是否有 有效数据 YES NO 检测有效数据是否为1 NO YES 发送第1屏数据 YES 检测有效数据是否为2 NO 检测有效数据是否为3 NO 发送第2屏数据 YES 发送第3屏数据 5
五、程序设计
1、基于ARM7微处理器的串行接收驱动程序设计
ULCON0 UCON0 UFCON0 UMCON0 URXH0 UBIRDIV0 UTRSTAT0 CNT PCONE PUPE WDTCON ENTRY LOOP LOOP1 DELAY
EQU
0x01d00000 ;//0x03 无校验,一个停止位; EQU 0x01d00004 ;//0x0c; EQU 0x01d00008 ;//0x01; EQU 0x01d0000C ;//0x00;
EQU 0x01d00024 ;//数据寄存器 EQU 0x01d00028 ;//波特率设置 EQU 0x01d00010 ;//状态寄存器 EQU 5 EQU 0X01D20028 EQU 0X01D20030 EQU 0X01D30000 ;WDTCON AREA T_TXD,CODE,READONLY LDR R13,=0XC800000 BL INIT
LDR R4,=0XC300000 LDR R5,=CNT LDR R3,=UTRSTAT0
LDR R2,[R3] TST R2,#0x01 BEQ LOOP
LDR R0,=URXH0 LDRB R1,[R0] STRB R1,[R4],#1 SUBS R5,R5,#1 BNE LOOP
B LOOP1 LDR
R6,=0XFFFF
6
DELAY1 SUBS R6,R6,#1 BNE DELAY1 MOV PC,R14 INIT LDR R1,=WDTCON LDR R0,=0X0 STR R0,[R1] LDR R1,=PCONE LDR R0,=0x28 STR R0,[R1] LDR R1,=PUPE LDR R0,=0XFF STR R0,[R1]
LDR R1,=ULCON0 LDR R0,=0x03 STR R0,[R1] LDR R1,=UCON0 LDR R0,=0x245 STR R0,[R1]
LDR R1, = UFCON0 LDR R0, = 0x0 STR R0, [R1]
LDR R1, = UMCON0 LDR R0, = 0x0
STR
R0, [R1]
LDR R1, = UBIRDIV0 ;频率60M LDR R0, = 0x20
;(
整)(60000000/16/115200)-1 STR R0, [R1] MOV PC,LR END
2、基于ARM7微处理器的串行发送驱动程序设计
ULCON0 equ 0x01d00000 ; UART线控制器地址 UCON0 EQU 0x01d00004 ; UART控制器地址
7
取
UFCON0 EQU 0x01d00008 ; UART FIFO控制器地址 UMCON0 EQU 0x01d0000C ; UART Modem控制器地址 UTXH0 EQU 0x01d00020 ; 发送数据寄存器地址 URXH0 EQU 0x01d00024 ; 接收数据寄存器 UBIRDIV0 EQU 0x01d00028 ; 波特率除数寄存器
UTRSTAT0 EQU 0x01d00010 ; UART发送/接收状态寄存器地址
PCONE EQU 0X01D20028 PUPE EQU 0X01D20030 地址 WDTCON EQU 0X01D30000 AREA T_TXD,CODE,READONLY ENTRY LDR R13,=0X800000 BL INIT M1 LDR R0,=S1_L1
BL TXD_LINE LDR R1,=0XFFFFF
BL
DELAY
B M1
;---------DELAY SUB.----------
DELAY
SUBS R1,R1,#1 BNE DELAY MOV PC,R14 ;---------INIT SUB.----------- INIT
LDR R1,=WDTCON 调试 LDR R0,=0X0 STR R0,[R1] LDR R1,=PCONE RxD0,PE1为TxD0 LDR R0,=0x28 STR R0,[R1]
8
; 通用E口配置寄存器地址 ; 通用E口上拉电阻配置寄存器; WDT控制器地址
;欢ㄒ宕攵?T_TXD\"
;程序入口 ;设置堆栈指针
;调用初始化子程序子程序 ;发送1行字符 ;延时 ;重复发送
;延时子程序
;初始化子程序
;关闭WDT,以免影响程序
;配置通用I/O口,使PE2为
LDR R1,=PUPE LDR R0,=0XFF STR R0,[R1]
LDR
R1,=ULCON0
模式,
个数据位 LDR R0,=0x03 STR R0,[R1] LDR R1,=UCON0 触发,TX
中断,正 LDR R0,=0x245 STR R0,[R1] LDR
R1, = UFCON0 用 FIFO LDR R0, = 0x0 STR R0, [R1] LDR R1, = UMCON0
禁止使
LDR R0, = 0x0
STR R0, [R1] LDR R1, = UBIRDIV0 率60M LDR R0, = 0x20 整)(60000000/16/115200)-1=32 STR R0, [R1] MOV PC,LR
;------------TXD_LINE SUB.------------ TXD_LINE MOV R4,LR
;配置E口无上挂电阻
;配置UART线控制器:正常无奇偶校验,一个停止位,8
;配置UART控制器:RX边沿电平触发,
;禁用延时中断,使用RX错误常操作
;模式,中断请求或表决模式
;配置UART FIFO控制器:禁
;配置UART Modem控制器:用AFC
;配置波特率,系统主频为频
;(
取
;子程序返回
;发送1行字符串子程序
;保存堆栈指针
9
TXD_LINE1 LDRB R1,[R0],#1 ANDS R1,R1,#0XFF MOVEQ PC,R4 BL TXD_BYTE B TXD_LINE1 ;------------TXD_BYTE SUB.------------ TXD_BYTE MOV R5,LR LDR R3,=UTRSTAT0 LDR R2,[R3] TST R2,#0X02 BEQ TXD_BYTE LDR R2,=UTXH0 STRB R1,[R2] LDR R1,=0XFFFF BL DELAY MOV PC,R5 ;-------------------------------------- S1_L1 串
DCB
;发送1字符子程序
\"HOW ARE YOU!\ 0020;定义字符
mov r0,r0 END
3、基于ARM7微处理器的串行接收发送驱动程序设计
ULCON0 UCON0 UFCON0 UMCON0 UTXH0 URXH0 UBIRDIV0 UTRSTAT0 器地址 PCONE PUPE
EQU
EQU EQU EQU EQU EQU EQU EQU EQU EQU
0x01d00000 0x01d00004 0x01d00008 0x01d0000C 0x01d00020 0x01d00024 0x01d00028 0x01d00010 0X01D20028 0X01D20030
10
; UART线控制器地址 ; UART控制器地址
; UART FIFO控制器地址 ; UART Modem控制器地址 ; 发送数据寄存器地址 ; 接收数据寄存器 ; 波特率除数寄存器
; UART发送/接收状态寄存; 通用E口配置寄存器地址 ; 通用E口上拉电阻配置寄
存器地址 WDTCON EQU 0X01D30000 ; WDT控制器地址 AREA T_UART,CODE,READONLY ENTRY ;程序入口 LDR R13,=0X800000 ;设置堆栈指针 BL INIT ;调用初始化子程序子程序 M1 LDR LDR TST BEQ LDR LDRB CMP BNE BL B M2 CMP BNE BL B M3 CMP BNE BL B TXD_SCREEN1 1--------------- MOV LDR BL LDR BL LDR BL LDR
R3,=UTRSTAT0 R2,[R3] R2,#0x01 M1 R0,=URXH0 R1,[R0] R1,#\"1\" M2 TXD_SCREEN1 M1 R1,#\"2\" M3 TXD_SCREEN2 M1 R1,#\"3\" M1 TXD_SCREEN3 M1 R6,LR R0,=S1_L1 TXD_LINE R0,=S1_L2 TXD_LINE R0,=S1_L3 TXD_LINE R0,=S1_L4
11
;----------TXD_SCREEN BL LDR BL LDR BL LDR BL LDR BL MOV TXD_SCREEN2 2--------------- MOV LDR BL LDR BL LDR BL LDR BL LDR BL LDR BL LDR BL LDR BL MOV TXD_SCREEN3 3--------------- MOV LDR BL LDR BL
TXD_LINE
R0,=S1_L5 TXD_LINE R0,=S1_L6 TXD_LINE R0,=S1_L7 TXD_LINE R0,=S1_L8 TXD_LINE PC,R6 R6,LR R0,=S2_L1 TXD_LINE R0,=S2_L2 TXD_LINE R0,=S2_L3 TXD_LINE R0,=S2_L4 TXD_LINE R0,=S2_L5 TXD_LINE R0,=S2_L6 TXD_LINE R0,=S2_L7 TXD_LINE R0,=S2_L8 TXD_LINE PC,R6 R6,LR R0,=S3_L1 TXD_LINE R0,=S3_L2 TXD_LINE
;----------TXD_SCREEN
;----------TXD_SCREEN
12
LDR BL LDR BL LDR BL LDR BL LDR BL LDR BL MOV DELAY SUBS BNE MOV INIT LDR 调试 LDR STR LDR RxD0
LDR
STR
LDR LDR STR LDR 模式,无 止位,8个数据位 LDR STR
LDR
R0,=S3_L3 TXD_LINE R0,=S3_L4 TXD_LINE R0,=S3_L5 TXD_LINE R0,=S3_L6 TXD_LINE R0,=S3_L7 TXD_LINE R0,=S3_L8 TXD_LINE PC,R6
R1,R1,#1 DELAY PC,R14
R1,=WDTCON R0,=0X0 R0,[R1] R1,=PCONE R0,=0x28 R0,[R1] R1,=PUPE R0,=0XFF R0,[R1]
R1,=ULCON0 R0,=0x03 R0,[R1] R1,=UCON0
13
;---------DELAY SUB.---------- ;延时子程序
;---------INIT SUB.-----------
;初始化子程序
;关闭WDT,以免影响程序
;配置通用I/O口,使PE2为
;配置E口无上挂电阻
;配置UART线控制器:正常 ;奇偶校验,一个停
;配置UART控制器:RX边沿
触发,TX 中断,正 LDR R0,=0x245 STR R0,[R1]
LDR R1, = UFCON0 用 FIFO LDR R0, = 0x0
STR
R0, [R1]
LDR R1, = UMCON0 禁止使 LDR R0, = 0x0 STR R0, [R1] LDR R1, = UBIRDIV0 率60M LDR R0, = 0x20 整)(60000000/16/115200)-1=32 STR R0, [R1]
MOV
PC,LR
TXD_LINE
MOV R4,LR
TXD_LINE1
LDRB R1,[R0],#1
ANDS R1,R1,#0XFF MOVEQ PC,R4 BL TXD_BYTE B
TXD_LINE1
TXD_BYTE
MOV R5,LR
LDR R3,=UTRSTAT0 LDR R2,[R3]
TST R2,#0X02
14
;电平触发,
;禁用延时中断,使用RX错误 ;常操作
;模式,中断请求或表决模式
;配置UART FIFO控制器:禁
;配置UART Modem控制器: ;用AFC
;配置波特率,系统主频为频
;(
取
;子程序返回
;------------TXD_LINE SUB.-------------- ;发送1行字符串子程序 ;保存堆栈指针
;------------TXD_BYTE SUB.------------ ;发送1字符子程序
BEQ TXD_BYTE LDR R2,=UTXH0 STRB R1,[R2] LDR R1,=0XFFFF
BL DELAY MOV PC,R5
;--------------SCREEN 1------------------------ S1_L1 DCB \"*******************************\S1_L2 DCB \"* *\S1_L3 DCB \"* WELCOM TO USE EL-ARM-830 *\S1_L4 DCB \"* *\S1_L5 DCB \"* THIS IS SCREEN 1 *\S1_L6 DCB \"* 2010-12-01 *\S1_L7 DCB \"* *\S1_L8 DCB \"*******************************\;--------------SCREEN 2------------------------ S2_L1 DCB \"******************************\S2_L2 DCB \"* *\S2_L3 DCB \"* WELCOM TO USE EL-ARM-830 *\S2_L4 DCB \"* *\S2_L5 DCB \"* THIS IS SCREEN2 *\S2_L6 DCB \"* 2010-12-01 *\S2_L7 DCB \"* *\S2_L8 DCB \"*********************************\;--------------SCREEN 3------------------------ S3_L1 DCB \"*********************************\S3_L2 DCB \"* *\S3_L3 DCB \"* WELCOM TO USE EL-ARM-830 *\S3_L4 DCB \"* *\S3_L5 DCB \"* THIS IS SCREEN3 *\S3_L6 DCB \"* 2010-12-01 *\S3_L7 DCB \"* *\S3_L8 DCB \"******************************\ END
15
六、心得体会
通过本次课程设计,我通过阅读书籍,查阅资料已经程序的调试,对嵌入式的编程原理有了更深的理解。
我也很好的把平时书本上学习的理论知识用在实践中。在实践中,遇到很多没有想到的困难,经过反复的程序调试,我也能够解决遇到的问题。这次的分组设计也加强了同学之间的团队合作精神。
这次设计让我明白嵌入式在生活应用的广泛,我要努力学习更多的嵌入式知识并将这些知识运用到实际生活中。
七、参考文献
《嵌入式系统基础教程》 于忠德 林敏 申华
国防工业出版社
16
因篇幅问题不能全部显示,请点此查看更多更全内容