X学校
课程设计报告
课程名称: 嵌入式系统
设计题目:ARM9串行接收发送驱动程序设计
院 系: 电气信息学院
班 级:
姓 名:
学 号:
指导教师:
设计时间:
目 录
一、设计题目... 2
二、设计内容... 2
三、硬件原理... 2
四、程序流程图... 2
1接收程序流程图... 4
2、发送程序流程图... 4
3、收发程序流程图... 5
五、程序设计... 6
1、基于ARM9微处理器的串行接收驱动程序设计... 6
2、基于ARM9微处理器的串行发送驱动程序设计... 7
3、基于ARM9微处理器的串行接收发送驱动程序设计 10
六、心得体会... 16
七、参考文献... 16
一、设计题目
(1)基于ARM9微处理器的串行接收驱动程序设计
(2)基于ARM9微处理器的串行发送驱动程序设计
(3)基于ARM9微处理器的串行接收发送驱动程序设计
二、设计内容
1 (1)基于ARM9微处理器的串行接收驱动程序设计
① 初始化程序设计
② 串行接收程序设计
(2)基于ARM9微处理器的串行发送驱动程序设计
① 初始化程序设计
② 串行发送程序设计
(3)基于ARM9微处理器的串行接收发送驱动程序设计
① 初始化程序设计
② 串行接收发送程序设计
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开发平台上的调试。
三、硬件原理
硬件原理如图所示,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电平,逻辑高电平不匹配,通过限流电阻,简单实现两种电平的接口。
串行通讯原理图
四、程序流程图
1接收程序流程图
2、发送程序流程图
3、收发程序流程图
五、程序设计
1、基于ARM9微处理器的串行接收驱动程序设计
ULCON0 EQU 0x01d00000 ;//0x03 无校验,一个停止位;
UCON0 EQU 0x01d00004 ;//0x0c;
UFCON0 EQU 0x01d00008 ;//0x01;
UMCON0 EQU 0x01d0000C ;//0x00;
URXH0 EQU 0x01d00024 ;//数据寄存器
UBIRDIV0 EQU 0x01d00028 ;//波特率设置
UTRSTAT0 EQU 0x01d00010 ;//状态寄存器
CNT EQU 5
PCONE EQU 0X01D20028
PUPE EQU 0X01D20030
WDTCON EQU 0X01D30000 ;WDTCON
AREA T_TXD,CODE,READONLY
ENTRY
LDR R13,=0XC800000
BL INIT
LDR R4,=0XC300000
LDR R5,=CNT
LOOP
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
LOOP1
B LOOP1
DELAY
LDR R6,=0XFFFF
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、基于ARM9微处理器的串行发送驱动程序设计
ULCON0 equ 0x01d00000 ; UART线控制器地址
UCON0 EQU 0x01d00004 ; UART控制器地址
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 ; 通用E口配置寄存器地址
PUPE EQU 0X01D20030 ; 通用E口上拉电阻配置寄存器地址
WDTCON EQU 0X01D30000 ; WDT控制器地址
AREA T_TXD,CODE,READONLY ;欢ㄒ宕攵?T_TXD"
ENTRY ;程序入口
LDR R13,=0X800000 ;设置堆栈指针
BL INIT ;调用初始化子程序子程序
M1
LDR R0,=S1_L1 ;发送1行字符
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 ;关闭WDT,以免影响程序调试
LDR R0,=0X0
STR R0,[R1]
LDR R1,=PCONE ;配置通用I/O口,使PE2为RxD0,PE1为TxD0
LDR R0,=0x28
STR R0,[R1]
LDR R1,=PUPE ;配置E口无上挂电阻
LDR R0,=0XFF
STR R0,[R1]
LDR R1,=ULCON0 ;配置UART线控制器:正常模式,
无奇偶校验,一个停止位,8个数据位
LDR R0,=0x03
STR R0,[R1]
LDR R1,=UCON0 ;配置UART控制器:RX边沿触发,TX
电平触发,
;禁用延时中断,使用RX错误中断,正
常操作
;模式,中断请求或表决模式
LDR R0,=0x245
STR R0,[R1]
LDR R1, = UFCON0 ;配置UART FIFO控制器:禁用 FIFO
LDR R0, = 0x0
STR R0, [R1]
LDR R1, = UMCON0 ;配置UART Modem控制器:禁止使
用AFC
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 ;发送1行字符串子程序
MOV R4,LR ;保存堆栈指针
TXD_LINE1
LDRB R1,[R0],#1
ANDS R1,R1,#0XFF
MOVEQ PC,R4
BL TXD_BYTE
B TXD_LINE1
;------------TXD_BYTE SUB.------------
TXD_BYTE ;发送1字符子程序
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 "HOW ARE YOU!",&A,&A,&D,0 0020;定义字符串
mov r0,r0
END
3、基于ARM9微处理器的串行接收发送驱动程序设计
ULCON0 EQU 0x01d00000 ; UART线控制器地址
UCON0 EQU 0x01d00004 ; UART控制器地址
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 ; 通用E口配置寄存器地址
PUPE EQU 0X01D20030 ; 通用E口上拉电阻配置寄存器地址
WDTCON EQU 0X01D30000 ; WDT控制器地址
AREA T_UART,CODE,READONLY
ENTRY ;程序入口
LDR R13,=0X800000 ;设置堆栈指针
BL INIT ;调用初始化子程序子程序
M1
LDR R3,=UTRSTAT0
LDR R2,[R3]
TST R2,#0x01
BEQ M1
LDR R0,=URXH0
LDRB R1,[R0]
CMP R1,#"1"
BNE M2
BL TXD_SCREEN1
B M1
M2
CMP R1,#"2"
BNE M3
BL TXD_SCREEN2
B M1
M3
CMP R1,#"3"
BNE M1
BL TXD_SCREEN3
B M1
TXD_SCREEN1 ;----------TXD_SCREEN 1---------------
MOV R6,LR
LDR R0,=S1_L1
BL TXD_LINE
LDR R0,=S1_L2
BL TXD_LINE
LDR R0,=S1_L3
BL TXD_LINE
LDR R0,=S1_L4
BL TXD_LINE
LDR R0,=S1_L5
BL TXD_LINE
LDR R0,=S1_L6
BL TXD_LINE
LDR R0,=S1_L7
BL TXD_LINE
LDR R0,=S1_L8
BL TXD_LINE
MOV PC,R6
TXD_SCREEN2 ;----------TXD_SCREEN 2---------------
MOV R6,LR
LDR R0,=S2_L1
BL TXD_LINE
LDR R0,=S2_L2
BL TXD_LINE
LDR R0,=S2_L3
BL TXD_LINE
LDR R0,=S2_L4
BL TXD_LINE
LDR R0,=S2_L5
BL TXD_LINE
LDR R0,=S2_L6
BL TXD_LINE
LDR R0,=S2_L7
BL TXD_LINE
LDR R0,=S2_L8
BL TXD_LINE
MOV PC,R6
TXD_SCREEN3 ;----------TXD_SCREEN 3---------------
MOV R6,LR
LDR R0,=S3_L1
BL TXD_LINE
LDR R0,=S3_L2
BL TXD_LINE
LDR R0,=S3_L3
BL TXD_LINE
LDR R0,=S3_L4
BL TXD_LINE
LDR R0,=S3_L5
BL TXD_LINE
LDR R0,=S3_L6
BL TXD_LINE
LDR R0,=S3_L7
BL TXD_LINE
LDR R0,=S3_L8
BL TXD_LINE
MOV PC,R6
;---------DELAY SUB.----------
DELAY ;延时子程序
SUBS R1,R1,#1
BNE DELAY
MOV PC,R14
;---------INIT SUB.-----------
INIT ;初始化子程序
LDR R1,=WDTCON ;关闭WDT,以免影响程序调试
LDR R0,=0X0
STR R0,[R1]
LDR R1,=PCONE ;配置通用I/O口,使PE2为RxD0
LDR R0,=0x28
STR R0,[R1]
LDR R1,=PUPE ;配置E口无上挂电阻
LDR R0,=0XFF
STR R0,[R1]
LDR R1,=ULCON0 ;配置UART线控制器:正常模式,无 ;奇偶校验,一个停止位,8个数据位
LDR R0,=0x03
STR R0,[R1]
LDR R1,=UCON0 ;配置UART控制器:RX边沿触发,TX ;电平触发,
;禁用延时中断,使用RX错误中断,正 ;常操作
;模式,中断请求或表决模式
LDR R0,=0x245
STR R0,[R1]
LDR R1, = UFCON0 ;配置UART FIFO控制器:禁用 FIFO
LDR R0, = 0x0
STR R0, [R1]
LDR R1, = UMCON0 ;配置UART Modem控制器:禁止使 ;用AFC
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 ;发送1行字符串子程序
MOV R4,LR ;保存堆栈指针
TXD_LINE1
LDRB R1,[R0],#1
ANDS R1,R1,#0XFF
MOVEQ PC,R4
BL TXD_BYTE
B TXD_LINE1
;------------TXD_BYTE SUB.------------
TXD_BYTE ;发送1字符子程序
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
;--------------SCREEN 1------------------------
S1_L1 DCB "*******************************",0xa,0xa,0xa,0
S1_L2 DCB "* *",0xa,0xa,0xa,0
S1_L3 DCB "* WELCOM TO USE EL-ARM-830 *",0xa,0xa,0xa,0
S1_L4 DCB "* *",0xa,0xa,0xa,0
S1_L5 DCB "* THIS IS SCREEN 1 *",0xa,0xa,0xa,0
S1_L6 DCB "* 20##-12-01 *",0xa,0xa,0xa,0
S1_L7 DCB "* *",0xa,0xa,0xa,0
S1_L8 DCB "*******************************",0xa,0xa,0xa,0
;--------------SCREEN 2------------------------
S2_L1 DCB "******************************",0xa,0xa,0xa,0
S2_L2 DCB "* *",0xa,0xa,0xa,0
S2_L3 DCB "* WELCOM TO USE EL-ARM-830 *",0xa,0xa,0xa,0
S2_L4 DCB "* *",0xa,0xa,0xa,0
S2_L5 DCB "* THIS IS SCREEN2 *",0xa,0xa,0xa,0
S2_L6 DCB "* 20##-12-01 *",0xa,0xa,0xa,0
S2_L7 DCB "* *",0xa,0xa,0xa,0
S2_L8 DCB "*********************************",0xa,0xa,0xa,0
;--------------SCREEN 3------------------------
S3_L1 DCB "*********************************",0xa,0xa,0xa,0
S3_L2 DCB "* *",0xa,0xa,0xa,0
S3_L3 DCB "* WELCOM TO USE EL-ARM-830 *",0xa,0xa,0xa,0
S3_L4 DCB "* *",0xa,0xa,0xa,0
S3_L5 DCB "* THIS IS SCREEN3 *",0xa,0xa,0xa,0
S3_L6 DCB "* 20##-12-01 *",0xa,0xa,0xa,0
S3_L7 DCB "* *",0xa,0xa,0xa,0
S3_L8 DCB "******************************",0xa,0xa,0xa,0
END
六、心得体会
通过本次课程设计,我通过阅读书籍,查阅资料已经程序的调试,对嵌入式的编程原理有了更深的理解。
我也很好的把平时书本上学习的理论知识用在实践中。在实践中,遇到很多没有想到的困难,经过反复的程序调试,我也能够解决遇到的问题。这次的分组设计也加强了同学之间的团队合作精神。
这次设计让我明白嵌入式在生活应用的广泛,我要努力学习更多的嵌入式知识并将这些知识运用到实际生活中。
七、参考文献
*《嵌入式系统基础教程》 于忠德 林敏 申华 国防工业出版社
*《嵌入式软件技术的现状与发展动向》 熊光泽, 罗蕾. 计算机应用,2000 *《嵌入式实时操作系统VxWorks及其开发环境孔祥营》 柏桂枝..中国电力出版社, 20##
*《嵌入式操作系统中的I/O驱动软件》.李江, 常葆林. 计算机工程, 2006
*《嵌入式系统原理及应用开发技术》.桑楠. 北京航空航天大学出版社, 20##
*《嵌入式系统原理与应用技术》 袁志勇 王景存 北京航空航天大学出版社 2009