电子科技大学微机实验报告(含思考题)河畔下的哈】实验3.doc_第1页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验3.doc_第2页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验3.doc_第3页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验3.doc_第4页
电子科技大学微机实验报告(含思考题)河畔下的哈】实验3.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验三 ARM汇编实现串口通信实验 1.掌握ARM 的串行口工作原理。 2.学习编程实现ARM和PC机的UART通信。 3.掌握ARM裸机下汇编语言编程方法。 1.学习串行通信原理,了解串行通信控制寄存器。 2.编程实现ARM 和计算机之间的串行通信。 1、ARM汇编基础 2、ARM处理器通用IO口的操作 ? 硬件:ARM嵌入式开发平台,PC 机一台,并口线,串口线,JTAG板 ? 软件:RVDS,H-JTAG 1异步串行IO 异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。数据的各不同位可以分时使用同一传输通道,因此串行IO 可以减少信号连线,最少用一对线(输入,输出)即可进行。 2串口通信流程 串口通信就是读写寄存器的操作,通过配置相关寄存器,查询寄存器就可以操作串口通信。需要配置的寄存器有系统时钟,UART行控制寄存器,UART控制寄存器,UART FIFO控制寄存器,UART MODEM控制寄存器,UART波特率控制寄存器;需要查询的寄存器是发送/接收状态寄存器。 1. 打开CodeWarrior for RVDS,建立一个工程,通过查S3C2440处理器手册的UART通信寄存器,serialcommutication.s文件中添加代码实现串口通信传输 2. 设置工程配置选项,Language Setting-Realview Assembler和Realview Compiler中的Architecture设置为ARM920T,配置RVDS下的连接器Linker-Realview Linker中的RO Base为0x30000000 3. 编译和调试工程。 4. 连接PC和实验板的并口,串口;并口连接至ARM的JTAG口,串口连接至COM PORT口;打开电源;打开H-JTAG程序(。 5. 点击调试器Dubeg-Run,运行程序,打开超级终端,在开始-程序-附件-通讯里打开超级终端,使用COM1,设置波特率115200,8位数据位,无奇偶校验,1位停止位,无数据流控制。 6. 从键盘输入数据,观察超级终端是否打印出字符。如有正确的字符打印,则通信成功。 实验程序: ;* SerialCommunication Experiment* ;相关寄存器地址定义 CLKDIVN EQU 0x4C000014 ;CLKDIVN for PCLK and FCLK CAMDIVN EQU 0x4C000018 ;CANDIVN ULCON0 EQU 0x50000000 ;UART line control register 0 UCON0 EQU 0x50000004 ;UART control register 0 UFCON0 EQU 0x50000008 ;UART FIFO control register 0 UMCON0 EQU 0x5000000C ;UART modem control register 0 UBRDIV0 EQU 0x50000028 ;UART baud rate divisor register 0 UTRSTAT0 EQU 0x50000010 ;UART TX/RX status register 0 UTXH0 EQU 0x50000020 ;UART transmit buffer register 0 URXH0 EQU 0x50000024 ;UART receive buffer register 0 MPLLCON EQU 0x4C000004 ;MPLL control register GPHCON EQU 0x56000070 ;GPIO F control register GPHUP EQU 0x56000078 ;GPIO F pull-up register AREA SerialCommunication,CODE,READONLY ENTRY ldr r2,=MPLLCON ;设置MPLL为0x00076022 FCLK=Mpll=(2*m*Fin)/(p*(2的s次方), Fin=16.9344MHz ; m=(MDIV+8), p=(PDIV+2), s=SDIV mov r3,#0x22 mov r4,#0x00076000 ADD r3,r3,r4 str r3,r2 ldr r2,=CLKDIVN ; CLKDIVN 设置为 0x03, PCLK=FCLK/4 mov r3,#0x03 str r3,r2 ldr r2,=CAMDIVN ; CLKDIVN 设置为 0x0200, PCLK=FCLK/4 mov r3,#0x200 str r3,r2 ldr r2,=ULCON0 ; ULCON0 设置为 0x03, 含义是正常操作模式,无校验,停止位1,8个数据位 mov r3,#0x03 str r3,r2 ldr r2,=UCON0 ;UCON0 设置为 0x05 表示发送、接收数据都使用查询方式 mov r3,#0x05 str r3,r2 ldr r2,=UFCON0 ;UFCON0 设置为 0x00 为不使用 FIFO mov r3,#0x00 str r3,r2 ldr r2,=UMCON0 ;UMCON0 设置为 0x00 为不使用流控 mov r3,#0x00 str r3,r2 ldr r2,=UBRDIV0 ;UBRDIV0 设置为36,含义为 波特率设为 115200, 由下面公式算得:UBRDIVn = (int)(PCLK/bps*16)-1 ;其中 PCLK =66.68MHz mov r3,#36 strh r3,r2 ldr r2,=GPHCON ;UART0 set to rxd and txd ldr r3,=0xa0 str r3,r2 ldr r2,=GPHUP ;pull up ldr r3,=0x0f str r3,r2 ;-填写代码实现串口传输- C_UTRSTAT00 ldr r2,=UTRSTAT0 ldr r3,r2 add r3,r3,#1 CMP r3,#0 beq C_UTRSTAT00 C_UTRSTAT01 ldr r2,=UTRSTAT0 ldr r3,r2 add r3,r3,#2 cmp r3,#0 beq C_UTRSTAT01 ldr r2,=UTXH0 ldr r3,=URXH0 ldr r4,r3 str r4,r2 B C_UTRSTAT00 END 1. 查看相关寄存器,思考怎么配置UART时钟信号和UART配置寄存器? 答:设置mellcon寄存器的值可以设置时钟,改变ulcon的值可以配置UART配置寄存器。 2. 修改串口传输函数,使其在超级终端中输入“Enter”回车键后,输出“回车”加“换行”。(“回车”和“换行”对应的ASC码分别为0x0d和0x0a). 答:函数修改为: C_UTRSTAT00 ldr r2,=UTRSTAT0 ldr r3,r2 add r3,r3,#1 CMP r3,#0 beq C_UTRSTAT00 C_UTRSTAT01 ldr r2,=UTRSTAT0 ldr r3,r2 add r3,r3,#2 cmp r3,#0 beq C_UTRSTAT01 ldr r2,=U

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论