嵌入式系统第十一讲嵌入式串口通信与GPRS模块实验.ppt
《嵌入式系统第十一讲嵌入式串口通信与GPRS模块实验.ppt》由会员分享,可在线阅读,更多相关《嵌入式系统第十一讲嵌入式串口通信与GPRS模块实验.ppt(53页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第十一讲第十一讲嵌入式串口通信与嵌入式串口通信与GPRS模块实验模块实验电信学院电信学院 崔寅鸣崔寅鸣本讲主要内容本讲主要内容n n串口通信原理串口通信原理n nGPRS模块模块n nAT指令指令参考参考“实验十二实验十二串口通信实验串口通信实验”串口通信串口通信串行通信方式串行通信方式n n每次传送一个每次传送一个bit的通信方式,字符被分成的通信方式,字符被分成一串一串bits来传输。来传输。n n串行数据的速度通常用每秒传输的字节数bits-per-second(bps)或者波特率(baud)表示。串口设备串口设备n n计算机发展历史中,串口广泛用于连接外计算机发展历史中,串口广泛用于连
2、接外设;虽然速度慢,却现在仍然广泛使用设;虽然速度慢,却现在仍然广泛使用n n某些计算机使用称为UART(Universal Asynchronous Receiver/Transmitter,通用异步接收/发送装置)的集成电路来作为串口设备。它完成计算机内并行数据和设备端口串行数据的转换(输入输出FIFO);并且可以自动地处理数据的时序。而某些低端设备则会让CPU直接来传送数据。RS-232n nRS-232是EIA(Electronic Industries Association)定义的串行通信的电器接口.n n分为DB-9和DB-25两种接口。DB-9定义RS-232n nDB-25定
3、义定义串行异步通信格式串行异步通信格式n n异步模式:异步模式:空闲时串口一直是空闲时串口一直是空闲时串口一直是空闲时串口一直是1 1;当有数据时,总是以一;当有数据时,总是以一;当有数据时,总是以一;当有数据时,总是以一个个个个startstart位开始,位开始,位开始,位开始,startstart位是位是位是位是0 0;串口随时可进;串口随时可进;串口随时可进;串口随时可进行传输,不需时钟也不用定义同步帧头帧尾,行传输,不需时钟也不用定义同步帧头帧尾,行传输,不需时钟也不用定义同步帧头帧尾,行传输,不需时钟也不用定义同步帧头帧尾,故称异步通信故称异步通信故称异步通信故称异步通信在在在在st
4、artstart(0 0)之后,字符编码可以是)之后,字符编码可以是)之后,字符编码可以是)之后,字符编码可以是7bits7bits或或或或者者者者8bits8bits之后可能有之后可能有之后可能有之后可能有parityparity奇偶校验位和奇偶校验位和奇偶校验位和奇偶校验位和stopstop停止位停止位停止位停止位(1 1,1.51.5或者或者或者或者2bits2bits)所以通常用所以通常用所以通常用所以通常用8-N-18-N-1、7-E-17-E-1等方式来描述等方式来描述等方式来描述等方式来描述流控流控n n两个串口设备之间,可能因为链路差异等两个串口设备之间,可能因为链路差异等原因
5、,需要进行数据流的协调,一般两种原因,需要进行数据流的协调,一般两种方法:方法:软件流控:以软件流控:以软件流控:以软件流控:以XONXON(八进制(八进制(八进制(八进制021021)标示开始,)标示开始,)标示开始,)标示开始,以以以以XOFFXOFF(八进制(八进制(八进制(八进制023023)标示结束)标示结束)标示结束)标示结束硬件流控:硬件流控:硬件流控:硬件流控:RTSRTS(发送方准备好发出(发送方准备好发出(发送方准备好发出(发送方准备好发出ReadyReadytoSend)toSend)和和和和CTSCTS(接收方准备好发出(接收方准备好发出(接收方准备好发出(接收方准备好
6、发出CleartoCleartoSentSent)握手信号)握手信号)握手信号)握手信号Linux下访问串口下访问串口n n设备文件设备文件LinuxLinux下设备是以设备文件方式来访问的,串下设备是以设备文件方式来访问的,串下设备是以设备文件方式来访问的,串下设备是以设备文件方式来访问的,串口也是如此。口也是如此。口也是如此。口也是如此。在在在在linuxlinux系统下面,每一个串口系统下面,每一个串口系统下面,每一个串口系统下面,每一个串口设备都有设备文件与其关联,设备文件位于设备都有设备文件与其关联,设备文件位于设备都有设备文件与其关联,设备文件位于设备都有设备文件与其关联,设备文件
7、位于系统的系统的系统的系统的/dev/dev目录下面。如目录下面。如目录下面。如目录下面。如linuxlinux下的下的下的下的/ttyS0/ttyS0,/ttyS1/ttyS1分别表示的是串口分别表示的是串口分别表示的是串口分别表示的是串口1 1和串口和串口和串口和串口2 2。例例#include#include#include /*POSIX terminal control definitions*/#include /*POSIX terminal control definitions*/int open_port(void)int open_port(void)int fd;/*F
8、ile descriptor for the port*/int fd;/*File descriptor for the port*/fd=open(/dev/ttyS0,O_RDWR|O_NOCTTY|O_NDELAY);fd=open(/dev/ttyS0,O_RDWR|O_NOCTTY|O_NDELAY);if(fd=-1)if(fd=-1)perror(open_port:Unable to open/dev/ttyS0-);perror(open_port:Unable to open/dev/ttyS0-);else else fcntl(fd,F_SETFL,0);/*fcnt
9、l(fd,F_SETFL,0);/*设置串口为阻塞方式设置串口为阻塞方式*/*/return(fd);return(fd);头文件头文件#include/*#include/*标准输入输出定义标准输入输出定义标准输入输出定义标准输入输出定义*/*/#include/*#include/*标准函数库定义标准函数库定义标准函数库定义标准函数库定义*/*/#include/*Unix#include/*Unix标准函数定义标准函数定义标准函数定义标准函数定义*/*/#include#include/*/*数据类型定义数据类型定义数据类型定义数据类型定义*/*/#include#include/*/*
10、文件属性定义文件属性定义文件属性定义文件属性定义*/*/#include/*#include/*文件控制定义文件控制定义文件控制定义文件控制定义*/*/#include/*POSIX#include/*POSIX终端控制定义终端控制定义终端控制定义终端控制定义*/*/#include/*#include/*错误号定义错误号定义错误号定义错误号定义*/*/#include/*#include/*字符串功能函数字符串功能函数字符串功能函数字符串功能函数*/*/例解例解n nO_RDONLYO_RDONLY(只读只读只读只读)、)、)、)、O_WRONLYO_WRONLY(只写只写只写只写)、)、)
11、、)、O_RDWRO_RDWR(读写)(读写)(读写)(读写)n n标志标志O_NOCTTYO_NOCTTY可以告诉可以告诉UNIXUNIX这个程序不会成为这个这个程序不会成为这个端口上的端口上的“控制终端控制终端”。如果不这样做的话,所有的输。如果不这样做的话,所有的输入,比如键盘上过来的入,比如键盘上过来的Ctrl+CCtrl+C中止信号等等,会影响到中止信号等等,会影响到串口进程。串口进程。n nO_NDELAYO_NDELAY:无论是否读到数据,立即返回,否则会一:无论是否读到数据,立即返回,否则会一直等待直等待非阻塞方式非阻塞方式串口读写串口读写n n读:读:intread(intf
12、d,char*,intlength)intread(intfd,char*,intlength);其中其中其中其中fdfd为设备号;为设备号;为设备号;为设备号;char*char*为数据缓冲区;为数据缓冲区;为数据缓冲区;为数据缓冲区;lengthlength每次读每次读每次读每次读取数据的长度;返回值为实际读取数据的长度取数据的长度;返回值为实际读取数据的长度取数据的长度;返回值为实际读取数据的长度取数据的长度;返回值为实际读取数据的长度。n n写例:写例:n=write(fd,“ATZr”,4);n=write(fd,“ATZr”,4);返回写的比特数,如果返回写的比特数,如果错误返回负
13、数错误返回负数 关闭串口关闭串口n n关闭:int close(int fd);int close(int fd);参数说明:参数说明:参数说明:参数说明:fdfd:文件描述符:文件描述符:文件描述符:文件描述符 函数返回值:成功返回函数返回值:成功返回函数返回值:成功返回函数返回值:成功返回0 0,失败返回,失败返回,失败返回,失败返回-1-1。串口配置与终端标准结构体串口配置与终端标准结构体n n配置串口主要通过配置串口主要通过配置串口主要通过配置串口主要通过tcgetattr()tcgetattr()和和和和tcsetattr()tcsetattr()这两这两这两这两个函数。他们均使用一
14、个结构体,个函数。他们均使用一个结构体,个函数。他们均使用一个结构体,个函数。他们均使用一个结构体,该结构体对终该结构体对终该结构体对终该结构体对终端的输入、输出、硬件特性、控制协议等方面进端的输入、输出、硬件特性、控制协议等方面进端的输入、输出、硬件特性、控制协议等方面进端的输入、输出、硬件特性、控制协议等方面进行了定义,具体定义形式如下行了定义,具体定义形式如下行了定义,具体定义形式如下行了定义,具体定义形式如下(见(见(见(见termios.h)termios.h):structtermiostcflag_tstructtermiostcflag_tc_iflag;c_iflag;输入参
15、数输入参数输入参数输入参数tcflag_ttcflag_tc_oflag;c_oflag;输出参数输出参数输出参数输出参数tcflag_ttcflag_tc_cflag;c_cflag;控制参数控制参数控制参数控制参数tcflag_ttcflag_tc_lflag;c_lflag;本地模式本地模式本地模式本地模式cc_tcc_tc_line;c_line;行控制行控制行控制行控制cc_tcc_tc_ccNCCS;c_ccNCCS;控制字符控制字符控制字符控制字符;终端标准结构体说明终端标准结构体说明其中参数其中参数:c_iflagc_iflag输入输入输入输入参数设置参数设置参数设置参数设置;
16、c_oflagc_oflag输出参数设置输出参数设置输出参数设置输出参数设置;c_cflagc_cflag设置决定终端硬件特性的控制标志设置决定终端硬件特性的控制标志设置决定终端硬件特性的控制标志设置决定终端硬件特性的控制标志,包括数据位宽度、停止位、奇偶校验位等包括数据位宽度、停止位、奇偶校验位等包括数据位宽度、停止位、奇偶校验位等包括数据位宽度、停止位、奇偶校验位等c_lflagc_lflag存放本地模式存放本地模式存放本地模式存放本地模式(与用户交互)设置与用户交互)设置与用户交互)设置与用户交互)设置c_ccc_cc用来控制数据发送到调用程序的方式用来控制数据发送到调用程序的方式用来控
17、制数据发送到调用程序的方式用来控制数据发送到调用程序的方式终端设置终端设置n n设置终端属性的一般方法是:设置终端属性的一般方法是:1.1.首先调用首先调用首先调用首先调用tcgetattr()tcgetattr()填充上述结构体填充上述结构体填充上述结构体填充上述结构体2.2.对该结构体进行必要修改对该结构体进行必要修改对该结构体进行必要修改对该结构体进行必要修改3.3.最后调用最后调用最后调用最后调用tcsetattr()tcsetattr()使新设置生效使新设置生效使新设置生效使新设置生效输入选项输入选项c_iflag注:注:注:注:NL=newlineNL=newline输出选项输出选
18、项c_oflagn n部分参数:部分参数:终端速度控制终端速度控制n n获取和设置输入、输出速度函数:获取和设置输入、输出速度函数:intcfgetispeed(structtermios*tp)intcfgetispeed(structtermios*tp);intcfsetispeed(structtermios*tp,intcfsetispeed(structtermios*tp,speed_tspeed)speed_tspeed);intcfgetospeed(structtermios*tp)intcfgetospeed(structtermios*tp);intcfsetospee
19、d(structtermios*tp,intcfsetospeed(structtermios*tp,speed_tspeed)speed_tspeed);速度定义速度定义n n波特率的设置定义在波特率的设置定义在例如例如B4800-B4800-48004800B9600-B9600-96009600B19200-B19200-1920019200B38400-B38400-3840038400B57600-B57600-5760057600B115200-B115200-115200115200速度设置举例速度设置举例#include/#include/头文件定义头文件定义头文件定义头文件定
20、义.structtermiosoptstructtermiosopt;/*/*定义指向定义指向定义指向定义指向termiostermios结构类型的指针结构类型的指针结构类型的指针结构类型的指针opt*/opt*/cfsetispeed(&optcfsetispeed(&opt,B9600)B9600);/*/*指定输入波特率,指定输入波特率,指定输入波特率,指定输入波特率,9600bps*/9600bps*/cfsetospeed(&optcfsetospeed(&opt,B9600)B9600);/*/*指定输出波特率,指定输出波特率,指定输出波特率,指定输出波特率,9600bps*/96
21、00bps*/Cflag设置举例设置举例n nNo parity(8N1)No parity(8N1)options.c_cflag&=PARENB;/options.c_cflag&=PARENB;/关闭校验关闭校验options.c_cflag&=CSTOPB;/options.c_cflag&=CSTOPB;/设置停止位设置停止位options.c_cflag&=CSIZE;/options.c_cflag&=CSIZE;/设置数据位设置数据位options.c_cflag|=CS8;options.c_cflag|=CS8;n nEven parity(7E1)Even parity(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 第十一 串口 通信 GPRS 模块 实验
限制150内