ps2接口协议

实验十六:PS2鼠标控制

一.实验目的:

1.了解PS2鼠标键盘协议

2.学会分析简单的数字信号和使用单片机捕捉及解码信号

二,实验原理:

PS/2 鼠标键盘协议

引脚定义如下所示

PS/2 鼠标和键盘履行一种双向同步串行协议,换句话说,每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入,键盘/鼠标可以发送数据到主机而主机也可以发送数据到设备,但主机总是在总线上有优先权。它可以在任何时候抑制来自于键盘/鼠标的通讯,只要把时钟拉低即可。从键盘/鼠标发送到主机的数据在时钟信号的下降沿,当时钟从高变到低的时候被读取,从主机发送到键盘/鼠标的数据在上升沿,当时钟从低变到高的时候被读取。不管通讯的方向怎样,键盘/鼠标总是产生时钟信号。如果主机要发送数据它。必须首先告诉设备开始产生时钟信号。最大的时钟频率是33kHz 而且大多数设备工作在10 20kHz 如果你要制作一个PS/2 设备我推荐你把频率控制在15kHz 左右这就意味着时钟应该是高40 微秒低40 微秒

所有数据安排在字节中每个字节为一帧包含了11个位,这些位的含义如下 1 个起始位总是为0 8 个数据位低位在前 1 个校验位奇校验 1 个停止位总是为1

如果数据位中包含偶数个1,校验位就会置1 ;如果数据位中包含奇数个1,校验位就会置0, 数据位中1的个数加上校验位总为奇数,这就是奇校验,这是用来错误检测。

当主机发送数据给键盘/鼠标时,设备回送一个握手信号来应答数据包已经收到,这个位不会出现在设备发送数据到主机的过程中,设备到主机的通讯过程数据和时钟线都是集电极开路结构,正常保持高电平当键盘或鼠标等待发送数据时它首先检查时钟以确认它是否是高电平,如果不是,那么是主机抑制了通讯,设备必须缓冲任何要发送的数据直到重 新获得总线的控制权。键盘有16 字节的缓冲区而鼠标的缓冲区仅存储最后一个要发送的数据包,如果时钟线是高电平设备就可以开始传送数据。

键盘和鼠标使用一种每帧包含11 位的串行协议这些位含义是 1 个起始位总是为0 8 个数据位低位在前 1 个校验位奇校验 1 个停止位总是为1

每位在时钟的下降沿被主机读入,时钟频率为10--16.7kHz 。从时钟脉冲的上升沿到一个数据转变的时间至少要有5 微秒,数据变化到时钟脉冲的下降沿的时间至少要有5 微秒并且不大于25 微秒,这个定时非常重要你应该严格遵循它!主机可以在第11 个时钟脉冲停止位之前把线拉低,导致设备放弃发送当前字节。这是非常罕见的。在停止位发送后,设备在发送下个包前至少应该等待50 毫秒,这将给主机时间,当它处理接收到的字节时抑制发送,主机

华南理工大学无线电爱好者协会

F D R 工作室

在收到每个包时通常自动做这个,在主机释放抑制后设备至少应该在发送任何数据前等50 毫秒

我推荐下面的过程发送一个单一字节从仿真键盘/鼠标到主机 1) 等待Clock = high 2) 延时 50 微秒

3) Clock s 仍旧为 high? No—到第1 步 4) Data = high

No—放弃 (并且从主机读取字节)

5) 延迟 20 毫秒 (=40 微秒 to the time Clock is pulled low in sending the start bit 。) 6) 输出起始位 (0) \ 在发送所有这些位的每一位后

7) 输出 8 个数据位 > 测试时钟确认主机是否把它拉低了 8) 输出校验位 / 这说明主机要放弃这次传送 9) 输出停止位 (1) 10) 延迟30 毫秒

按如下的过程发送单个位 1) 设置/复位数据 2) 延迟20 微秒 3) 把时钟拉低 4) 延迟40 微秒 5) 释放时钟 6) 延迟20 微秒

主机到设备的通讯

被发送的包有点不同于主机到设备通讯过程,首先PS/2 设备总是产生时钟信号。如果主机要发送数据它必须首先把时钟和数据线设置为请求发送状态,如下:

通过下拉时钟线至少100 微秒来抑制通讯 通过下拉数据线来应用请求发送然后释放时钟

设备应该在不超过10 毫秒的间隔内就要检查这个状态,当设备检测到这个状态它将开始产生时钟信号并且时钟脉冲标记下输入八个数据位和一个停止位,主机仅当时钟线为低的时候改变数据线,而数据在时钟脉冲的上升沿被锁存,这在发生在设备到主机通讯的过程中正好相反,在停止位发送后设备要应答接收到的字节就把数据线拉低并产生最后一个时钟脉冲,如果主机在第11 个时钟脉冲后不释放数据线,设备将继续产生时钟脉冲直到数据线被释放,然后设备将产生一个错误,主机可以在第11个时钟脉冲应答位前中止一次传送,只要下拉时钟线至少100 微秒,要使得这个过程易于理解主机必须按下面的步骤发送数据到PS/2 设备 1) 把时钟线拉低至少100 微秒 2) 把数据线拉低 3) 释放数据线

4) 等待设备把时钟线拉低

5) 设置/复位数据线发送第一个数据位 6) 等待设备把时钟拉高 7) 等待设备把时钟拉低

8) 重复 5-7 步 发送剩下的7 个数据位和校验位 9) 释放数据线

华南理工大学无线电爱好者协会

F D R 工作室

10) 等待设备把数据线拉低 11) 等待设备把时钟线拉低

12)

等待设备释放数据线和时钟线

设备产生的信号注意应答位时序的改变,数据改变发生在时钟线为高的时候,不同于其它11位是当它为低的时候,在主机最初把数据线拉低后,设备开始产生时钟脉冲的时间必须步大于15ms ,数据包被发送的时间必须不大于2ms ,如果这两个条件不满足,主机将产生一个错误,在包收到后主机为了处理数据立刻把时钟线拉低来抑制通讯,如果主机发送的命令要求有一个回应,这个回应必须在主机释放时钟线后20ms 之内被收到,如果没有收到,则主机产生一个错误,在设备到主机通讯的情况中时钟改变后的5 微秒内不应该发生数据改变的情况,如果你要仿真一个鼠标或键盘我推荐你按如下的过程从主机读入数据,在你的主程序中至少每10 毫秒检测数据线是否为低,如果数据线已被主机拉低则从主机读取一个字节 1) 等待时钟线为高 2) 数据线仍然为低吗 不有错误发生放弃

3) 读入8 个数据位 \ 在读入这些位后

4) 读入校验位 > 测试时钟线数否被主机拉低 5) 读入停止位 / 这就意味着放弃这次传送 6) 数据线仍旧为0 吗

是保持时钟直到数据1 然后产生一个错误 7) 输出应答位 8) 检查校验位

如果校验位不正确则产生一个错误

9) 延迟45 微秒给主机时间抑制下次的传送

按如下次序读取每位8 个数据位检验位和停止位 1) 延迟 20 微秒 2) 把时钟拉低 3) 延迟 40 微秒 4) 释放时钟 5) 延迟20 微秒 7) 读数据线

按如下次序发送应答位

华南理工大学无线电爱好者协会

F D R 工作室

