嵌入式系统课程设计-ARM9串行接收发送驱动程序设计.doc

上传人:李主任 文档编号:3266640 上传时间:2019-08-07 格式:DOC 页数:17 大小:113.51KB
返回 下载 相关 举报
嵌入式系统课程设计-ARM9串行接收发送驱动程序设计.doc_第1页
第1页 / 共17页
嵌入式系统课程设计-ARM9串行接收发送驱动程序设计.doc_第2页
第2页 / 共17页
嵌入式系统课程设计-ARM9串行接收发送驱动程序设计.doc_第3页
第3页 / 共17页
嵌入式系统课程设计-ARM9串行接收发送驱动程序设计.doc_第4页
第4页 / 共17页
嵌入式系统课程设计-ARM9串行接收发送驱动程序设计.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《嵌入式系统课程设计-ARM9串行接收发送驱动程序设计.doc》由会员分享,可在线阅读,更多相关《嵌入式系统课程设计-ARM9串行接收发送驱动程序设计.doc(17页珍藏版)》请在三一文库上搜索。

1、X学校课 程 设 计 报 告课程名称: 嵌入式系统 设计题目:ARM9串行接收发送驱动程序设计院 系: 电气信息学院 班 级: 姓 名: 学 号: 指导教师: 设计时间: 目 录一、设计题目2二、设计内容2三、硬件原理2四、程序流程图21接收程序流程图42、发送程序流程图43、收发程序流程图5五、程序设计61、基于ARM9微处理器的串行接收驱动程序设计62、基于ARM9微处理器的串行发送驱动程序设计73、基于ARM9微处理器的串行接收发送驱动程序设计10六、心得体会16七、参考文献16一、设计题目(1)基于ARM9微处理器的串行接收驱动程序设计(2)基于ARM9微处理器的串行发送驱动程序设计(

2、3)基于ARM9微处理器的串行接收发送驱动程序设计二、设计内容1 (1)基于ARM9微处理器的串行接收驱动程序设计初始化程序设计 串行接收程序设计(2)基于ARM9微处理器的串行发送驱动程序设计初始化程序设计串行发送程序设计(3)基于ARM9微处理器的串行接收发送驱动程序设计初始化程序设计串行接收发送程序设计2 实现PC机与EL-ARM-830开发系统的串行通讯,具体通讯方式与内容:(1) 帧格式:正常模式,无奇偶校验,一个停止位,8个数据位(2)串行发送:每过一定时间,隔2行发送字符串“HOW ARE YOU!”,通过PC机的串口调试助手接收。(3) 串行接收:将接收到的5个字符存储到以0X

3、C300000为首地址的SDRAM中,通过串口调试助手发送字符.(4)当接收到串口调试助手界面发送的“1”,发送第1屏信息;当接收到串口调试助手界面发送的“2”,发送第2屏信息;当接收到串口调试助手界面发送的“3”,发送第3屏信息设计要求(1)流程图设计,流程图上每个任务的文字说明。(2)完整的程序清单。(3)通过在PC机和EL-ARM-830开发平台上的调试。三、硬件原理硬件原理如图所示,U2 MAX232是RS-232C的接口电路,实现电平转换作用。能将来自S3C44B0X一侧的0V3.3V正逻辑电平转换为符合EIA标准的负逻辑电平输出,既当S3C44B0X发出0V电平时,经过MAX232

4、转换为3V15V电平,当S3C44B0X发出3.3V电平时,经过MAX232转换为-3V-15V电平;能将来自PC机一侧的标准RS-232电平,转换为TTL电平输出,既当MAX232接收到3V15V电平时,能转换为0V电平传向S3C44B0X一侧,当MAX232接收到-3V-15V电平时,能转换为5V电平传向S3C44B0X一侧。通过这种电平转换,实现S3C44B0X与标准RS-232C设备通讯。图10-8中R1、R2是限流电阻,起保护作用。原因是,MAX232向S3C44B0X一侧的电平信号是05V,而S3C44B0X仅能发出/接收03.3V电平,逻辑高电平不匹配,通过限流电阻,简单实现两种

5、电平的接口。串行通讯原理图四、程序流程图1接收程序流程图开始初始化检测接收寄存器是否有有效数据NOYES读出数据结束2、发送程序流程图开始初始化检测发送寄存器是否为空NOYES发送数据结束3、收发程序流程图开始初始化检测是否有有效数据NOYESYES检测有效数据是否为1发送第1屏数据NOYES检测有效数据是否为2NO发送第2屏数据YES检测有效数据是否为3NO发送第3屏数据五、程序设计1、基于ARM9微处理器的串行接收驱动程序设计ULCON0EQU0x01d00000 ;/0x03 无校验,一个停止位;UCON0EQU0x01d00004 ;/0x0c;UFCON0EQU0x01d00008

