ARM串口实验报告.
ARM实训报告汇总
实训一、绘出STM32开发板的MCU外围硬件连接图学生:吴磊郑黄庆阿不力孜指导老师:王宜结电子工程学院电子信息工程一、实训目的1.握STM32开发板的封装和引脚2.能够测量开发板外围器件与STM32芯片的实际连接,并画出电路图二、实训内容1.画出开发板上MCU与发光二极管DS0、DS1的连接示意图2.画出开发板上MCU与按键KEY0、KEY1、KRY2、KEYM的连接示意图3.画出开发板上MCU与24C02芯片的连接示意图4.画出开发板上MCU与W25X16芯片的连接示意图5.画出开发板上MCU与温度传感器18B20的连接示意图6.画出开发板上MCU与2.8寸液晶的连接示意图7.画出开发板上MCU与红外接收头的连接示意图8.画出开发板上MCU与PL2302芯片的连接示意图三、实训过程1、MCU图1图1中上部的BOOT1用于设置STM32的启动方式,其对应启动模式如下表所示:表1我们用串口下载代码,则配置BOOT0为1,BOOT1为0即可,如果想让STM32一按复位键就开始跑代码,则需要配置BOOT0为0,BOOT1随便设置都可以。
2、LED图2其中PWR是系统电源指示灯,为蓝色。
LED0和LED1分别接在PA8和PD2上,PA8还可以通过TIM1的通道1的PWM输出来控制DS0的亮度。
为了方便大家判断,我们选择了DS0为红色,DS1为绿色的LED灯。
3、按键图3KEY0、KEY1和KEY2用作普通按键输入,分别连接在PA13、PA15和PA14上。
WK_UP 按键连接到PA0(STM32的WKUP引脚),它除了可以用作普通输入按键外,还可以用作STM32的唤醒输入。
4、EEPROMALIENTEK MiniSTM32自带了24C02的EEPROM芯片,该芯片的容量为2Kbit,也就是256个字节。
图4这里我们把A0~A2均接地,对24C02来说也就是把地址位设置成了0了。
5、SPI FLASHALIENTEK MiniSTM32开发板载有SPI FLASH芯片W25X16,该芯片的容量为2M字节。
arm实验报告,最新
通用IO口试验一、实验目的 :熟悉ARM 芯片I/O 口编程配置方法;掌握ARM 芯片I/O 口控制LED 显示的方法。
二、实验设备硬件:嵌入式实验平台一套、仿真器一个、PC 机一台。
软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS 开发软件一套。
三、实验内容控制嵌入式实验箱上的LED 轮流点亮。
四、实验原理S3CRRB0X 芯片上共有71 个多功能I/O 引脚,他们分别为7 组I/O 端口:2 个9 位I/O 端口(端口E 和F)2 个8 位I/O 端口(端口D 和G)1 个16 位I/O 端口(端口C)1 个10 位I/O 端口(端口A)1 个11 位I/O 端口(端口B)每组端口都可以通过软件配置寄存器来满足不同系统合设计的需要。
在运行主程序之前,必须先对每一个用到的引脚的功能进行设置。
如果某些引脚的附庸功能没有使用,那么可以先将该引脚设置为I/O 口。
S3C44B0X 芯片与端口相关的寄存器:(1)端口控制寄存器(PCONA~G):在S3C44B0X 芯片中,大部分引脚是使用多路复用的,所以要确定每个引脚的功能。
PCONn(端口控制寄存器)能够定义引脚功能。
如果PG0~PG7 作为掉电模式下的唤醒信号,那么这些端口必须配置成中断模式。
(2)端口数据寄存器(PDATA~G):如果端口定义为输出口,那么输出数据可以写入PDATn 中相应的位;如果端口定义为输入口,那么输入数据可以从PDATn 相应的位中读入。
(3)端口上拉寄存器(PUPC~G):通过配置端口上拉寄存器,可以使该组端口与上拉电阻连接或断开。
当寄存器中相应位配置为0 时,该引脚接上拉寄存器;当寄存器中相应位配置为1 时,该引脚不接上拉电阻。
(4)外部中断寄存器(EXTINT):通过不同的信号方式可以使8 个外部中断被请求。
EXTINT 寄存器可以根据外部中断的需求,将中断触发信号配置为低电平触发,高电平触发,下降沿触发,上升沿触发和边沿触发几种方式。
arm实验报告——串口
课程:嵌入式设计实验日期:2011 年 6 月成绩:实验三串口通讯实验一实验目的1 掌握ARM的串行口工作原理;2 学习并编程实现S3C2410的UART串口通讯;3 学习并掌握S3C2410寄存器的配置方法。
二实验内容1 实现查询方式串口的收发功能。
实现实验装置通PC平台的串口通讯,接受PC 平台发送出的数字,并将该数字重新返回给PC平台。
三实验设备1 硬件:DM2410B+实验系统PC机JTAG仿真器串口线。
2 软件:PC机操作系统(WINDOWS 2000)ARM DEVELOPER SUITE V1.2四、实验说明1, S3C241}串行A控制寄存器S3C2410自带三个异步串行口控制器,每个控制器有lfi字节的F工FO(先入先出寄存器),最大波特率115. 2Ko每个DART有7种状态:溢出错误,校验错误,帧错误,暂停态,接收缓冲区准备好,发送缓冲区空,发送移位缓冲器空。
通过设置UCONn寄存器选择UA RT时钟是由S3C2410的系统内部时钟PCLK产生还是有外部UART设备的时钟UCLK产生。
波特率的大小可以通过设置波特率寄存器CUBRDIVn)控制。
使用PCLK时的计算公式如下:UBRDIVn=(in七)CPCLYI/ (bps*lE))一1使用UCLK时的计算公式如下:UBRD工介=(int)CUCLYI/ Cbps}1E))一1与DART有关的寄存器有以下几个,关于寄存器的详细说明请参考S3C2410数据手册。
课程:嵌入式设计实验日期:2011 年 6 月成绩:1)线路控制寄存器ULCONn该寄存器的第6位决定是否使用红外模式,位5-3决定校验方式,位2决定停止位长度,位1 和位D决定每帧的数据位数。
2)控制寄存器UCONn该寄存器决定UA RT的各种模式。
3) FIFO控制寄存器UFCONn该寄存器用于收发缓冲的管理,包括缓冲的触发字节数的设置、F工FO的清除和使能。
4} MODEM控制寄存器UMCONn该寄存器用于设置流控方式。
ARM实验报告
ARM实验报告朱银忠1、实验目的(1)熟悉LPC2378的结构功能和代码体系。
(2)熟悉LPC2378实验板的各个模块功能。
(3)掌握基本的硬件电路的连接和调试方法。
(4)利用按键模块,显示模块和主控CPU实现简单的功能。
2、实验步骤(1)学习并熟悉电路图,理解掌握LPC2378及其各个模块的电路连接结构和工作方法。
(2)将LPC2378和其他外围原件焊接在实验板上。
(3)学习keil C的使用方法,建立一个工程。
并利用keil C将所有的主程序和外围程序烧写到LPC2378中。
(4)上电测试各个模块是否正常工作,如果不正常工作则找到原因并解决故障。
(5)通过keil C 编写一个小程序,在LPC 2378实验板上实现一定的功能。
3、硬件调试结果(1)上电后经万用表测试,电压转换电路工作正常,芯片供电电压为3.3V,部分外围元件为5V。
(2)在keil C 中建立工程后,通过进行合适的配置成功的将程序下载进了LPC2378。
(3)将串口模块通过串口线和计算机连接后。
利用串口调试助手软件测试串口模块工作正常。
(4)通过对SD卡的读写操作测试证明SD卡模块工作正常。
(5)通过对键值的读取证明按键模块工作正常。
(6)液晶模块在插上排线后没有反应,经检查,发现接口和封装并不匹配。
将接口调换位置后重新插上排线,再通过调节电位器到合适的位置,液晶可以正常工作。
4、程序功能和实现思路该程序通过LPC2378对液晶模块和按键模块的联合控制,实现了一个“推箱子”游戏的功能。
该程序基本实现思路为,通过按键函数读取键值得到上、下、左、右四个方向的命令。
根据命令控制“人”的位置和“箱子”的位置。
在屏幕上显示“人”的位置和“箱子”的位置,最终当“人”将“箱子”推到预定地点后,游戏结束。
5、程序清单#include "LPC23XX.h"#include "CONFIG.h"#include "GPIO.h"#include "LCD.h"#include "IRQ.h"#include "RTC.h"#include "TIMER.h"#include "KEY.h"#include "I2C.h"#include "UART.h"#include "MOTOR.h"#include "RS485.h"#include "stdio.h"#include "stdlib.h"#define UP 0x34#define DOWN 0x63#define LEFT 0x32#define RIGHT 0x36unsigned int i,j;unsigned char deslocatex[]={13,14};unsigned char deslocatey[]={13,14};unsigned char flag0=0,flag1=0;unsigned char temp;unsigned char ss[];unsigned int sc=0;unsigned long time=100000;static int step=0;unsigned int cant=0 ;struct BOX{unsigned int x;unsigned int y;}Box1,Box2,Box3,Box0;int main(){ config_IO();init_VIC();LCD_Initial();KEY_Initial();I2C_Initial(0x01,40000); //主模式,时钟400KHZI2C_WriteNByte(AT24C64,0x0000,s,sizeof(s)-1);LCD_Delay(1000 );I2C_ReadNByte(AT24C64,0x0000,d,sizeof(s)-1);SCS |= 1; //允许P0、P1的高速GPIO功能PINSEL10 = 0; //禁止EMCPINSEL3=0X00000000;FIO1DIR=0X00040000;FIO1CLR=0X00040000;Logo();//开场动画start:Clr_Screen();c=0;time=50000;Box0.x=3;Box0.y=2;Box1.x=4;Box1.y=2;Box2.x=3;Box2.y=3;Box3.x=4;Box3.y=3;BoxBody(Box0.x,Box0.y);BoxBody(Box1.x,Box1.y);BoxBody(Box2.x,Box2.y);BoxBody(Box3.x,Box3.y);map();while(1){ if(cant==1){Printstr(16,70,"can't ");Printstr(16,90,"move");}cant=0;switch(ReadBC7281(KEY_LATCH)){ case UP:if((Box0.y==1&&Box1.y==1)||(4<=Box0.x<=5&&Box0.y==8)||(Box0.x>=11&&Box 0.y==8)){cant=1;LCD_Delay(time);break;} //can ?else{Clr_part(Box2.x,Box2.y);Clr_part(Box3.x,Box3.y);Box2.y=Box0.y;Box3.y=Box1.y;Box0.y-=1;Box1.y-=1;step++;LCD_Delay(time);break ;}case DOWN://if(((1<=Box0.x<=5)&&(Box0.y==5))||(Box0.x>=11&&(Box0.y==5))||(Box0.y==13)) if((1<=Box0.y<=4)||(5<=Box0.y<=7&&6<=Box0.x<=10)||(8<=Box0.y<=13&&4<=B ox0.x<=13)){Clr_part(Box0.x,Box0.y);Clr_part(Box1.x,Box1.y);Box0.y=Box2.y;Box1.y=Box3.y;Box2.y+=1;Box3.y+=1;step++;LCD_Delay(time);break;}else {cant=1;LCD_Delay(time);break;}case LEFT:if((Box0.x==1)||(Box0.x==6&&Box0.y==7)||(Box0.x==4&&Box0.y>=8)) {//Printstr(19,110,"Can't Move");cant=1;LCD_Delay(time);break;}else{Clr_part(Box1.x,Box1.y);Clr_part(Box3.x,Box3.y);Box1.x=Box0.x;Box3.x=Box2.x;Box0.x-=1;Box2.x-=1;step++;LCD_Delay(time);break;}case RIGHT:if((Box1.x==16)||(Box1.x==11&&Box1.y==7)||(Box1.x==14&&8<=Box1.y<=12)) {cant=1;LCD_Delay(time);break;}else{Clr_part(Box0.x,Box0.y);Clr_part(Box2.x,Box2.y);Box0.x=Box1.x;Box2.x=Box3.x;Box1.x+=1;Box3.x+=1;step++;LCD_Delay(time);break;}}BoxBody(Box0.x,Box0.y);BoxBody(Box1.x,Box1.y);BoxBody(Box2.x,Box2.y);BoxBody(Box3.x,Box3.y);LCD_Delay(time);if(Box0.x==13&&Box0.y==13){Printstr(19,110,"Win !");LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);restart();LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);LCD_Delay(time);goto start;}}}6、程序运行结果(1)7、问题分析。
ARM的串行口实验.
课程名称:嵌入式技术开课机房:11号机房2012年4月1日星期二8:10~11:35专业班级通信09( 班学号Xb09680204姓名江立坤实验项目名称实验3——ARM的串行口实验指导教师陈玮一、实验任务与实验目的实验目的1. 了解UART的基本知识2. 掌握基于群星系列CM3程序库的UART配置、数据收发编程3. 学会串口调试助手或超级终端的使用实验任务任务一:使用Stellaris驱动库函数,编写可以接收及发送字符串的基于EASY ARM 8962开发板的UART驱动程序任务二:在Microsoft Visual Studio开发环境下,使用C#编写一桌面程序,要求可以通过串口发送指令,使用其打开LED3~LED6。
命令协议可以自己定义。
二、报告内容任务一#include"uartGetPut.h"#include"systemInit.h"#include#include#include#define PART_LM3S8962#include// 定义接收缓冲区#define MAX_SIZE 40 // 缓冲区最大限制长度char RxBuf[1 + MAX_SIZE]; // 接收缓冲区int BufP = 0; // 缓冲区位置变量tBoolean RxEndFlag = false; // 接收结束标志// UART2中断服务函数void UART0_ISR(void {char c;unsigned long ulStatus;ulStatus = UARTIntStatus(UART0_BASE, true; // 读取当前中断状态UARTIntClear(UART0_BASE, ulStatus; // 清除中断状态if ((ulStatus & UART_INT_RX || (ulStatus & UART_INT_RT // 若是接收中断或者{ // 接收超时中断for (;; {if (!UARTCharsAvail(UART0_BASEbreak; // 若接收FIFO里无字符则跳出c = UARTCharGetNonBlocking(UART0_BASE; // 从接收FIFO里读取字符if (c == '\r' {UARTCharPut(UART2_BASE, '\r'; // 回显回车换行UARTCharPut(UART2_BASE, '\n';RxEndFlag = true; // 接收结束标志置位break;}if (isprint(c // 若是可打印字符{if (BufP < MAX_SIZE {UARTCharPut(UART2_BASE, c; // 回显RxBuf[BufP++] = c;RxBuf[BufP] = '\0';}}}}}// 以FIFO中断方式接收一个字符串,不回显,返回实际接收到的有效字符数int uartFIFOGets(char *s, int size {int n;while (!RxEndFlag;n = BufP;BufP = 0;RxEndFlag = false;strncpy(s, RxBuf, size;s[MAX_SIZE] = '\0';return (n;}// UART初始化void uartInit(void {SysCtlPeripheralEnable (SYSCTL_PERIPH_UART0; SysCtlPeripheralEnable (U0TX_PERIPH; // 使能RX/TX所在的GPIO端口GPIOPinTypeUART(U0RX_PORT, // 配置RX/TX所在管脚为U0RX_PIN; // UART收发功能GPIOPinTypeUART(U0TX_PORT, // 配置RX/TX所在管脚为U0TX_PIN; // UART收发功能UARTConfigSet(UART0_BASE, // 配置UART端口9600, // 波特率:9600UART_CONFIG_WLEN_8 | // 数据位:8UART_CONFIG_STOP_ONE | // 停止位:1UART_CONFIG_PAR_NONE; // 校验位:无UARTFIFOLevelSet(UART0_BASE, // 设置收发FIFO中断触发深度UART_FIFO_TX2_8, // 发送FIFO为2/8深度(4B)UART_FIFO_RX6_8; // 接收FIFO为6/8深度(12B)UARTIntEnable(UART0_BASE, UART_INT_TX; // 使能发送中断IntEnable (INT_UART0; // 使能UART总中断IntMasterEnable(; // 使能处理器中断UARTEnable (UART0_BASE; // 使能UART端口}// 通过UART发送一个字符void uartPutc(const char c {UARTCharPut(UART0_BASE, c;}// 通过UART发送字符串void uartPuts(const char *s {while (*s != '\0'uartPutc(*(s++;}// 通过UART接收一个字符char uartGetc(void {return (UARTCharGet(UART0_BASE;}// 功能:通过UART接收字符串,不回显,退格修改,回车结束// 参数:*s保存接收数据的缓冲区,只接收可打印字符(ASCII码32~127)// size是缓冲区*s的总长度,要求size >= 2(包括末尾'\0',建议用sizeof(来获取)// 返回:接收到的有效字符数目int uartGets(char *s, int size {char c;int n = 0;*s = '\0';if (size < 2return (0;size--;for (;; {c = uartGetc(; // 接收1个字符if (c == '\b'// 遇退格修改{if (n > 0 {*(--s = '\0';n--;}}if (c == '\r'// 遇回车结束{break;}if (n < size // 如果小于长度限制{if (isprint(c // 如果接收到的是可打印字符{*(s++ = c; // 保存接收到的字符到缓冲区*s = '\0';n++;}}}return (n; // 返回接收到的有效字符数目}任务二1. 控制协议命令格式: space space space响应格式: >space space space其中:space表示空格,亦可以其他字符替代,如,(逗号)、;(分号)之类例如,LED 3 0字段名称长度(字符个数)可选值列表Command 设备类型4 LEDS——0BUZZ——1LM75——2DeviceNo 设备号1 0~9LED:只能为3~6BUZZ:只能为1LM75:只能为1RD/WR 读写方向1 0——读1——写DeviceValue p设备值PC-ARMspan:1ARM-PC:1~N0——关闭1——打开X——温度值2. 协议实现桌面程序Device.cs using System;using System.Collections.Generic;using System.Text;using System.IO.Ports;namespace WindowsFormsApplication1{public class Device{#region Feilds Defintion//////属性///public LM8962DeviceType DeviceType { get; set; }Several terrorists have claimed to be responsible for the blast几个恐怖主义者已经声称对这起爆炸负责。
ARM串口实验报告.
《APM 串口实验》实验报告课程名称:嵌入式微办理器技术班级:电信0901姓名:地点:嵌入式系统基础实训室指导教师:王瑾ARM 的串行口实验一、实验目的◆1.掌握ARM 的串行口工作原理。
◆2.学习编程实现ARM 的 UART 通信。
◆3.掌握CPU 利用串口通信的方法。
二、实验内容学习串行通信原理,认识串行通信控制器,阅读ARM 芯片文档,掌握ARM 的 UART 有关寄存器的功能,熟习ARM 系统硬件的UART 有关接口。
编程实现ARM 和计算机实现串行通讯:ARM 监督串行口,将接收到的字符再发送给串口(计算机与开发平台是经过超级终端通讯的),即按 PC 键盘经过超级终端发送数据,开发平台将接收到的数据再返送给 PC,在超级终端上显示。
三、预备知识1、1.用ARM SDT 2.5或ADS1.2集成开发环境,编写和调试程序的基本过程。
2、2.ARM应用程序的框架构造。
3、3.认识串行总线四、实验设施及工具硬件: ARM嵌入式开发平台、用于 ARM7TDMI的 JTAG 仿真器、 PC 机 Pentium100 以上、串口线。
软件: PC 机操作系统 win98 、 Win2000 或 WinXP 、 ARM SDT 2.51 或 ADS1.2 集成开发环境、仿真器驱动程序、超级终端通信程序。
五、实验原理及说明1.异步串行I / O异步串行方式是将传输数据的每个字符一位接一位( 比如先低位、后高位地传递。
数据的各不同位能够分时使用同一传输通道,所以串行I / O 能够减少信号连线,最少用一对线即可进行。
接收方关于同一根线上一连串的数字信号,第一要切割成位,再按位构成字符。
为了恢复发送的信息,两方一定协调工作。
在微型计算机中大批使用异步串行I /O 方式,两方使用各自的时钟信号,并且同意时钟频次有必定偏差,所以实现较简单。
可是因为每个字符都要独立确立开端和结束 ( 即每个字符都要从头同步,字符和字符间还可能有长度不定的安闲时间,所以效率较低。
ARM的串行口实验报告
ARM的串行口实验报告实验目的:1.了解ARM的串行口通信原理和应用;2.掌握ARM串口编程的方法;3.实现ARM与外部设备的串行通信。
实验材料:1.ARM开发板2.计算机3.串行通信线缆实验步骤:1.硬件连接:a.将ARM开发板连接至计算机,使用USB线缆进行连接;b.使用串行通信线缆将ARM开发板与外部设备连接。
2.软件配置:a. 打开开发板所使用的开发环境(如Keil MDK);b.在开发环境中创建一个新的工程;c.配置并选择合适的ARM微处理器型号。
3.串口初始化:a.在代码中引入相应的头文件;b.配置串口的波特率、数据位、停止位和校验位;c.初始化串口。
4.串口发送数据:a.将需要发送的数据存入数据缓冲区;b.通过串口发送数据。
5.串口接收数据:a.等待接收数据;b.通过串口接收数据并存入接收缓冲区。
6.数据处理:a.对接收到的数据进行处理;b.可以根据需求进行解析或其他操作。
7.实验结果分析:a.验证串行口通信系统的可靠性和稳定性;b.判断实验结果与期望结果是否一致;c.分析实验中遇到的问题,并提出解决方案。
8.实验结论:a.总结实验过程和实验结果;b.总结串行口通信的应用和意义;c.总结ARM串口编程的方法和技巧。
实验注意事项:1.进行实验前,确保所有连接正确且紧固;2.实验前检查软件环境是否正确配置;3.实验中注意正确调用相应的API函数;4.在数据处理过程中,注意异常情况的处理;5.经常保存代码和实验结果,以备后续使用。
实验心得:通过本次实验,我了解了ARM的串行口通信原理和应用,并成功实现了ARM与外部设备的串行通信。
在实验过程中,我熟悉了串口初始化、发送数据和接收数据的步骤,并学会了对接收的数据进行处理。
通过实验,我深刻理解了串行口通信的重要性和应用价值,掌握了ARM串口编程的方法和技巧。
在后续的学习和实践中,我将进一步提升对ARM串口编程的理解和应用能力,将其运用到更多的实际项目中。
ARM串口实验报告
3.1 ARM的串行口实验一、实验目的1.掌握ARM的串行口工作原理。
2.学习编程实现ARM的UART通讯。
3.掌握CPU利用串口通讯的方法。
二、实验内容学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的UART 相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。
编程实现ARM和计算机实现串行通讯:ARM监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。
三、预备知识1、用ARM ADS1.2集成开发环境,编写和调试程序的基本过程。
2、ARM应用程序的框架结构。
3、了解串行总线四、实验设备及工具硬件:ARM嵌入式开发平台、PC机Pentium100以上、串口线。
软件:PC机操作系统win98、Win2000或WinXP、ARM ADS1.2集成开发环境、超级终端通讯程序。
五、实验原理及说明1.异步串行I/O异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位)地传送。
数据的各不同位可以分时使用同一传输通道,因此串行I/O可以减少信号连线,最少用一对线即可进行。
接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。
为了恢复发送的信息,双方必须协调工作。
在微型计算机中大量使用异步串行I/O方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。
但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步),字符和字符间还可能有长度不定的空闲时间,因此效率较低。
图3-1 串行通信字符格式图3-1给出异步串行通信中一个字符的传送格式。
开始前,线路处于空闲状态,送出连续“1”。
传送开始时首先发一个“0”作为起始位,然后出现在通信线上的是字符的二进制编码数据。
每个字符的数据位长可以约定为5位、6位、7位或8位,一般采用ASCII编码。
嵌入式实验报告_ARM的串行口实验
嵌入式实验报告_ARM的串行口实验一、实验目的本次实验的主要目的是深入了解和掌握 ARM 处理器的串行口通信原理及编程方法。
通过实际操作和编程实践,能够实现基于 ARM 的串行数据收发功能,为后续在嵌入式系统中的应用打下坚实的基础。
二、实验原理串行通信是指数据一位一位地顺序传送。
在 ARM 系统中,串行口通常由发送器、接收器、控制寄存器等组成。
发送器负责将并行数据转换为串行数据并发送出去,接收器则将接收到的串行数据转换为并行数据。
控制寄存器用于配置串行口的工作模式、波特率、数据位长度、停止位长度等参数。
波特率是串行通信中的一个重要概念,它表示每秒传输的比特数。
常见的波特率有 9600、115200 等。
在本次实验中,需要根据实际需求设置合适的波特率,以保证数据传输的准确性和稳定性。
三、实验设备与环境1、硬件设备:ARM 开发板、USB 转串口线、电脑。
2、软件环境:Keil MDK 集成开发环境、串口调试助手。
四、实验步骤1、建立工程在 Keil MDK 中创建一个新的工程,选择对应的 ARM 芯片型号,并配置工程的相关参数,如时钟频率、存储分配等。
2、编写代码(1)初始化串行口首先,需要设置串行口的工作模式、波特率、数据位长度、停止位长度等参数。
例如,设置波特率为 115200,数据位长度为 8 位,停止位长度为 1 位。
(2)发送数据通过编写发送函数,将要发送的数据写入串行口的数据寄存器,实现数据的发送。
(3)接收数据通过中断或者查询的方式,读取串行口的接收寄存器,获取接收到的数据。
(4)主函数在主函数中,调用发送函数发送数据,并处理接收的数据。
3、编译下载编写完成代码后,进行编译,确保代码没有语法错误。
然后,将生成的可执行文件下载到 ARM 开发板中。
4、连接设备使用 USB 转串口线将 ARM 开发板与电脑连接起来,并在电脑上打开串口调试助手,设置与开发板相同的波特率等参数。
5、测试实验在串口调试助手中发送数据,观察开发板是否能够正确接收并回传数据。
嵌入式ARM串口实验报告
实验五串口通信实验1实验目的(1) 掌握ARM的串行口工作原理;(2) 编程实现ARM的UART通讯;(3) 掌握S3C2410寄存器配置方法。
2 实验设备(1) S3C2410嵌入式开发板,JTAG仿真器。
(2) 软件:PC机操作系统Windows XP,ADS1.2集成开发环境,仿真器驱动程序,超级终端通讯程序。
3 实验内容实现查询方式串口的收发功能。
接收来自串口(通过超级终端)的字符并将接收到的字符发送到超级终端。
4 实验步骤(1) 参照模板工程,新建一个工程UART,添加相应的文件,并修改UART 的工程设置;相关设置如下列图所示:图5.1 设置R0 Base图5.2 添加Target图5.3 配置(2) 创建xinint.c和init.c并加入到工程UART中;(3) 编写串口操作函数实现如下功能:循环接收串口送来的数据,并将接收到的数据发送回去;参考代码如下:(1)串口初始化程序MMU_Init(); //初始化内存管理单元//设置系统时钟ChangeClockDivider(1,1); // 1:2:4ChangeMPllValue(0xa1,0x3,0x1); // FCLK=202.8MHzPort_Init(); //初始化I/O口Uart_Init(0,115200); //初始化串口Uart_Select(0); //选择串口0(2)发送数据while(!(rUTRSTAT0&0x2)); //等待发送缓冲空rUTXH0=data; //将数据写到数据端口(3)接收数据while(rUTRSTAT0&0x1==0x0); //等待数据data=rURXH0; //读取数据(4) 编译UART;(5) 将计算机的串口接到开发板的UART0上;(6) 运行超级终端,选择正确的串口号,并将串口设置位:波特率(115200)、奇偶校验(None)、数据位数(8)和停止位数(1),无流控,打开串口;(7) 运行程序,在超级终端中输入的数据将回显到超级终端上,结果如图5.4所示:图5.4 运行结果(8) 修改程序代码,使用户输入的数字在超级终端显示;结果如图5.5所示:图5.5 运行结果图5.6 运行结果5 实验总结通过这次实验我掌握了串口的使用方法,串口初始化、发送数据和接收数据,为以后的实验奠定了基础,通过有关书籍我知道在嵌入式系统中串口是一个重要的资源,常用来做输入输出设备。
串口通信实验
串口通信实验一、实验目的1.掌握ARM的串行口工作原理。
2.学习编程实现ARM的UART通讯。
3.掌握CPU利用串口通讯的方法。
二、实验内容学习串行通讯原理,了解串行通讯控制器,阅读ARM芯片文档,掌握ARM的UART 相关寄存器的功能,熟悉ARM系统硬件的UART相关接口。
编程实现ARM和计算机实现串行通讯:ARM监视串行口,将接收到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC键盘通过超级终端发送数据,开发板将接收到的数据再返送给PC,在超级终端上显示。
三、实验原理介绍通信方式在通信过程中,如果通信仅在点对点之间进行,或者点对多点之间进行,那么,按消息传输的方向和时间的不同,可以将通信分为单工通信、全双工通信以及半双工通信。
(1)单工消息只能单方向进行传输的一种通信方式称为单工通信。
如图8-1所示,通信只能从A传输到B。
这好比一条绝对方向的单行道路,不准双向通信也不能逆向行驶。
在现代通信系统中,如模拟广播电视系统(不包括现正在研究应用的HFC双向网络)、无线寻呼系统等。
信号只能从广播电视台、无线寻呼中心发送到电视机接收机、BB机上。
图8-1 单工通信方式(2)全双工全双工通信是指通信双方可以同时进行双向数据传输而互不影响的工作方式。
如图8-2所示,在这种工作方式下,通信双方都可以同时进行信息的发送和接收,因此,全双工通信的信道必须是双向信道。
如果是有线的全双工方式,通信双方会有两根独立的信号线分别传输发送信号和接收信号,从而使得发送和接收可同时进行。
生活中的普通电话系统、移动通信系统都是全双工方式。
图8-2 双工通信方式(3)半双工这种方式允许数据传输做双向操作,即不仅可以发送,亦可以接收信号,但是,在同一时刻,只能进行发送和接收任意一个操作。
因此仍然只采用一个信道。
如图8-3所示,如果是有线通信,通信双方只需要一根数据线连接,但是比全双工方式耗时会更多。
如对讲机系统就是采用的半双工通信方式。
ARM实验报告(同名10002)
ARM实验报告(同名10002)ARM实验报告(同名10002)南京邮电大学通达学院嵌入式系统B实验报告班级100023专业通信工程(嵌入式系统开发)学号10002304姓名陆海霞实验项目:1、ADS下简单ARM汇编程序2、熟悉LINUX开发环境3、多线程应用程序设计指导教师范山岗实验一ADS下简单ARM汇编程序实验目的:1、熟悉ADS1.2下进行汇编语言程序设计的基本流程;2、熟悉在ADS中创建工程及编写、编译和运行汇编语言程序的方法;3、熟悉AXD中各种调试功能。
实验环境:1、硬件:PC机。
2、软件ADS1.2。
实验内容:1、在ADS中新建工程,并设置开发环境。
2、在Code Warrior 环境中编辑、编译和链接汇编语言程序,并生成可执行文件。
3、在AXD中调试汇编程序;4、使用命令行界面编辑、编译和链接汇编程序。
实验步骤:本实验要求在ADS环境下,编写一个汇编程序,计算S=1+2+3……+n的累加值。
把累加结果S存入到存储器的指定位置;在AXD中调试该程序,使用ARMulator模拟目标机。
1、新建工程。
打开Code Warrior,选择File->New(project)选项,使用ARM Executable Image模版新建一个工程。
2、设置编译和链接选项。
由于我们使用的是模拟机,设置汇编语言编译器的模拟处理器架构为Xscale;在ARM Linker 中,选择output选项卡并选择Linktype 为Simple类型,确认RO Base为0x8000,修改RW Base为0x9000,3、为当前工程添加源程序文件。
ARM汇编程序源文件后缀名为S大小写均可。
确保添加入当前工程复选框选上。
4、编辑源程序代码。
参考程序add.s :;armadd源程序N EQU 7 ;累加次数;定义名为Adding的代码段AREA Adding,CODE,READONLYENTRYMOV R0,#0MOV R1,#1REPEAT ADD R0,R0,R1ADD R1,R1,#1CMP R1,#NBLE REPEATLDR R2,=RESULTSTR R0,[R2]HERE B HERE定义名为Dataspace的数据段AREA Dataspace,DATA,READWRITE RESULT DCD 0END实验中程序编写如下图所示:5、编译汇编源代码文件。
ARM9实验报告(一)
实验一ARM串行口实验一、实验目的1.掌握ARM的串行口工作原理2.学习编程实现ARM的UART通讯3.掌握S3C2410寄存器配置方法。
二、预备知识1.了解EWARM集成开发环境的基本功能2.学习串口通讯的基本知识3.熟悉S3C2410串口有关的寄存器三、实验设备1.2410s教学实验箱2.ARM920T的JTAG仿真器3.ARM EWARM5.3集成开发环境4.串口连接线四、实验内容1.熟悉打开已有工程的步骤,掌握仿真调试的方法。
2.建立一个新工程,熟练掌握编译器和链接器的设置方法。
3.从串口输入字符串,将0~9数字在超级终端上连续显示,“Enter”键换行。
4.将第三步得到的字符转换成BCD码,限制在0~1023,用于控制直流电机。
五、实验步骤1.创建新工程(1)在D盘根目录创建一个newproj的目录,将ARM串口实验的5个文件夹和2个文件拷入,如上图所示,这5个文件夹是:inc(库文件)、init(初始化文件)、src(源文件)、startup(启动文件)和uhal(串口文件),这2个文件是:s3c2410_ram.icf和上从410_ram.mac(2)运行IAR Embedded Workbench,执行file>new>workspace,工程名newproj1.ewp,保存在d:\newproj下,保存Workspace,和工程名一样,存在同一目录。
此时编译,出现错误。
(3)有3个头文件做以下修改:#include “../inc/macro.h”,#include“../inc/drivers.h“,#include ”../uhal/isr.h“ General Option>Library configuration选Full,C/C++ Compiler>Code>Processor mode选ARM,编译通过。
(4)选CPU,选仿真器RDI、“Run to Main”打勾、选mac文件s3c2410_ram.mac,选链接器配置文件s3c2410_ram.icf,配置仿真器的动态链接库H-JTAG.dll,IAR 生成的out文件供RDI等仿真器使用,通过输出转换可生成bin文件,供vivi 烧写Flash使用。
arm实习报告
arm实习报告篇一:ARM实习报告通过这次模具设计,本人在多方面都有所提高。
通过这次设计,综合运用本专业所学课程的理论和实际知识进行设计,提高学生独立工作能力,巩固与扩充了arm等课程所学的内容,掌握arm设计的方式和步骤,同时各科相关的课程都有了全面的温习,独立试探的能力也有了提高。
在短短的一个礼拜中,让咱们初步让理性回到感性的从头熟悉,也让咱们初步的熟悉了那个社会,关于以后做人所应把握的方向也有所启发,表现出团队课程设计的能力和综合运用知识的能力,体会了学以致用、突出自己劳动功效的喜悦心情,从中发觉自己平常学习的不足和薄弱环节,从而加以弥补。
这次课程实际仅仅是基于arm微处置器应用的一个开端,在这期间咱们还有很多的不足,比如不能完成引脚的最优连接,不能完成硬件系统和软件程序的自主设置和编写,但我相信通过以后对arm嵌入式系统的继续学习,自己会取得进一步的提高。
我会把这此实习作为我人一辈子的起点,在以后的工作学习中不断要求自己,完善自己,让自己做的更好。
篇二:arm实习报告嵌入式课程设计与总结报告摘要通过嵌入式操纵系统的实习,使咱们了解并把握依照嵌入式操纵系统项目要求,如何设计符合操纵逻辑的原理图,复合原理图及电子电气emc 的pcb图,学习电子元器件的焊接,pcb板的调试等,最终把握嵌入式操纵系统的设计及工艺等。
一、设计实习任务1. 焊接arm7(lpc2132)最小系统pcb。
要求认真认真焊接,并调试使其能正常工作(提供最简易测试程序)。
2. 设计数码管动态扫描显示电路,三个按键的键盘电路,模拟电压取样电路等。
要求原理图设计合理,要求有与最小系统板的接口,正确焊接,调试后能正常工作。
3. 操纵软件设计在嵌入式操纵系统的设计中,系统操纵软件的设计是一项超级重要且艰巨的工作,系统可否正常靠得住的工作,成败在此一举。
因此要求同窗们认真认真的设计、调试操纵软件。
要求软件语句精炼,整体健壮,有必然的抗干扰能力。
ARM实验报告
ARM实验报告专业:计算机科学与技术班级:080613学号:080613309姓名:周之平实验一ARM汇编指令一实验目的1、初步学会使用Embest IDE for ARM 开发环境及ARM软件模拟器;2、通过实验掌握简单ARM汇编指令的使用方法。
二实验设备1、硬件:PC机2、软件:Embest IDE Pro 2004集成开发环境,Windows 98/2000/NT/XP。
三实验内容1、熟悉开发环境的使用,并使用ldr/str,mov等指令访问寄存器或存储单元;2、使用add/sub/lsl/lsr/and/orr等指令,完成基本数学/逻辑运算。
四实验原理ARM处理器共有37个寄存器:1、31个通用寄存器,包括程序计数器(PC)。
这些寄存器都是32位的。
2、6个状态寄存器。
这些寄存器也是32位的,但是只是使用了其中的12位。
4.1 ARM通用寄存器通用寄存器(R0~R15)可分为3类:o 不分组寄存器R0~R7;o 分组寄存器R8~R14;o 程序计数器R15;4.2 存储器格式ARM体系结构将存储器看作是从零地址开始的字节的线性组合。
字节零到字节三放置第一个字(WORD),字节四到字节七存储第二个字,以此类推。
ARM体系结构可以用两种方法存储字数据,分别称为大端格式和小端格式。
4.3 GNU基础知识Embest IDE集成了GNU 汇编器as,编译器gcc,链接器ld。
因此,我们写程序要符合GNU 的语法和规则。
1) 程序默认入口点为“_start”,代码段默认起始地址为0x80002) as常用伪操作符.equ.equ伪操作为数字常量、基于寄存器的值和程序中的标号定义一个字符名称。
语法格式 .equ symbol,expr其中,expr为基于寄存器的地址值、程序中的标号,32位的地址常量或者32位的常量。
Symbol为.equ伪操作为expr定义的字符名称。
.global及.globl.global声明一个符号可以被其他文件引用。
ARM课程实践报告
S3C2410串口通信程序设计课程ARM体系及接口技术班级计算机科学与信息技术一班姓名ioliilil学号ililililililililililililililil1.硬件原理1.S3C2410是Samsung公司推出的16/32位RISC处理器,主要面向手持设备以及高性价比、低功耗的应用。
CPU内核采用的是ARM公司设计的16/32位ARM920T RISC处理器。
2.S3C2410A采用了ARM920T内核,0.18um工艺的CMOS标准宏单元和存储器单元。
它的低功耗、精简和出色的全静态设计特别适用于对成本和功耗敏感的应用。
同样它还采用了一种叫做AMBA新型总线结构。
3.S3C2410A显著特性是CPU核心。
4.ARM920T实现了MMU,AMBA BUS和Harvard高速缓冲体系结构。
这一结构具有独立的16kB指令Cache和16kB数据Cache,每个都是由8字长的行(line)构成。
5.通过提供一系列完整的系统外围设备,S3C2410A大大减少了整个系统的成本,消除了为系统配置额外器件的需要。
6.S3C2410A提供一组完整的系统外围设备:(1)1.8V/2.0V内核供电,3.3V存储器供电,3.3V外部I/O供电;(2)具有16KB的ICache和16KB的DCache以及MMU;(3)外部存储器控制器;(4)LCD控制器提供1通道LCD专用DMA;(5)4通道DMA并有外部请求引脚;(6)3通道UART和2通道SPI;(7)1通道多主机IIC总线和1通道IIS总线控制器;(8)SD主接口版本1.0和MMC卡协议2.11兼容版;(9)2个USB主设备接口,1个USB从设备接口;(10)4通道PWM定时器和1通道内部定时器;(11)看门狗定时器;(12)117位通用I/O口和24通道外部中断源;(13)电源控制模式包括:正常、慢速、空闲和掉电四种模式;(14)8通道10位ADC和触摸屏接口;(15)具有日历功能的RTC;S3C2410结构框图:图一2.软件设计S3C2410A共有117个多功能复用输入输出口(I/O口),分为8组PORT A~PORT H。
ARM的串行口试验
ARM 的串行口试验一、试验目的1. 掌握ARM 的串行口工作原理2. 学习编程实现ARM 的UART 通讯3. 掌握CPU 利用串口通讯的方法二、试验内容学习串行通讯原理,了解串行通讯控制器,阅读ARM 芯片文档,掌握ARM 的UART 相关寄存器的功能,熟悉ARM 系统硬件的UART 相关接口。
编程实现ARM 和计算机实现串行通讯:ARM 监视串行口,将接受到的字符再发送给串口(计算机与开发板是通过超级终端通讯的),即按PC 键盘通过超级终端发送数据,开发板将接受到的数据再返送给PC,在超级终端上显示。
三、预备知识1. 用ARM ADS1.2 集成开发环境,编写和调试程序的基本过程。
2. ARM 应用程序的框架结构。
3. 了解串行总线。
四、试验设备及工具硬件:ARM嵌入式开发平台、PC机PentiumlOO以上、用于ARM920T的JTAG 仿真器、串口线。
软件:PC机操作系统Win2000或WinXP、ARM ADS1.2集成开发环境、仿真器驱动程序、超级终端通讯程序。
五、试验原理及说明随着计算机系统的应用和微机网络的发展,通信功能越来越显的重要。
这里所说的通信是指计算机与外界的信息交换。
因此,通信既包括计算机与外部设备之间,也包括计算机和计算机之间的信息交换。
由于串行通信是在一根传输线上一位一位的传送信息,所用的传输线少,并且可以借助现成的电话网进行信息传送,因此,特别适合于远距离传输。
对于那些与计算机相距不远的人-机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍。
在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各CPU 之间的通信一般都是串行方式。
所以串行接口是微机应用系统常用的接口。
许多外设和计算机按串行方式进行通信,这里所说的串行方式,是指外设与接口电路之间的信息传送方式,实际上,CPU与接口之间仍按并行方式工作。
1、串行通信的概念所谓“串行通信”是指外设和计算机间使用一根数据信号线(另外需要地线,可能还需要控制线),数据在一根数据信号线上一位一位地进行传输,每一位数据都D0D1MMD4OTWD' __ I I « ■ I I ruruu-ru —韵袒 占据一个固定的时间长度。
arm实验报告最终版
ARM与嵌入式技术实验报告专业班级:10通信工程1班姓名:万洁学号:100103011125实验日期:2013年5月28日指导老师:郑汉麟1、 通过实验掌握ARM 指令的特点和寻址方式;2、 掌握简单的ARM 汇编语言的程序设计;3、 了解集成开发环境 Embest IDE 及其开发软件的应用;、实验环境Embest IDE 应用于嵌入式软件开发的新一代图形化的集成开发环境,它包括一套完备 的面向嵌入式系统的开发和调试工具。
其开发软件 Embest IDE for ARM 是集编辑器、编译 器、调试器、工程管理器( projectma nager )于一体的高度集成的窗口环境,用户可以在Embest IDE 集成开发环境中创建工程、编辑文件、编译、链接、运行,以及调试嵌入式应 用程序。
三、实验步骤1)新建工程:运行Embest IDE 集成开发环境,选择菜单项 File 宀New Workspace ,如图一,系统弹出一个对话框,键入文件名“ wj ”,如图二,点击 0K 按钮。
将创建一个新工程,并同时创 建一个与工程名相同的工作区。
此时在工作区窗口将打开该工作区和工程 .。
(老师提醒:不要放入Bin 文件夹中)■ Emb«t QE Pre 亠 Educat「販]£dii_VwwBuid frtbug D if** Qri+W 诊 Open-"Qrl*O2)建立源文件:点击菜单项 File T New ,如图三,系统弹出一个新的文本编辑窗,输入源文件代码。
编辑完后,保存文件“ wj.s ”后缀,如图三,四。
Hr*Open Workspace.・图一■■ rflJO IUU rl jil rd f rfl,rlClop: h Ho. .end图tut vUrl:3)添加源文件:选择菜单项Project T Add To Project Files,在工程目录下选择刚才建立的源文件.s 后缀文件,如图五,图六,图七。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《 APM串口实验》实验报告课程名称:嵌入式微处理器技术班级:电信 0901姓名:地点:嵌入式系统基础实训室指导教师:王瑾ARM的串行口实验一、实验目的◆ 1.掌握ARM 的串行口工作原理。
◆ 2.学习编程实现ARM 的UART 通讯。
◆ 3.掌握CPU 利用串口通讯的方法。
二、实验内容学习串行通讯原理,了解串行通讯控制器,阅读ARM 芯片文档,掌握ARM 的UART 相关寄存器的功能,熟悉ARM 系统硬件的UART 相关接口。
编程实现ARM 和计算机实现串行通讯:ARM 监视串行口,将接收到的字符再发送给串口(计算机与开发平台是通过超级终端通讯的),即按PC 键盘通过超级终端发送数据,开发平台将接收到的数据再返送给PC,在超级终端上显示。
三、预备知识1、1.用ARM SDT 2.5或ADS1.2 集成开发环境,编写和调试程序的基本过程。
2、2.ARM 应用程序的框架结构。
3、3.了解串行总线四、实验设备及工具硬件:ARM嵌入式开发平台、用于ARM7TDMI 的JTAG 仿真器、PC机Pentium100 以上、串口线。
软件:PC 机操作系统win98、Win2000 或WinXP 、ARM SDT 2.51 或ADS1.2 集成开发环境、仿真器驱动程序、超级终端通讯程序。
五、实验原理及说明1.异步串行I/O异步串行方式是将传输数据的每个字符一位接一位(例如先低位、后高位地传送。
数据的各不同位可以分时使用同一传输通道,因此串行I/O 可以减少信号连线,最少用一对线即可进行。
接收方对于同一根线上一连串的数字信号,首先要分割成位,再按位组成字符。
为了恢复发送的信息,双方必须协调工作。
在微型计算机中大量使用异步串行I/O 方式,双方使用各自的时钟信号,而且允许时钟频率有一定误差,因此实现较容易。
但是由于每个字符都要独立确定起始和结束(即每个字符都要重新同步,字符和字符间还可能有长度不定的空闲时间,因此效率较低。
图2-1 串行通信字符格式图2-1 给出异步串行通信中一个字符的传送格式。
开始前,线路处于空闲状态,送出连续“1”。
传送开始时首先发一个“0” 作为起始位,然后出现在通信线上的是字符的二进制编码数据。
每个字符的数据位长可以约定为5 位、6 位、7 位或8 位,一般采用ASCII编码。
后面是奇偶校验位,根据约定,用奇偶校验位将所传字符中为“1”的位数凑成奇数个或偶数个。
也可以约定不要奇偶校验,这样就取消奇偶校验位。
最后是表示停止位的“1”信号,这个停止位可以约定持续1 位、1.5位或2 位的时间宽度。
至此一个字符传送完毕,线路又进入空闲,持续为“1”。
经过一段随机的时间后,下一个字符开始传送才又发出起始位。
每一个数据位的宽度等于传送波特率的倒数。
微机异步串行通信中,常用的波特率为50,95,110,150,300,600,1200,2400,4800,9600,119200 等。
接收方按约定的格式接收数据,并进行检查,可以查出以下三种错误: 1)奇偶错:在约定奇偶检查的情况下,接收到的字符奇偶状态和约定不符。
2)帧格式错:一个字符从起始位到停止位的总位数不对。
3)溢出错:若先接收的字符尚未被微机读取,后面的字符又传送过来,则产生溢出错。
每一种错误都会给出相应的出错信息,提示用户处理。
2.串行接口的物理层标准通用的串行I/O 接口有许多种,现仅就最常见的两种标准作简单介绍。
1)EIA RS—232C 这是美国电子工业协会推荐的一种标准(Electronic industries AssociationRecoil-mended Standard。
它在一种25 针接插件(DB— 25上定义了串行通信的有关信号。
这个标准后来被世界各国所接受并使用到计算机的I/O 接口中。
⑴ 信号连线在实际异步串行通信中,并不要求用全部的RS—232C 信号,许多PC/XT 兼容机仅用15 针接插件(DB—15来引出其异步串行I/O 信号,而PC 中更是大量采用9 针接插件(DB—9来担当此任,因此这里也不打算就RS—232C 的全部信号作详细解释。
图2-2 给出两台微机利用RS—232C 接口通信的联线(无M ODEM,我们按DB—25 的引脚号标注各个信号。
下面对图2-2 中几个主要信号作简要说明。
保护地:通信线两端所接设备的金属外壳通过此线相联。
当通信电缆使用屏蔽线时,常利用其外皮金属屏蔽网来实现。
由于各设备往往已通过电源线接通保护地,因此,通信线中不必重复接此地线(图中用虚线表示。
例如使用9 针插头(DB—9的异步串行I/O 接口就没有引出保护地信号。
TXD/RXD:是一对数据线,TXD称发送数据输出,RXD称接收数据输入。
当两台微机以全双工方式直接通信(无MODEM 方式时,双方的这两根线应交叉联接(扭接。
信号地:所有的信号都要通过信号地线构成耦合回路。
通信线有以上三条(TXD、RXD 和信号地就能工作了。
其余信号主要用于双方设备通信过程中的联络(握手信号,而且有些信号仅用于和MODEM 的联络。
若采取微型机对微型机直接通信,且双方可直接对异步串行通信电路芯片编程,若设置成不要任何联络信号,则其它线都可不接。
有时在通信线的同一端将相关信号短接以“自握手”方式满足联络要求。
这就是如图2-2(a所示的情况。
图2-2 实用RS-232C 连线RTS/CTS:请求发送值号RTS 是发送器输出的准备好信号。
接收方准备好后送回清除发送信号CTS 后,发送数据开始进行,在同一端将这两个信号短接就意味着只要发送器准备好即可发送。
DCD:载波检测(又称接收线路信号检测。
本意是MODEM 检测到线路中的载波信号后,通知终端准备接收数据的信号,在没有接MODEM 的情况下,也可以和RTS、CTS短接。
相对于MODEM 而言,微型机和终端机一样被称为数据终端DTE(Data Terminal Equipment 而MODEM 被称为数据通信装置DCE(Data Communications Equipment,DTE 和DCE 之间的连接不能像图2-2 中有“ 扭接” 现象,而应该是按接插件芯号,同名端对应相接。
此处介绍的RS—232C 的信号名称及信号流向都是对DTE 而言的。
DTR/DSR:数据终端准备好时发DTR 信号,在收到数据通信装置装备好DSR 信号后,方可通信。
图2-2(a中将这一对信号以“自握手”方式短接。
R1:原意是在MODEM 接收到电话交换机有效的拨号时,使RI 有效,通知数据终端准备传送。
在无MODEM 时也可和DTR 相接。
图2 -2(b给出了无MODEM 情况下,DTE 对DTE 异步串行通信线路的完整连接,它不仅适用于微型机和微型机之间的通信,还适用于微型机和异步串行外部设备(如终端机、绘图仪、数字化仪等的连接。
⑵信号电平规定 RS—232C 规定了双极性的信号逻辑电平: -3V 到-25V 之间的电平表示逻辑“1”。
+3V 到+25V 之间的电平表示逻辑“0”。
因此这是一套负逻辑定义。
以上标准称为EIA 电平。
PC/XT 系列使用的信号电平是-12V和+12V,符合EIA 标准,但在计算机内部流动的信号都是TTL 电平,因此这中间需要用电平转换电路。
常用芯片MCl488 或SN75150 将TTL 电平转换为EIA 电平,MCl489 或SN75154 将EIA 电平转换为TTL 电平。
PC/XT 系列以这种方式进行串行通信时,在波特率不高于9600 的情况下,理论上通信线的长度限制纽为15 米。
2)20mA 电流环 20mA 电流环并没有形成一套完整的标准,主要是将数字信号的表示方法不使用电子的高低,而改用20mA 电流的有无:“1” 信号在环路中产生20mA 电流;“0” 信号无电流产生。
当然也需要有电路来实现TTL 电平和20mA 电流之间的转换。
图2-3 是PC/XT 微机中使用的一种20mA 电流环接口。
当发送方SOUT=1 时,便有20mA 电流灌入接收方的光耦合器,于是光耦合器导通,使S IN=1。
反之当发送方SOUT=0 时环路电流为零,接收方光耦合器截止,SIN =0。
显然,当要求双工方式通信时,双方都应各有收发电路,通信联线至少要4 根。
由于通信双方利用光耦合器实现电气上隔离,而且信号又是双端回路方式,故有很强的抗干扰性,可以传送远至1 千米的距离。
图2-3 20mA 电流环接口“0”、“1” 信号的表示方法不同外,其他方面(如字符的传输格式常借用RS—232C 标准。
因此PC/XT 微机中的异步串行信道接口往往将这两种标准做在一起,实际通过跨接线从二者中择一使用。
3.ARM 自带的串行口寄存器ARM 自带两个串行口,各带有16 字节的F IFO(先入先出寄存器),最大波特率115.2K。
每个UART 有7 种状态:溢出错误、校验错误、帧错误、暂停态、接收缓冲区准备好、发送缓冲区空、发送移位缓冲器空,这些状态可以由相应的UTRSTATn/UERSTATn 表示,并且与发送接收缓冲区相对应的有错误缓冲区。
波特率的可以通过控制波特率寄存器(UBRDIVn )控制,与UART 有关的寄存器主要有以下几个:(1) UART 线性控制寄存器ULCONn,其地址和各位的意义参见表2-1:表2-1 ULCONn 功能定义ULCONn 位描述初始化状态保留[7] 0红外模式[6] 红外模式位决定是否使用红外模式:0—正常模式;1—红外模式奇偶校验模式[5:3] 奇偶校验模式指定当UART执行发送和接收操作时如何进行奇偶校验的产生和检查: 0xx—无奇偶校验;100—奇校验; 110 = 奇偶校验强制为1;111 = 奇偶校验强制为 0000停止位个数[2] 每帧停止位的个数:0—1位;1—两位。
0数据位长度[1:0] 字长位决定每帧发送或接收的数据位数:00—5位;01—6位;10—7位;11—8位;00由上表可以看出,该寄存器的第 6 位决定是否使用红外摸式,位5~3 决定校验方式,位 2 决定停止位长度,位1 和0决定每帧的数据位数。
参考:普通模式,无奇偶校验,1位停止位,8为数据长度。
(2)UART 控制寄存器UCONn,该寄存器决定UART 的各种摸式。
UART FIFO控制寄存器UFCONn,UART MODEM 控制寄存器,分别决定UART FIFO 和MODEM 的模式。
其中UFCONn 的第0 位决定是否启用FIFO,UMCONn 的第0 位是请求发送位,对我们来说是比较重要的。
控制寄存器UCONn 的功能定义如表2-2 所示。
表2-2 UCONn 功能定义UCONn 位描述初始化状态发送中断类型[9] 中断请求类型 0 = Pulse (在发放缓冲区变空时立即引发中断 1 = Level(在发送缓冲区为空进引发中断接收中断类型[8] 中断请示类型 0= Pulse (接收缓冲区接收到数据时立即引发中断 1=Level(I接收缓冲区正在接收数据时引发中断接收超收中断使能[7] 在UART的FIFO使能的情况下,使能/禁止接收超时中断 0 =禁止 1 = 使能接收错误状态中断使能[6]在接收操作时有跳变、帧错误、奇偶校验错误和溢出错误时,使能UART产生中断 0 = 不产生接收错误状态中断1 = 产生接收错误状态中断t回送模式 [5] 设置回送位为1, 使得UART 进入回送模式。