1) 延迟15 微秒 2) 把数据线拉低 3) 延迟5 微秒 4) 把时钟线拉低 5) 延迟40 微秒 6) 释放时钟线 7) 延迟5 微秒 8) 释放数据线

设备到主机的通信

标准的PS/2 鼠标发送位移和按键信息给主机采用如下的3 字节数据包格式

位移计数器是一个9 位2 的补码整数。它的最高位作为符号位出现在位移数据包的第一个字节里。这些计数器在鼠标读取输入发现有位移时被更新。这些值是自从最后一次发送位移数据包给主机后位移的累计量(即最后一次包发给主机后位移计数器被复位)。位移计数器可表示的值的范围是-255 到+255,如果超过了范围,相应的溢出位就被设置,并且在复位前,计数器不会增减。正如我前面提及的一旦位移数据包成功地发送给主机,位移计数器就会复位,同样鼠标在收到主机不是Resend 0xFE 命令外的其他命令,计数器也会复位。

接线图

(1)Ps2座与单片机的连接

(2)单片机与液晶的连接

华南理工大学无线电爱好者协会

F D R 工作室

(3)硬件连接图

三.单片机程序:

***********************主函数**************************

#include #include"mouse.h" #include"LCD1602_4.h"

sbit beep=P3^7;

华南理工大学无线电爱好者协会

F D R 工作室

void main() {

LCM1602_Init(); Init_device();

mouse_send_data(0xf4);//向鼠标发送0xF4命令发其开始工作 EX1=0;//关掉外部中断以避开鼠标发回的应答 delayms(100);

EX1=1;//重开外部中断 while(1) {

CLEARSCREEN;//清屏

LCM1602_write_string(0,0,"x:"); num(0,2,move_x);//x坐标值

LCM1602_write_string(0,8,"y:"); num(0,10,move_y);//y坐标值

if(mouse_data[0]&0x01)//如果点下左键 {

beep=0;

LCM1602_write_string(1,0,"left"); }

else if(mouse_data[0]&0x02)//如果点下右键 {

beep=0;

LCM1602_write_string(1,0,"right"); }

else if(mouse_data[0]&0x04)//如果点下中键 {

beep=0;

LCM1602_write_string(1,0,"middle"); } else {

beep=1;

LCM1602_write_string(1,0,"nothing"); }

delayms(50); } }

**********************鼠标驱动头文件*******************

#include"delay52.h" #ifndef MOUSE_H #define MOUSE_H

sbit mouse_SDA=P3^6;//数据线P3_5 sbit mouse_CLK=P3^3;//时钟线P3_3

sbit led1=P1^3;

华南理工大学无线电爱好者协会

F D R 工作室

unsigned char bdata mouse_byte; //接收字节

sbit mouse_byte_bit0=mouse_byte^0;//mouse_byte第0位 sbit mouse_byte_bit1=mouse_byte^1;//mouse_byte第1位 sbit mouse_byte_bit2=mouse_byte^2;//mouse_byte第2位 sbit mouse_byte_bit3=mouse_byte^3;//mouse_byte第3位 sbit mouse_byte_bit4=mouse_byte^4;//mouse_byte第4位 sbit mouse_byte_bit5=mouse_byte^5;//mouse_byte第5位 sbit mouse_byte_bit6=mouse_byte^6;//mouse_byte第6位 sbit mouse_byte_bit7=mouse_byte^7;//mouse_byte第7位

unsigned char bdata mouse_fuction;//功能信息字节

unsigned char mouse_buffer[11];//接收位数据缓冲区

unsigned char mouse_buffer_bit=0;//mouse_buffer[mouse_buffer_bit]

unsigned char mouse_data[3];//接收鼠标数据缓冲区,分别存放:功能信息字节,x位移量,y 位移量

unsigned char mouse_data_bit=0;//mouse_data[mouse_data_bit]

unsigned int move_x=10000;//存放横坐标 unsigned int move_y=10000;//存放纵坐标

