嵌入式系统原理与技术资料:Linux串口编程.docx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《嵌入式系统原理与技术资料:Linux串口编程.docx》由用户(罗嗣辉)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 系统 原理 技术 资料 Linux 串口 编程
- 资源描述:
-
1、Linux 串口编程Linux 下的串口编程, 在嵌入式开发中占据着重要的地位, 因为很多的嵌入式设备都是通过串口交换数据的。在没有操作系统的我们可以使用 UART 的中断来出来数据的接受和发送,而在 Linux 操作系统下,我们也可以使用软中断的方式来处理数据的接受和发送,这里主要使用的是信号 SIGIO,也就是异步 I/O。这里也可以使用 select 实现异步形式的通知。这里可以参考UNIX 环境高级编程中的第 14 章 高级I/O 和第 18 章的 I/O 终端,这两章描述了串口的编程和异步 I/O 方面的内容。还有一本书linux serialprogramming how-to ,
2、 Serial Programming Guide for POSIX Operating Systems 。这都是串口编程的必读和经典书籍。串口参数的设置一般包括波特率、起始位数量、数据位、停止位和流控协议。在接收端和发送端要配置成一样的参数设置。在 Linux 中,所有的设备文件一般都位于“/dev”下,其中串口一、串口二对应的设备名依次为 “/dev/ttyS0” 、 /dev/ttyS1。 这可以通过查看/dev下的文件加以确认。 串口的参数设置为 115200,8, N ,1。也就是波特率是 115200,8 位数据位,无奇偶校验位,1 位停止位。串口编程中有一个最重要的结构体:st
3、ruct termiostcflag_t c_iflag; /* 输入选项标志 */tcflag_t c_oflag; /* 输出选项标志 */tcflag_t c_cflag; /* 控制选项标志 */tcflag_t c_lflag; /* 本地选项标志 */unsigned char c_line /*线控制*/cc_t c_ccNCCS; /* 控制特性 */;这个结构中最重要的是 c_cflag。通过对它的赋值,用户可以设置波特率、字符大小、数据位、停止位、奇偶校验位和硬件流控等。其中的参数在网上和很多的书籍上都介绍的很详细。在 c_lflag 中有这么一个参数 ICANON,如若设
4、置,则按规范模式工作,这使下列字符起作用:EOF、EOL EOL2、 ERASE、 KILL、 REPRINT 、STATUS、WERASE。输入字符被装配成行。如果不以规范模式工作,则读请求直接从输入队列取字符。在至少接收到 MIN 个字节或已超过 TIME 值之前,read 将不返回。在规范模式很容易:系统每次返回一行。但在非规范模式下,系统怎样才能知道在什么时候将数据返回给我们呢?如果它一次返回一个字节,那么系统开销就很大。解决方法是:当已读了指定量的数据后,或者已经过了给定的时间后,即通知系统返回。这种技术使用了 termios 结构中 c_cc 数组的两个变量:MIN和 TIME。C
5、_cc 数据中的这两个元素的下标名为 VMIN 和 VTIME。MIN 说明一个 read 返回前的最小字节数。TIME 说明等待数据到达的分秒数。需要包括的头文件是:#include #include #include #include #include #include #include #include #include #include Set_Uart.c其中的“Set_Uart.c”是设置串口的模式和打开串口的文件。模式的设置就是按上面说的进行设置。下面是发送数据,写串口的程序int main(void)int fd;int nwrite,i;char buff = Hello w
6、orld!n;fd = 0;/*打开串口*/if(fd = open_port(fd,0) 0) /在我的 Set_Uart.c 文件中定义。perror(open_port error!n);return (-1);/*设置串口*/if(i = set_opt(fd,115200,8,N,1) 0) /在 Set_Uart.c 文件中定义perror(set_opt error!n);return (-1);printf(fd =%dn,fd);/*向串口写入字符串*/sleep(10);nwrite = write(fd,buff,strlen(buff);sleep(10);printf
展开阅读全文