6、;/0x01;UMCON0EQU0x01d0000C ;/0x00;URXH0EQU0x01d00024 ;/数据寄存器UBIRDIV0EQU0x01d00028 ;/波特率设置UTRSTAT0EQU0x01d00010 ;/状态寄存器CNTEQU5PCONEEQU0X01D20028PUPEEQU0X01D20030WDTCONEQU0X01D30000;WDTCONAREA T_TXD,CODE,READONLYENTRY LDRR13,=0XC800000BLINITLDRR4,=0XC300000 LDR R5,=CNTLOOP LDR R3,=UTRSTAT0 LDR R2,R3 T

7、ST R2,#0x01 BEQ LOOPLDR R0,=URXH0 LDRBR1,R0 STRB R1,R4,#1 SUBS R5,R5,#1 BNE LOOPLOOP1 B LOOP1DELAYLDRR6,=0XFFFFDELAY1SUBSR6,R6,#1BNEDELAY1MOVPC,R14INITLDRR1,=WDTCONLDRR0,=0X0STRR0,R1 LDRR1,=PCONE LDRR0,=0x28 STRR0,R1 LDRR1,=PUPE LDRR0,=0XFF STRR0,R1 LDRR1,=ULCON0 LDRR0,=0x03 STRR0,R1 LDR R1,=UCON0 L

8、DR R0,=0x245 STR R0,R1LDR R1, = UFCON0 LDR R0, = 0x0 STR R0, R1LDR R1, = UMCON0 LDR R0, = 0x0 STR R0, R1 LDR R1, = UBIRDIV0;频率60M LDR R0, = 0x20;(取整)(60000000/16/115200)-1 STR R0, R1 MOVPC,LREND2、基于ARM9微处理器的串行发送驱动程序设计ULCON0 equ 0x01d00000 ; UART线控制器地址UCON0 EQU 0x01d00004 ; UART控制器地址UFCON0 EQU 0x01d0

9、0008 ; UART FIFO控制器地址UMCON0 EQU 0x01d0000C ; UART Modem控制器地址UTXH0 EQU 0x01d00020 ; 发送数据寄存器地址URXH0 EQU 0x01d00024 ; 接收数据寄存器UBIRDIV0 EQU 0x01d00028 ; 波特率除数寄存器UTRSTAT0 EQU 0x01d00010 ; UART发送/接收状态寄存器地址PCONEEQU0X01D20028; 通用E口配置寄存器地址PUPEEQU0X01D20030; 通用E口上拉电阻配置寄存器地址WDTCONEQU0X01D30000; WDT控制器地址 AREA T_

10、TXD,CODE,READONLY;欢宕攵?T_TXD ENTRY ;程序入口LDRR13,=0X800000;设置堆栈指针BL INIT ;调用初始化子程序子程序M1LDRR0,=S1_L1 ;发送1行字符BLTXD_LINELDRR1,=0XFFFFF;延时BLDELAYBM1;重复发送;-DELAY SUB.-DELAY;延时子程序SUBSR1,R1,#1BNEDELAYMOVPC,R14;-INIT SUB.-INIT;初始化子程序LDRR1,=WDTCON;关闭WDT,以免影响程序调试LDRR0,=0X0STRR0,R1LDRR1,=PCONE;配置通用I/O口,使PE2为RxD0,

11、PE1为TxD0 LDRR0,=0x28 STRR0,R1 LDRR1,=PUPE;配置E口无上挂电阻 LDRR0,=0XFF STRR0,R1LDRR1,=ULCON0;配置UART线控制器:正常模式,无奇偶校验,一个停止位,8个数据位 LDR R0,=0x03 STRR0,R1LDR R1,=UCON0;配置UART控制器:RX边沿触发,TX电平触发,;禁用延时中断,使用RX错误中断,正常操作;模式,中断请求或表决模式 LDR R0,=0x245 STR R0,R1LDR R1, = UFCON0;配置UART FIFO控制器:禁用 FIFOLDR R0, = 0x0 STR R0, R1

