介绍Linux 环境下串口通信的设计方法和步骤,并介绍了ARM9 微处理器s3c2440 在Linux 下和C8051Fxxx 系列单片机进行串行通信的设计方法,给出了硬件连接和通信程序流程图。该方法可靠、实用,适用于大多数Linux ARM 和单片机串口通信的场合。
数据采集系统中由于单片机侧重于控制,数据处理能力较弱,对采集的数据进行运算处理比较繁琐,如果通过串口与上位机通信,利用上位机强大的数据处理能力和友好的控制界面对数据进行处理和显示则可以提高设计效率。串口通信以其简单的硬件连接,成熟的通信协议,成为上下位机之间通信的首选。移植了Linux 操作系统的s3c2440 可以在Linux 环境下操作串口,降低了串口操作的难度,可以使开发者集中精力开发大规模的应用程序,而不必在操作底层设计上耗费时间。
1 硬件连接
s3c2440 是三星公司生产的基于ARM9 核的处理器,采用3.3 V 电压供电; C8051Fxxx 系列单片机是美国CYGNAL 公司推出的与8051 兼容的高性能高速单片机,采用3.3 V 电压供电。两者供电电压相同,所以进行串行口通信时不需要进行电平转换。硬件连接采用最常用的TXD,RXD,GND 三线连接方式。注意采用交叉连接方式。
2 Linux 下串口通信
2.1 Linux 下串口设备描述
s3c2440 上移植了Linux 2.6.32 操作系统,加载了s3c2440 的串口驱动程序,通过Linux 提供的串口操作函数和文件操作函数把对串口的操作等同于文件操作,降低了串口的操作难度,提高了效率。在程序中设备和文件都是通过文件描述符来操作的,文件描述符在Linux 内核中是一个非负整数。Linux 设备文件都存放在“/dev”目录下,串口也不例外,在/dev 中可以找到串口对应的设备文件,本文对应的串口1 的设备文件路径是“/dev /ttySAC1”。
2.2 Linux 下串口通信程序设计
串口通信需要设置一些参数,如波特率、数据位、停止位,输入输出方式等。这些参数都存在于Linux提供的termios 结构中,该结构是Linux 系统用于查询和操作各个终端的一个标准接口,定义在头文件< ter-mios. h > 中,如下所示:
STruct termios{tcflag_t c_iflag; /* 输入标志* /tcflag_t c_oflag; /* 输出标志* /tcflag_t c_cflag /* 控制标志* /tcflag_t c_lflag /* 本地标志* /cc_t c_cc[NCCS]; /* 控制特性*