void Init_mouse(void) {

TCON=0x00; EA=1;

EX1=1;//允许外部中断1

ET0=0x01;//允许全局中断,允许定时器/计数器0溢出中断 PX1=1;//设置中断优先级 }

/*********************************************************************** 发送数据

************************************************************************/ void mouse_send_data(unsigned char dat) {

unsigned char i;

EX1=0; /*关闭外部中断1*/

ACC=dat; /*将要发送的数据放入A寄存器*/ mouse_CLK=0; /*拉低时钟线*/

delay10us(200); /*延时100us以上*/ mouse_SDA=0; /*拉低数据线*/ delay10us(40);

mouse_CLK=1; /*释放时钟线*/

for(i=0;i<=7;i++) /*低位在前,一次发送8个数据位*/ {

while(mouse_CLK==1); /*等待设备拉低时钟线*/ mouse_SDA=(dat>>i)&0x01; /*发送数据位*/

while(mouse_CLK==0); /*等待设备释放时钟线*/ }

华南理工大学无线电爱好者协会

F D R 工作室

while(mouse_CLK==1);

mouse_SDA=~P; /*发送校验位,奇校验*/ while(mouse_CLK==0); while(mouse_CLK==1);

mouse_SDA=1; /*发送停止位*/ while(mouse_CLK==0); while(mouse_CLK==1); /*应答位*/ while(mouse_CLK==0);

EX1=1; /*打开外部中断1*/ }

/********************************************* 奇校检

**********************************************/ unsigned char Checkout(void) {

ACC=mouse_byte;

if(~P==mouse_buffer[9]) return 1; else

return 0; }

/********************************************************* 数据分析及处理

**********************************************************/ void data_analyse(void) {

//将收到的11位信号中截取8位数据放进mouse_byte mouse_byte_bit0=mouse_buffer[1]; mouse_byte_bit1=mouse_buffer[2]; mouse_byte_bit2=mouse_buffer[3]; mouse_byte_bit3=mouse_buffer[4]; mouse_byte_bit4=mouse_buffer[5]; mouse_byte_bit5=mouse_buffer[6]; mouse_byte_bit6=mouse_buffer[7]; mouse_byte_bit7=mouse_buffer[8]; if(Checkout())//如果校验正确 {

if(mouse_data_bit<3)

mouse_data[mouse_data_bit++]=mouse_byte; if(mouse_data_bit==3) {

mouse_data_bit=0;

if(mouse_data[0]&0x10)//如果"X sign bit"为1,表示鼠标向左移 {

move_x-=(256-mouse_data[1]);//x坐标减 } else {

move_x+=mouse_data[1];//x坐标加

华南理工大学无线电爱好者协会

F D R 工作室

}

if(mouse_data[0]&0x20) {

move_y-=(256-mouse_data[2]);//y坐标减 } else {

move_y+=mouse_data[2];//y坐标加 } } } }

/************************************************** 外部中断1

***************************************************/ void ReceiveData(void) interrupt 2 {

if(mouse_buffer_bit<=10)

{

while(mouse_CLK==0);//等待设备拉高时钟线

mouse_buffer[mouse_buffer_bit++]=mouse_SDA;//接收数据 }

if(mouse_buffer_bit==10) {

data_analyse();//数据分析及处理 mouse_buffer_bit=0;

} }

#endif

************************延时函数***********************

//晶振11.0592M #ifndef DELAY52_H #define DELAY52_H

#define uchar unsigned char #define uint unsigned int #include

//起始值delayus(1)=27us,间隔9.9us void delay10us(unsigned int t) {

while(t--); }

void delayms(unsigned int t) {

unsigned int i; unsigned char j; for(i=0;i

for(j=0;j<125;j++);

华南理工大学无线电爱好者协会

F D R 工作室

}

#endif

**********************液晶1602驱动*********************

#ifndef LCD1602_4_H #define LCD1602_4_H #include

#define LCM1602_DATA P0

sbit LCD1602_RS=P1^0; sbit LCD1602_RW=P1^1; sbit LCD1602_EN=P1^2;

//********************************************************************** void LCM1602_Init(void); //液晶初始化 void LCM1602_write_cmd(unsigned char command); //写命令 void LCM1602_write_data(unsigned char temp); //写数据

void LCM1602_set_xy(unsigned char x, unsigned char y); //设置坐标 void LCM1602_write_char(unsigned x,unsigned char y,unsigned char dat); //写一个字符到第x行y列

void LCM1602_write_string(unsigned char x,unsigned char y,unsigned char *s);//写字符串到第x行y列

void LCM1602_Read_BF(void); //读忙信号

void num(unsigned char x,unsigned char y,unsigned int n); //在第x行,第y列显示整型数字n

//void num16(unsigned char row,unsigned char col,unsigned int n);/在第row行,col 列处显示16进制数据n

//void num_float(unsigned char x,unsigned char y,float n); //在第x行,第y列显示数字n

//**********************************************************************

void LCM1602_Init(void) {

LCM1602_write_cmd(0x28); LCM1602_write_cmd(0x28);

LCM1602_write_cmd(0x28);//设置4位数据传输模式 LCM1602_write_cmd(0x0C); LCM1602_write_cmd(0x80); CLEARSCREEN; }

void LCM1602_Read_BF(void) {

LCD1602_RW=1; //RW 1 LCD1602_RS=0; //RS 0

LCD1602_EN=1; //EN 1 Read BF

LCM1602_DATA=LCM1602_DATA&0x0F|0xf0; while(LCM1602_DATA&0x80);

华南理工大学无线电爱好者协会

F D R 工作室

LCD1602_EN=0; }

void LCD_en_write(void) //EN端产生一个高电平脉冲,写LCD {

LCD1602_EN=1; _nop_();

LCD1602_EN=0; }

//*************************************

void LCM1602_write_cmd(unsigned char command) {

LCM1602_Read_BF();

LCD1602_RS=0; //RS 0 LCD1602_RW=0; //RW 0

LCM1602_DATA&=0x0F;

LCM1602_DATA=command&0xf0 | LCM1602_DATA&0x0f; LCD_en_write();

command=command<<4; LCM1602_DATA&=0x0F;

LCM1602_DATA=command&0xf0 | LCM1602_DATA&0x0f; LCD_en_write(); }

//*********************************

void LCM1602_write_data(unsigned char dat) {

LCM1602_Read_BF(); LCD1602_RS=1; //RS 1 LCD1602_RW=0; //RW 0 LCM1602_DATA &=0x0F;

LCM1602_DATA=dat&0xf0 | LCM1602_DATA&0x0f; LCD_en_write(); dat=dat<<4;

LCM1602_DATA &=0x0F;

LCM1602_DATA=dat&0xf0 | LCM1602_DATA&0x0f; LCD_en_write(); }

//********************************************** void LCM1602_set_xy(unsigned char x,unsigned char y) {

unsigned char address; y&=0x0f; if(!x)

address=0x80+y; else

address=0xc0+y;

LCM1602_write_cmd(address); }

//****************************************************************

华南理工大学无线电爱好者协会

F D R 工作室

void LCM1602_write_char(unsigned x,unsigned char y,unsigned char dat) {

LCM1602_set_xy(x,y); LCM1602_write_data(dat); }

//*********************************************************************

void LCM1602_write_string(unsigned char x,unsigned char y,const unsigned char *s) {

LCM1602_set_xy(x,y); while(*s) {

LCM1602_write_data(*s); s++; } }

void num(unsigned char x,unsigned char y,unsigned int n) {

unsigned char i,length,a[6]={0,0,0,0,0,0}; unsigned int nx=n;

if(n==0){LCM1602_write_char(x,y,'0');return;} for(i=0;i<6;i++) {

if(nx>=1)length++; nx/=10; } nx=n;

for(;length>0;length--) {

a[length-1]=nx%10+48; nx/=10; }

LCM1602_write_string(x,y,a); }

#endif

按硬件连接所示,把硬件连接好,将程序编译后写进单片机之后就可进行试验,通过移动鼠标和按鼠标上的按键就可以到LCD1602显示屏上看到对应的变化了.

四,效果图:

华南理工大学无线电爱好者协会

F D R 工作室

图一

图二

华南理工大学无线电爱好者协会

F D R 工作室

PS2键盘接口协议

PS2键盘接口协议 2009-06-03 16:11 一.电气特性 1DATA Key Data 2n/c Not connected 3GND Gnd 4VCC Power , +5 VDC 5CLK Clock 6n/c Not connected 二.数据格式 1个起始位总是逻辑0 8个数据位(LSB)低位在前 1个奇偶校验位奇校验 1个停止位总是逻辑1 1个应答位仅用在主机对设备的通讯中 表中,如果数据位中1的个数为偶数,校验位就为1;如果数据位中1的个数为奇数,校验位就为0;总之,数据位中1的个数加上校验位中1的个数总为奇数,因此总进行奇校验。 ps2设备的clock和data都是集电极开路的,平时都是高电平。当ps2设备等待发送数据时,它首先检查clock是否为高。如果为低,则认为PC抑制了通讯,此时它缓冲数据直到获得总线的控制权。如果clock为高电平,ps2则开始向PC发送数据。 一般都是由ps2设备产生时钟信号。发送按帧格式。数据位在clock为高电平时准备好,在clock 下降沿被PC读入。 数据从键盘/鼠标发送到主机或从主机发送到键盘/鼠标,时钟都是PS2设备产生.主机对时钟控制有优先权,即主机想发送控制指令给PS2设备时,可以拉低时钟线至少100μS,然后再下拉数据线,最后释放时钟线为高。PS2设备的时钟线和数据线都是集电极开路的,容易实现拉低电平。 PC在时钟的下降沿读取数据. PS: ps2协议是现在大多数鼠标,键盘与PC通讯的标准协议,鼠标的通讯更为简单些,只是传送的数据内容不一样而已。

三.数据发送时序 键盘接口时序(a) 键盘发送时序;(b) 键盘接收时序 从PS/2向PC机发送一个字节可按照下面的步骤进行: (1)检测时钟线电平,如果时钟线为低,则延时50μs; (2)检测判断时钟信号是否为高,为高,则向下执行,为低,则转到(1); (3)检测数据线是否为高,如果为高则继续执行,如果为低,则放弃发送(此时PC机在向PS/2设备发送数据,所以PS/2设备要转移到接收程序处接收数据); (4)延时20μs(如果此时正在发送起始位,则应延时40μs); (5)输出起始位(0)到数据线上。这里要注意的是:在送出每一位后都要检测时钟线,以确保PC机没有抑制PS/2设备,如果有则中止发送; (6)输出8个数据位到数据线上; (7)输出校验位; (8)输出停止位(1); (9)延时30μs(如果在发送停止位时释放时钟信号则应延时50μs); 通过以下步骤可发送单个位: (1)准备数据位(将需要发送的数据位放到数据线上); (2)延时20μs; (3)把时钟线拉低; (4)延时40μs; (5)释放时钟线; (6)延时20μs。

常见端口号对应的协议

协议号 ip 0 IP # Internet protocol互联网协议 icmp 1 ICMP # Internet control message protocol ggp 3 GGP # Gateway-gateway protocol tcp 6 TCP # Transmission control protocol egp 8 EGP # Exterior gateway protocol pup 12 PUP # PARC universal packet protocol udp 17 UDP # User datagram protocol hmp 20 HMP # Host monitoring protocol xns-idp 22 XNS-IDP # Xerox NS IDP rdp 27 RDP # "reliable datagram" protocol ipv6 41 IPv6 # Internet protocol IPv6 ipv6-route 43 IPv6-Route # Routing header for IPv6 ipv6-frag 44 IPv6-Frag # Fragment header for IPv6 esp 50 ESP # Encapsulating security payload ah 51 AH # Authentication header ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6 ipv6-nonxt 59 IPv6-NoNxt # No next header for IPv6 ipv6-opts 60 IPv6-Opts # Destination options for IPv6 rvd 66 RVD # MIT remote virtual disk 端口编号 echo 7/tcp echo 7/udp discard 9/tcp sink null discard 9/udp sink null systat 11/tcp users #Active users systat 11/udp users #Active users daytime 13/tcp daytime 13/udp qotd 17/tcp quote #Quote of the day qotd 17/udp quote #Quote of the day chargen 19/tcp ttytst source #Character generator chargen 19/udp ttytst source #Character generator 20/tcp #FTP, data ftp 21/tcp #FTP. control ssh 22/tcp #SSH Remote Login Protocol telnet 23/tcp smtp 25/tcp mail #Simple Mail Transfer Protocol

常用的硬件接口及通信协议详解

一:串口 串口是串行接口的简称,分为同步传输(USRT)和异步传输(UART)。在同步通信中,发送端和接收端使用同一个时钟。在异步通信中,接受时钟和发送时钟是不同步的,即发送端和接收端都有自己独立的时钟和相同的速度约定。 1:RS232接口定义 2:异步串口的通信协议 作为UART的一种,工作原理是将传输数据的每个字符一位接一位地传输。图一给出了其工作模式: 图一 其中各位的意义如下: 起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。

数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。 奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。 波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10×120=1200字符/秒=1200波特。 3:在嵌入式处理器中,通常都集成了串口,只需对相关寄存器进行设置,就可以使用啦。尽管不同的体系结构的处理器中,相关的寄存器可能不大一样,但是基于FIFO的uart框图还是差不多。

发送过程:把数据发送到fifo中,fifo把数据发送到移位寄存器,然后在时钟脉冲的作用下,往串口线上发送一位bit数据。 接受过程:接受移位寄存器接收到数据后,将数据放到fifo中,接受fifo事先设置好触发门限,当fifo中数据超过这个门限时,就触发一个中断,然后调用驱动中的中断服务函数,把数据写到flip_buf 中。 二:SPI SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

FlexRay通信协议中文版

一、FlexRay介绍 FlexRay通讯协议运用于可靠的车内网络中,是一种具备故障容错的高速汽车总线系统。它已经成为同类产品的基准,将在未来很多年内,引导汽车电子产品控制结构的发展方向。FlexRay协议标准中定义了同步和异步帧传输,同步传输中保证帧的延迟和抖动,异步传输中有优先次序,还有多时钟同步,错误检测与避免,编码解码,物理层的总线监控设备等。 1.1汽车网络通信协议综述 汽车网络通信协议在保证整个系统正常运行方面起着非常重要的作用。它可以帮助解决系统很多问题,如数据共享、可扩展性、诊断接口等。目前,应用于汽车领域的网络标准除了FlexRay还有很多,如CAN、LIN、J1850及MOST等。 CAN总线全称为“控制器局域网总线(Controller Area Network)”,是德国博世公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。CAN通信速率可达1Mbit/s,每帧的数据字节数为8个。 LIN(Local Interconnect Network,控制器局域网)总线是由LIN 协会发布的一种新型低成本串行通信总线,也称为经济型CAN网络。LIN的目标是为现有汽车网络(例如CAN 总线)提供辅助功能,因此LIN总线是一种辅助的总线网络,在不需要CAN 总线的带宽和多功能的场合比如智能传感器和制动装置之间的通信使用LIN总线可大大节省成本。 J1850总线是1994年由汽车工程师协会颁布的标准,之后普及运用于美国车厂的汽车中。不过,虽然美国各厂多采用J1850标准,但是各厂的实际做法又不相同,因此相对其他标准来说比较混乱。由于J1850总线通信速率低,只适合用于车身控制系统及诊断系统,目前在美国逐步被CAN 所取代。 MOST(Media Oriented System Transport,面向媒体的系统传输)总线是采用光纤并用于智能交通及多媒体的网络协议,能够支持24.8Mbps的数据速率,与以前的铜缆相比具有减轻重量和减小电磁干扰的优势。 1.2 FlexRay特点 作为一种灵活的车载网络系统,FlexRay具有高速、可靠及安全的特点,它不仅能简化车载通信系统的架构,而且还有助于汽车电子单元获得更高的稳定性和可靠性。在宝马新款SUV “X5”的电子控制减震器系统中,首次采用了控制系列车内LAN接口规格FlexRay,此次实际应用预示着FlexRay在高速车载通信网络中的大规模应用已经指日可待。

usb鼠标接口协议

编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载 usb鼠标接口协议 甲方:___________________ 乙方:___________________ 日期:___________________

usb鼠标接口协议 篇一:教你将ps2接口鼠标改造成usb接口鼠标 改造接线图 不是所有ps/2鼠标都可以改为usb鼠标的,可以改的 ps/2鼠标的特征: a. 早期ps/2鼠标电路板一般带有两块集成电路,(一块光电感应,一块按键或usb协议转换,和一只24m的晶体振荡器(简称:晶振) b. 后期的ps/2鼠标只有一块光电感应芯片,但也有一只24m晶体振荡 器(简称:晶振)^ c. 非专业人士勿尝试。损坏鼠标不负责的哦。 可以改的ps/2鼠标一般都带有晶体振荡器(简称:晶振),如果按图改了,但电脑检测出为未知usb设备,而非鼠标设备,说明该ps/2鼠标不能改为usb鼠标了. 篇二:usb鼠标电路板上的gVcd定义 usb是一种常用的pc接口,他只有4根线,两根电源两 根信号,如下图.故信号是串行传输的,usb接口也称为串行 口,usb2.0的速度可以达到480mbpso可以满足各种工业和

民用需要.usb接口的输出电压和电流是:+5V500ma实际上有误差,最大不能超过+/-0.2V 也就是4.8-5.2V。usb接口 的4根线一般是下面这样分配的,需要注意的是千万不要把 正负极弄反了,否则会烧掉usb设备或者电脑的南桥芯片。一般的排列方式是:红白绿黑从左到右黑线:地线gnd红线: 电源vcc 绿线:usb数据线data+白线:usb数据线data-typea : 一般用于pc typeb :一般用于usb设备 mini-usb : 一般用于数码相机、数码摄像机、测H仪器 以及移动硬盘等 现在主机均带有usb接口,因此usb光储应用极其方便,作为外置式光储设备的接口,应用相当灵活,而且不必再为 接口增加额外的设备,减少投入。各种接口都用同样的usb 标志 数码相机上的mini-usb接口 带mini-usb 接口的usb线 移动硬盘盒上的usbtypeb接口 左边接头为typea (连接pc),右为typeb (连接设备) usb 的typea 接口 在usb鼠标电路板上常可以看到gVcd的接口,其定义

常见端口号对应的协议

协议号 ip 0 IP # In ternet protocol 互联网协议icmp 1 ICMP # Internet con trol message ggp 3 GGP # Gateway-gateway protocol tcp 6 TCP # Tran smissi on con trol protocol egp 8 EGP # Exterior gateway protocol pup 12 PUP # PARC uni versal packet udp 17 UDP # User datagram protocol hmp 20 HMP # Host mon itori ng protocol xn s-idp 22 XNS-IDP # Xerox NS IDP rdp 27 RDP # "reliable datagram" protocol ipv6 41 IPv6 # In ternet protocol IPv6 ipv6-route IPv6-Route # Routi ng header for IPv6 ipv6-frag 44 IPv6-Frag # Fragme nt header for IPv6 esp 50 ESP # Encapsulating security payload ah 51 AH # Authe nticati on header ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6 ipv6-nonxt IPv6-NoNxt # No next header for IPv6 ipv6-opts 60 IPv6-Opts # Dest in ati on optio ns for IPv6 rvd 66 RVD # MIT remote virtual disk 端口编号

PS2通信协议说明与接口定义(键盘和鼠标)

PS2键盘与鼠标的接口定义 针脚定义: 原理 PS/2鼠标接口采用一种双向同步串行协议?即每在时钟线上发一个脉冲,就在数据线上发送一位数据?在相互传输中,主机拥有总线控制权,即它可以在任何时候抑制鼠标的发送?方法是把时钟线一直拉低,鼠标就不能产生时钟信号和发送数据?在两个方向的传输中,时钟信号都是由鼠标产生,即主机不产生通信时钟信号? 如果主机要发送数据,它必须控制鼠标产生时钟信号?方法如下:主机首先下拉时钟线至少100μs 抑制通信,然后再下拉数据线,最后释放时钟线?通过这一时序控制鼠标产生时钟信号?当鼠标检测到这个时序状态,会在10ms内产生时钟信号?如图3中A 时序段?主机和鼠标之间,传输数据帧的时序如图2?图3所示?2.2 数据包结构在主机程序中,利用每个数据位的时钟脉冲触发中断,在中断例程中实现数据位的判断和接收?在实验过程中,通过合适的编程,能够正确控制并接收鼠标数据?但该方案有一点不足,由于每个CLOCK都要产生一次中断,中断频繁,需要耗用大量的主机资源? PS/2鼠标的四种工作模式是:Reset模式,当鼠标上电或主机发复位命令0xFF给它时进入这种模式;Stream模式鼠标的默认模式,当鼠标上电或复位完成后,自动进入此模式,鼠标基本上以此模式工

作;Remote模式,只有在主机发送了模式设置命令0xF0后,鼠标才进入这种模式;Wrap模式,这种模式只用于测试鼠标与主机连接是否正确? PS/2鼠标在工作过程中,会及时把它的状态数据发送给主机?发送的数据包格式如表1所示? Byte1中的Bit0?Bit1?Bit2分别表示左?右?中键的状态,状态值0表示释放,1表示按下?Byte2和Byte3分别表示X轴和Y轴方向的移动计量值,是二进制补码值?Byte4的低四位表示滚轮的移动计量值,也是二进制补码值,高四位作为扩展符号位?这种数据包由带滚轮的三键三维鼠标产生?若是不带滚轮的三键鼠标,产生的数据包没有Byte4 其余的相同? 一.PS/2 鼠标键盘协议 PC 键盘可以有6 脚的mini-DIN 或5 脚的DIN 连接器如果你的键盘是6 脚的mini-DIN 而你的计算机是5 脚的DIN 或者相反这两类连接器可以用上面提到的适配器来兼容具有6 脚mini-DIN 的键盘通常被叫做PS/2 键盘而那些有5 脚DIN 叫做AT 设备XT 键盘也使用5 脚DIN 但它们非常古老并且多年前就不生产了所有现代的为PC 建造的键盘不是PS/2,AT 就是USB 的这篇文章不适用于USB 设备它们使用了一种完全不同的接口。 每种连接器的引脚定义如下所示 在刚才提到连接器上有四个有趣的管脚电源地5V 数据和时钟host 计算机提供5V 并且键盘/鼠标的地连接到host 的电源地上数据和时钟都是集电极开路的这就意味着它们通常保持高电平而且很容易下拉到地逻辑0 任何你连接到PS/2 鼠标键盘或host 的设备在时钟和数据线上要PS/2 技术参考著Adam Chapweske 译Roy Show第4 页共4 页02-11-22发布有一个大的上拉电阻置0 就把线拉低置1 就让线上浮成高电平参考图1 中数据和时钟线的一般接口结构注意如果你打算使用象PIC 这样的微控制器由于它们的I/O 管脚是双向的你可以跳过晶体管和缓冲门并且通用同一个管脚进行输入和输出在这种组态情况下要设置管脚为输入就写入1 使得电阻上拉线上的电平要改变管脚为输出就写入0 到那个管脚把线路下拉到地。) PS/2 鼠标和键盘履行一种双向同步串行协议。换句话说每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入。键盘/鼠标可以发送数据到主机,而主机也可以发送数据到设备,但主机总是在总线上有优先权,它可以在任何时候抑制来自于键盘/鼠标的通讯,只要把时钟拉低即可。 从键盘/鼠标发送到主机的数据在时钟信号的下降沿当时钟从高变到低的时候被读取从主机发送到键盘/鼠标的数据在上升沿(当时钟从低变到高的时候)被读取;不管通讯的方向怎样键盘/鼠标总是产生时钟信号如果主机要发送数据它必须首先告诉设备开始产生时钟信号这个过程在下一章节中被描述)。最大的时钟频率是33kHz ,而且大多数设备工作在10 20kHz 。如果你要制作一个PS/2 设备。我推荐你把频率控制在15kHz 左右。这就意味着时钟应该是高40 微秒低40 微秒。 所有数据安排在字节中,每个字节为一帧,包含了11-12 个位。这些位的含义如下: 如果数据位中包含偶数个1,校验位就会置1;如果数据位中包含奇数个1,校验位就会置0 。数据位中1 的个数加上校验位总为奇数(这就是奇校验)这是用来错误检测。 当主机发送数据给键盘/鼠标时,设备回送一个握手信号来应答数据包已经收到。这个位不会出现

(完整word版)常用几种通讯协议范文

常用几种通讯协议 Modbus Modbus 技术已成为一种工业标准。它是由Modicon 公司制定并开发的。其通讯主要采用 RS232,RS485 等其他通讯媒介。它为用户提供了一种开放、灵活和标准的通讯技术,降低了开发和维护成本。 Modbus 通讯协议由主设备先建立消息格式,格式包括设备地址、功能代码、数据地址和出错校验。从设备必需用Modbus 协议建立答复消息,其格式包含确认的功能代码,返回数据和出错校验。如果接收到的数据出错,或者从设备不能执行所要求的命令,从设备将返回出错信息。 Modbus 通讯协议拥有自己的消息结构。不管采用何种网络进行通讯,该消息结构均可以被系统采用和识别。利用此通信协议,既可以询问网络上的其他设备,也能答复其他设备的询问,又可以检测并报告出错信息。 在Modbus 网络上通讯期间,通讯协议能识别出设备地址,消息,命令,以及包含在消息中的数据和其他信息,如果协议要求从设备予以答复,那么从设备将组建一个消息,并利用Modbus 发送出去。 BACnet BACnet 是楼宇自动控制系统的数据通讯协议,它由一系列与软件及硬件相关的通讯协 议组成,规定了计算机控制器之间所有对话方式。协议包括:(1) 所选通讯介质使用的电子信 号特性,如何识别计算机网址,判断计算机何时使用网络及如何使用。(2) 误码检验,数据压缩 和编码以及各计算机专门的信息格式。显然,由于有多种方法可以解决上述问题,但两种不 同的通讯模式选择同一种协议的可能性极少,因此,就需要一种标准。即由ISO(国际标准化 协会〉于80 年代着手解决,制定了《开放式系统互联(OSI 〉基本参考模式(Open System Interconnection/Basic Reference Model 简称OSI/RM)IS0- 7498 》。 OSI/RM 是ISO/OSI 标准中最重要的一个,它为其它0SI 标准的相容性提供了共同的参考,为研究、设计、实现和改造信息处理系统提供了功能上和概念上的框架。它是一个具 有总体性的指导性标准,也是理解其它0SI 标准的基础和前提。 0SI/RM 按分层原则分为七层,即物理层、数据链路层、网络层、运输层、会话层、表示层、应用层。 BACnet 既然是一种开放性的计算机网络, 就必须参考OSIAM 。但BACnet 没有从网络的最低层重新定义自己的层次,而是选用已成熟的局域网技术, 简化0SI/RM, 形成包容许多局域网的简单而实用的四级体系结构。 四级结构包括物理层、数据链路层、网络层和应用层。 BACnet 协议由以下几部分组成:楼宇自控设备功能和信息数据的表示方式,五种规范局域网通讯协议以及它们之间相互通讯采用的协议。

三种通讯协议的区别

之前看到一个招聘信息,需要应聘者要熟悉这三种通讯协议。 故总结了一下。 UART,I2C,SPI 这三种通讯协议非常常用。很多人都用得很熟练的,可是对它们的概念,区别,特点都熟练掌握的人不多。我整理了一下网上牛人的说法,还有书本上的资料。 大概总结如下: SPI(Serial Peripheral Interface:串行外设接口) I2C(INTER IC BUS) UART(Universal Asynchronous Receiver Transmitter:通用异步收发器) 基本区别: UART:通用异步串行口。按照标准波特率完成双向通讯,速度慢。速度最慢。可以实现全双工。 I2C:一种串行传输方式,2线接口,网上可找到其通信协议和用法的。速度居中。不可以实现全双工。 SPI:高速同步串行口。3线接口,收发独立、可同步进行。速度最快。可以实现全双工。 详细区别: UART: UART是用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。作为接口的一部分,UART还提供以下功能: 将由计算机内部传送过来的并行数据转换为输出的串行数据流。将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号(键盘和鼠票也是串行设备)。可以处理计算机与外部串行设备的同步管理问题。有一些比较高档的UART还提供输入输出数据的缓冲区,现在比较新的UART是16550,它可以在计算机需要处理数据前在其缓冲区内存储16字节数据,而通常的UART是8250。现在如果您购买一个内置的调制解调器,此调制解调器内部通常就会有16550 UART。 UART总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。

ps2接口协议

实验十六:PS2鼠标控制 一.实验目的: 1.了解PS2鼠标键盘协议 2.学会分析简单的数字信号和使用单片机捕捉及解码信号 二,实验原理: PS/2 鼠标键盘协议 引脚定义如下所示 PS/2 鼠标和键盘履行一种双向同步串行协议,换句话说,每次数据线上发送一位数据并且每在时钟线上发一个脉冲就被读入,键盘/鼠标可以发送数据到主机而主机也可以发送数据到设备,但主机总是在总线上有优先权。它可以在任何时候抑制来自于键盘/鼠标的通讯,只要把时钟拉低即可。从键盘/鼠标发送到主机的数据在时钟信号的下降沿,当时钟从高变到低的时候被读取,从主机发送到键盘/鼠标的数据在上升沿,当时钟从低变到高的时候被读取。不管通讯的方向怎样,键盘/鼠标总是产生时钟信号。如果主机要发送数据它。必须首先告诉设备开始产生时钟信号。最大的时钟频率是33kHz 而且大多数设备工作在10 20kHz 如果你要制作一个PS/2 设备我推荐你把频率控制在15kHz 左右这就意味着时钟应该是高40 微秒低40 微秒 所有数据安排在字节中每个字节为一帧包含了11个位,这些位的含义如下 1 个起始位总是为0 8 个数据位低位在前 1 个校验位奇校验 1 个停止位总是为1 如果数据位中包含偶数个1,校验位就会置1 ;如果数据位中包含奇数个1,校验位就会置0, 数据位中1的个数加上校验位总为奇数,这就是奇校验,这是用来错误检测。 当主机发送数据给键盘/鼠标时,设备回送一个握手信号来应答数据包已经收到,这个位不会出现在设备发送数据到主机的过程中,设备到主机的通讯过程数据和时钟线都是集电极开路结构,正常保持高电平当键盘或鼠标等待发送数据时它首先检查时钟以确认它是否是高电平,如果不是,那么是主机抑制了通讯,设备必须缓冲任何要发送的数据直到重 新获得总线的控制权。键盘有16 字节的缓冲区而鼠标的缓冲区仅存储最后一个要发送的数据包,如果时钟线是高电平设备就可以开始传送数据。 键盘和鼠标使用一种每帧包含11 位的串行协议这些位含义是 1 个起始位总是为0 8 个数据位低位在前 1 个校验位奇校验 1 个停止位总是为1 每位在时钟的下降沿被主机读入,时钟频率为10--16.7kHz 。从时钟脉冲的上升沿到一个数据转变的时间至少要有5 微秒,数据变化到时钟脉冲的下降沿的时间至少要有5 微秒并且不大于25 微秒,这个定时非常重要你应该严格遵循它!主机可以在第11 个时钟脉冲停止位之前把线拉低,导致设备放弃发送当前字节。这是非常罕见的。在停止位发送后,设备在发送下个包前至少应该等待50 毫秒,这将给主机时间,当它处理接收到的字节时抑制发送,主机 华南理工大学无线电爱好者协会 F D R 工作室

常见通信协议的接口调试方法

常见通信协议的接口调 试方法 集团企业公司编码:(LL3698-KKI1269-TM2483-LUI12689-ITT289-

常见通信协议的接口调试方法 版本号:1.0.1 发布时间:2012-2-4 1.Modbus Modbus是一种工业领域通信协议标准,并且现在是工业电子设备之间相当常用的连接方式。 Modbus协议是一个Master/Slave架构的协议。有一个节点是Master节点,其他使用Modbus协议参与通信的节点是Slave节点。Master节点类似Client/Server架构中的Client,Slave则类似Server。工业上Modbus协议的常见架构如下图所示。 1.1.应用场合 Modbus协议主要用于测风塔数据实时读取、风机数据实时读取。将来有可能用于集控系统中,读取各类数据和进行远程控制。 在清三营、长风风电场,莱维赛尔的测风塔使用ModbusRTU协议与功率预测系统通信。 在向阳风电场,明阳的SCADA服务器通过ModbusTCP协议向功率预测系统提供各风机的实时运行数据。 在乌力吉、浩日格吐、马力、前后查台等风电场,赛风的测风塔使用ModbusRTUoverTCP协议与功率预测系统通信。

1.2.Modbus数据模型 在Slave和Master进行通信时,Slave会将其提供的变量映射到四张不同的表上,Master从表中相应位置读/写变量,就完成了数据获取或命令下达。这四张不同的表,称作Modbus数据模型(ModbusDataModel)。 为了理解方便,这里将四张表分别称作1位只读表、1位可读可写表、16位只读表、16位可读可写表。(类似电力通信国标中的遥信、遥控、遥测、遥调。)1位表用来映射单比特数据类型的变量,通常是布尔型变量;16位表用来映射双字节数据类型的变量,如int16、float16等,如果希望映射int32、float32等四字节变量,可以通过一次使用16位表中的两个位置来实现。只读表用来映射Master只能读取的变量;可读可写表用来映射Master既可读取、又可改写的变量。 1位只读表 1位可读可写表 16位只读表

主流PLC通讯协议简介

各PLC通讯协议简介 自从第一台PLC在GM公司汽车生产线上首次应用成功以来,PLC凭借其方便性、可靠性以及低廉的价格得到 了广泛的应用。但 PLC毕竟是一个黑盒子,不能实时直观地观察控制过程,与DCS相比存在比较大的差距。计 算机技术的发展和普及,为PLC又提供了新的技术手段,通过计算机可以实施监测PLC的控制过程和结果,让 PLC如虎添翼。但是各 PLC通讯介质和通讯协议各不相同,下面将简单介绍主要PLC的通讯介质和协议内容。 美系厂家 RockwellAB Rockwell 的 PLC 主要是包括 PLC2、PLC3、PLC5、SLC500、ControlLogix 等型号,PLC2 和 PLC3 是早期型号, 现在用的比较多的小型PLC是SLC500,中型的一般是 ControlLogix,大型的用 PLC5系列。 DF1协议是Rockwell各PLC都支持的通讯协议,DF1协议可以通过232或422等串口介质进行数据传输,也可以通过DH、DH+、DH485、ControlNet等网络介质来传输。DF1协议的具体内容可以在 AB的资料库中下载。 AB的plc也提供了OPC和DDE,其集成的软件中RSLogix中就包含DDE和OPC SERVER,可以通过上述软件来进行数据通讯。 AB的中高档的PLC还提供了高级语言编程功能,用户还可以通过编程实现自己的通讯协议。 GE

S7400作为西门子的大型 PLC,提供了相当完备的通讯功能。可以通过S7标准的MPI进行通讯,同时可以通 过C-总线,PROFIBUS和工业以太网进行通讯。如果要使用点对点通讯,S7-400需要通过 CP441通讯模块。 西门子的通讯协议没有公开,包括紫金桥组态软件在内许多组态软件都支持MPI、PPI等通讯方式,PROFIBUS 和工业以太网一般通过西门子的软件进行数据通讯。 施耐德(莫迪康) 龙PLC通讯。在和欧姆龙通讯时要注意,两次通讯之间要留一定时间,如果通讯速度过快容易造成PLC通讯异常。 ControlLink是欧姆龙PLC的一种快速通讯方式。Control Link通过板卡进行数据通讯,板卡之间有数据交换区, 由板卡实现数据的交换从而完成数据采集功能。使用该方式通讯需配置欧姆龙的驱动。 三菱 三菱PLC的小型PLC在国内的应用非常广泛。三菱的 PLC型号也比较多,主要包括 FX系列,A系列和Q系列。三菱系列PLC 通讯协议是比较多的,各系列都有自己的通讯协议。如FX系列中就包括通过编程口或 232BD 通讯,也可以通过 485BD等方式

主要接口间协议

移动台和基站之间的无线连接是Um口实现的,是开放接口 基站收发信台BTS和基站控制器BSC之间有线连接是Abis口实现的,是内部接口 基站控制器BSC和移动业务交换中心MSC之间的有线连接是A口实现的,是开放接口 各设备之间或子系统之间必须要通过各种接口按照规定的协议实现互连。 两个实体之间必须遵守某种协议,双方才能通信。就好比两个人之间沟通要用双方都能懂的语言。 接口代表两个相邻实体之间的连接点,而协议就是连接点上交换信息需要遵守的规则。 在GSM的信令协议的结构分为三个一般的层。 Layer 1: 物理层, 这是无线接口的最低层、提供传送比特流所需的物理链路(例如无线链路)、为高层提供各种不同功能的逻辑信道. 定义了发送/接收信息的所有方法。 Layer 2: 数据链路层。 主要目的是在移动台和基站之间建立可靠的专用数据链路。 通过协议和ARQ (Automatic Repeat reQuest)机制,保证两个终端间数据传输的可靠性。 Layer 3:网络层 这是实际负责控制和管理的协议层,在移动台要进行通信时,建立、维持和释放交换电路。 那么主要接口之间每层具体使用什么协议呢? 先来看第一层,物理层 在空中接口Um上,使用无线的信道结构。 还完成纠错编码、逻辑信道复用和进行一些无线指标的测量。 在Abis接口上是数字传输,一般是64kbit/s,

采用了ITU的G.703、G.705、G.732电信标准。 再来看第二层,数据链路层 Abis口使用的是基于ISDN的D信道链路接入协议LAPD协议。 Um口使用的是基于ISDN的DM信道链路接入协议上的LAP-Dm协议。是LAPD的修改版本。 GSM信令协议的第三层,网络层被划分成三个子层: 无线资源管理RR:主要存在于MS和BSC中。 它管理的是无线资源,包括不同逻辑信道的建立、维持和释放。在移动台中,主要是用来选择小区、在物理层测量的结果基础上监听信标信道。 移动性管理MM: 负责移动台的位置信息、鉴权和TMSI的分配。 接续管理CM包括三个实体: 呼叫控制CC (Call Control)管理和最终目标的电路链接,提供多个并行呼叫处理。短消息业务管理SMS (Short Message Service) 短消息的收发。补充业务管理SS (Supplementary Services)管理附加业务。 无线资源管理RR在基站收发信台BTS Um接口部分完成一部分管理功能 在基站控制器BSC完成另一部分管理功能。RR在基站子系统中就终止了, 在A接口中映射称为基站子系统移动应用部分BSSMAP消息 移动性管理(MM)和接续管理(CM)消息在基站子系统(BSS)中是透明传递的。 在A接口中采用DTAP传递 在移动业务交换中心MSC中还原MM和CM消息,并且到MSC终止 Abis接口中还有一个BTS的管理部分BTSM,用来交互BSC对BTS的管理消息 A接口中层一,层二和层三中的底层部分协议由信息传递部分MTP完成 还有一部分网络功能由信令连接控制部分SCCP完成

通讯协议V

CC2125A的通讯学习软件操作说明书目录 1. 软盘清单 2. 通讯口的技术数据 3. 调节器通迅接线 4. 调节器通迅参数的设置 5. 标准协议和SRFP协议 6. 标准协议 7. SRFP协议 8.学习软盘SR253.BAS V2.0 的使用方法 9. #3 盘上的BASICA程序说明 10. 在PC计算机上,采用BASICA语言,实现对SR253数据采集的编程例 11. 附录: A.通讯串口接线方法 B.RS232通讯口的技术数据 C.RS422/RS485通讯口的技术数据 1. 软件清单 在软盘内,提供了下述的应用资料及其它调用文件. 中文版通讯协议V 2.10 操作说明 (words 文件) BASICA.EXE - COMOPAQ.BASIC SR253.BAS - 标准通讯协议测试软件 SRFP.BAS - BASIC参考的通讯学习软件 STAR253.BAS - BASIC参考的SR25的"DS"命令数据采集软件 232T.BAS - BASIC的PC机232口及先锋RS422口测试软件 ★用户可用Windows 环境下的WORDS的"PRINT"打印命令检查或打印SR253.doc 文件内容。 2.通讯口的技术数据 1.信号电平: EIA标准 RS-232C, RS-422A,RS-485 ⒉通讯方式: RS-232C 3线半双工,单台 RS-422A 4线半双工,多台 RS-485 2线半双工,多台 ⒊同步系统: 起始位-停止位 ⒋通讯距离: RS-232C 15 米 RS-422A 1200 米 *具体视通讯条件而定 RS-485 5200 米 *具体视通讯条件而定 ⒌通讯速度: 1200,2400,4800,9600,19200 波特率 ⒍数据格式: 1. 数据7位, 一个偶校验位,一个停止位 2. 数据8位, 无校验位,一个停止位 格式数据位校验位停止位 7E1 7 偶校验 1 7E2 8 偶校验 2

PS2协议和鼠标键盘原理

第一章 PS/2鼠标键盘协议 Introduction: 引言 The PS/2 device interface, used by many modern mice and keyboards, was developed by IBM and originally appeared in the IBM Technical Reference Manual. However, this document has not been printed for many years and as far as I know, there is currently no official publication of this information. I have not had access to the IBM Technical Reference Manual, so all information on this page comes from my own experiences as well as help from the references listed at the bottom of this page. PS/2设备接口用于许多现代的鼠标和键盘它是由IBM开发并且最初出现在IBM技术参考手册里但是当我知道的时候这篇文件就已经很多年没有印刷了因此关于这个内容现在没有官方的出版物我无法访问IBM的技术参考手册所以本网页中的所有信息都来自于我自己的经验及本页最下面列出的参考的帮助 译者注这些参考的条目在本章的结尾处 This document descibes the interface used by the PS/2 mouse, PS/2 keyboard, and AT keyboard. I'll cover the physical and electrical interface, as well as the protocol. If you need higher-level information, such as commands, data packet formats, or other information specific to the keyboard or mouse, I have written separate documents for the two devices: 这个文件描述了用于PS/2鼠标PS/2键盘及AT键盘的接口我将论及物理和电气接口也包括协议 如果你需要更高级的信息诸如命令数据包的格式或者其他关于键盘鼠标的特别细节那么我对这两种设备写了独立的文件 The PS/2 (AT) Keyboard Interface The PS/2 Mouse Interface 译者注这两篇文章已经包含到这篇译文中来了是第二章和第三章 I also encourage you to check out my homepage for more information related to this topic, including projects, code, and links related to the mouse and keyboard. 我同样鼓励你在我的主页上校对更多与这个话题相关的信息包括工程代码和与鼠标键盘有关的链接 The Connector: 连接器 The physical PS/2 port is one of two styles of connectors: The 5-pin DIN or the 6-pin mini-DIN. Both connectors are completely (electrically) similar; the only practical difference between the two is the arrangement of pins. This means the two types of connectors can easily be changed with simple hard-wired adaptors. These cost about $6 each or you can make your own by matching the pins on any two connectors. The DIN standard was created by the German Standardization Organization (Deutsches Institut fuer Norm) . Their website is at http://www.din.de/ (this site is in German, but most of their pages are also available in English.) 物理上的PS/2端口是两类连接器中的一种5脚的DIN或6脚的mini-DIN这两种连接器在电气特性上是十分类似的实际上两者只有一点不同那就是管脚的排列这就意味着这两类连接器可以很容易用一种简单的硬件连线的适配器来转换这种适配器大约每个值6美元或者你可以根据任意两种连接器的对应管脚关系做你自己的适配器DIN标准是由德国标准化组织(Deutsches Institut fuer Norm)建立的他们的网站在http://www.din.de/这个站点是德文的但他们的很多网页同样可用于英文

UPS中文通讯协议

通信协议版本号: 3.0 校对: Tony Lin 准备: 日期: Nov. 12, 1999 文件:RICHPROT.DOC 日期:V3.0 : August 30 ,2000

通信协议内容 A. 概述:本文档是专门阐述关于高智能型UPS的RS232C接口通信的。 协议中提供了以下内容: 1、监视充电器状态; 2、监视电池状态和环境; 3、监视市电状态; 4. 为计算机电源管理提供了定时开关电力供应的功能。 计算机能够通过一个以回车符结束的查询指令掌握信息的交流。 UPS则会返回以回车符结束的相应信息或者执行有关动作。 B. 硬件规范 波特率............... :2400 bps 数据长度.......... :8 bits 停止位.....................:1 bit 奇偶校验.................:无 通信电缆引脚: 计算机UPS =================================== RX (pin 3) <---------- TX (pin 3) TX (pin 2) ----------> RX (pin 2) GND (pin 5) <---------- GND (pin 5) (9 针母头连接座)

C、通信协议 1、状态查询: 计算机指令:Q1 UPS返回值: UPS 状态数据流,例如 (MMM.M NNN.N PPP.P QQQ RR.R S.SS TT.T b7b6b5b4b3b2b1b0 UPS 状态数据流: 为了区分各种不同参量的数据,在每段数值之间都有一个空格符。以下是每段数值的具 体含义: a. 启始字节:( b. 输入电压值:MMM.M M是0~9的整数。 单位是伏特。 c. I/P fault voltage : NNN.N N is and integer number ranging from 0 to 9. The unit is Volt. ** For OFF LINE UPS** Its purpose is to identify a short duration voltage glitch which cause OFF line UPS to go to Invter mode. If this occurs input voltage will appear normal at query prior to glitch and will still appear normal at next query. The I/P fault voltage will hold glitch voltage till next query. After query, the I/P fault voltage will be same as I/P voltage until next glitch occurs. ** For ON LINE UPS** Its purpose is to identify a short duration utility fail which cause ON line UPS to go to battery mode. If this occurs input voltage will appear normal at query prior to fail and will still appear normal at next query. The I/P fault voltage will hold utility fail voltage till next query. After query, the I/P voltage will be same as I/P voltage until next utility fail occurs. d. 输出电压值:PPP.P P是0~9的整数。 单位是伏特。 e. 输出电流值:QQQ QQQ是相对于最大电流值的一个百分比,而不是一个绝对的数值。 f. 输入频率:RR.R

相关文档
最新文档