12、LDR R1, = UMCON0;配置UART Modem控制器:禁止使用AFCLDR R0, = 0x0 STR R0, R1 LDR R1, = UBIRDIV0;配置波特率,系统主频为频率60M LDR R0, = 0x20 ;(取整)(60000000/16/115200)-1=32 STR R0, R1 MOVPC,LR;子程序返回 ;-TXD_LINE SUB.-TXD_LINE;发送1行字符串子程序 MOVR4,LR;保存堆栈指针TXD_LINE1 LDRBR1,R0,#1 ANDSR1,R1,#0XFF MOVEQPC,R4 BLTXD_BYTE BTXD_LINE1;-TXD

13、_BYTE SUB.-TXD_BYTE;发送1字符子程序 MOVR5,LR LDR R3,=UTRSTAT0 LDR R2,R3 TST R2,#0X02 BEQ TXD_BYTE LDR R2,=UTXH0 STRB R1,R2 LDRR1,=0XFFFF BLDELAY MOVPC,R5;- S1_L1DCBHOW ARE YOU!,&A,&A,&D,0 0020;定义字符串 mov r0,r0 END3、基于ARM9微处理器的串行接收发送驱动程序设计ULCON0EQU0x01d00000 ; UART线控制器地址UCON0EQU0x01d00004; UART控制器地址UFCON0EQU

14、0x01d00008; UART FIFO控制器地址UMCON0EQU0x01d0000C; UART Modem控制器地址UTXH0EQU0x01d00020 ; 发送数据寄存器地址URXH0 EQU0x01d00024; 接收数据寄存器UBIRDIV0 EQU0x01d00028; 波特率除数寄存器UTRSTAT0EQU0x01d00010 ; UART发送/接收状态寄存器地址PCONEEQU0X01D20028; 通用E口配置寄存器地址PUPEEQU0X01D20030; 通用E口上拉电阻配置寄存器地址WDTCONEQU0X01D30000; WDT控制器地址 AREA T_UART,C

15、ODE,READONLYENTRY ;程序入口LDRR13,=0X800000;设置堆栈指针BL INIT;调用初始化子程序子程序M1 LDR R3,=UTRSTAT0 LDR R2,R3 TST R2,#0x01 BEQ M1LDR R0,=URXH0 LDRBR1,R0 CMPR1,#1 BNEM2 BLTXD_SCREEN1 BM1M2CMPR1,#2BNEM3BLTXD_SCREEN2BM1M3CMPR1,#3BNEM1BLTXD_SCREEN3BM1TXD_SCREEN1;-TXD_SCREEN 1-MOVR6,LRLDRR0,=S1_L1BLTXD_LINELDRR0,=S1_L2

16、BLTXD_LINELDRR0,=S1_L3BLTXD_LINELDRR0,=S1_L4BLTXD_LINELDRR0,=S1_L5BLTXD_LINELDRR0,=S1_L6BLTXD_LINELDRR0,=S1_L7BLTXD_LINELDRR0,=S1_L8BLTXD_LINEMOVPC,R6TXD_SCREEN2;-TXD_SCREEN 2-MOVR6,LRLDRR0,=S2_L1BLTXD_LINELDRR0,=S2_L2BLTXD_LINELDRR0,=S2_L3BLTXD_LINELDRR0,=S2_L4BLTXD_LINELDRR0,=S2_L5BLTXD_LINELDRR0,

17、=S2_L6BLTXD_LINELDRR0,=S2_L7BLTXD_LINELDRR0,=S2_L8BLTXD_LINEMOVPC,R6TXD_SCREEN3;-TXD_SCREEN 3-MOVR6,LRLDRR0,=S3_L1BLTXD_LINELDRR0,=S3_L2BLTXD_LINELDRR0,=S3_L3BLTXD_LINELDRR0,=S3_L4BLTXD_LINELDRR0,=S3_L5BLTXD_LINELDRR0,=S3_L6BLTXD_LINELDRR0,=S3_L7BLTXD_LINELDRR0,=S3_L8BLTXD_LINEMOVPC,R6;-DELAY SUB.-D

18、ELAY;延时子程序SUBSR1,R1,#1BNEDELAYMOVPC,R14;-INIT SUB.-INIT;初始化子程序LDRR1,=WDTCON;关闭WDT,以免影响程序调试LDRR0,=0X0STRR0,R1LDRR1,=PCONE;配置通用I/O口,使PE2为RxD0 LDRR0,=0x28 STRR0,R1 LDRR1,=PUPE;配置E口无上挂电阻 LDRR0,=0XFF STRR0,R1LDRR1,=ULCON0;配置UART线控制器:正常模式,无;奇偶校验,一个停止位,8个数据位 LDRR0,=0x03 STRR0,R1LDR R1,=UCON0;配置UART控制器:RX边沿

19、触发,TX;电平触发,;禁用延时中断,使用RX错误中断,正;常操作;模式,中断请求或表决模式 LDR R0,=0x245 STR R0,R1LDR R1, = UFCON0;配置UART FIFO控制器:禁用 FIFOLDR R0, = 0x0 STR R0, R1LDR R1, = UMCON0;配置UART Modem控制器:禁止使;用AFCLDR R0, = 0x0 STR R0, R1 LDR R1, = UBIRDIV0;配置波特率,系统主频为频率60M LDR R0, = 0x20;(取整)(60000000/16/115200)-1=32 STR R0, R1 MOVPC,LR;

20、子程序返回;-TXD_LINE SUB.-TXD_LINE;发送1行字符串子程序 MOVR4,LR;保存堆栈指针TXD_LINE1 LDRBR1,R0,#1 ANDSR1,R1,#0XFF MOVEQPC,R4 BLTXD_BYTE BTXD_LINE1;-TXD_BYTE SUB.-TXD_BYTE;发送1字符子程序 MOVR5,LR LDR R3,=UTRSTAT0 LDR R2,R3 TST R2,#0X02 BEQ TXD_BYTE LDR R2,=UTXH0 STRB R1,R2 LDRR1,=0XFFFF BLDELAY MOVPC,R5;-SCREEN 1- S1_L1DCB *

21、,0xa,0xa,0xa,0S1_L2DCB* *,0xa,0xa,0xa,0S1_L3DCB* WELCOM TO USE EL-ARM-830 *,0xa,0xa,0xa,0S1_L4DCB* *,0xa,0xa,0xa,0S1_L5DCB* THIS IS SCREEN 1 *,0xa,0xa,0xa,0S1_L6DCB* 2010-12-01 *,0xa,0xa,0xa,0S1_L7DCB* *,0xa,0xa,0xa,0S1_L8DCB *,0xa,0xa,0xa,0;-SCREEN 2- S2_L1DCB *,0xa,0xa,0xa,0S2_L2DCB* *,0xa,0xa,0xa

22、,0S2_L3DCB* WELCOM TO USE EL-ARM-830 *,0xa,0xa,0xa,0S2_L4DCB* *,0xa,0xa,0xa,0S2_L5DCB* THIS IS SCREEN2 *,0xa,0xa,0xa,0S2_L6DCB* 2010-12-01 *,0xa,0xa,0xa,0S2_L7DCB* *,0xa,0xa,0xa,0S2_L8DCB*,0xa,0xa,0xa,0;-SCREEN 3- S3_L1DCB*,0xa,0xa,0xa,0S3_L2DCB* *,0xa,0xa,0xa,0S3_L3DCB* WELCOM TO USE EL-ARM-830 *,0

23、xa,0xa,0xa,0S3_L4DCB* *,0xa,0xa,0xa,0S3_L5DCB* THIS IS SCREEN3 *,0xa,0xa,0xa,0S3_L6DCB* 2010-12-01 *,0xa,0xa,0xa,0S3_L7DCB* *,0xa,0xa,0xa,0S3_L8DCB *,0xa,0xa,0xa,0 END六、心得体会通过本次课程设计,我通过阅读书籍,查阅资料已经程序的调试,对嵌入式的编程原理有了更深的理解。我也很好的把平时书本上学习的理论知识用在实践中。在实践中,遇到很多没有想到的困难,经过反复的程序调试,我也能够解决遇到的问题。这次的分组设计也加强了同学之间的团队合作精神。这次设计让我明白嵌入式在生活应用的广泛,我要努力学习更多的嵌入式知识并将这些知识运用到实际生活中。七、参考文献嵌入式系统基础教程于忠德 林敏 申华国防工业出版社 嵌入式软件技术的现状与发展动向 熊光泽, 罗蕾. 计算机应用,2000 嵌入式实时操作系统VxWorks及其开发环境孔祥营 柏桂枝.中国电力出版社, 2001 嵌入式操作系统中的I/O驱动软件.李江, 常葆林. 计算机工程, 2006嵌入式系统原理及应用开发技术.桑楠. 北京航空航天大学出版社, 2002 嵌入式系统原理与应用技术 袁志勇 王景存 北京航空航天大学出版社 200917

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 研究报告 > 信息产业


经营许可证编号:宁ICP备18001539号-1