2024年4月17日发(作者:)
I丝. 研发展………………………….
嵌入式Linux下串口应用编程
中北大学电子测量技术国家重点实验室孙甲凯韩慧莲范敏刘 寅
【摘要】本文详细介绍了嵌入武linux下串口应用编程,详细介绍了串口设置的步骤,可以更好的理解串口的工作原理。
t关键词】linux操作系统;串口设置;串口使用
Abstract:This paper describes the app ̄cafion of embedded hnux Sedal Programming,detailing the steps to set the serial port,you can understand the working principle of thc Serial port
morc bcttcf.
Key ̄ords:Linuxoperating system;Serialport settings;theuseofthe scfialport
一
、
弓I言
read()函数立即返回。若有可读的数据时,则
串口是一种常用的接口,常用的串口有RS一 读取数据并返回被读取的字节数,否则读取失
232-C接口。¥3C2410X内部具有两个独立的UART 败并返回0
=\开== ●口设鲁/ >
控制器,每个控制器都可以工作在Interrupt(中 (2)MIN大于0,TIME为0:read()函数会等
人
断)模式或者DMA(直接存储访问)模式。同时, 待到有MIN个字节可以被读取,否则一直处于
每个UART均具有16字节的FIFO(先入先出寄存
阻塞状态。
器),支持的最高波特率可达 ̄U230.4kb/s。 (3)MIN为0,而TIME>O:只要满足两种情
l兢震睾口读写为ll
阻塞方式 l
UART的操作主要可分为以下几个部分:数据
形下:a、存在数据可读;b、阻塞TIME的十分
i
发送、数据接收、产生中断、设置波特率、 之一秒,read函数就会返回,其中返回值为读
袋轵●D设鲁的当
Loopback模式、红外模式以及硬软流控模式。
取到的字节数。如果在有数据可读前超时,则
鹅曩畿
蔷
在1inux中,所有的设备文件一般都位于“/
read()函数返回值为0。
l
dev”下,其中串口1和串D2对应的设备名依 (4)MIN和TIME全都大于0:只有满足如下
箍嚣道德妁需隶设置串I
口越诖为霹薹缸 式 l
次为“/dev/ttySO”和“/dev/ttyS1”,而且
两种情形之一时,read0函数才会返回:缓存
USB转串口的设备名通常为“/dev/ttyUSBO”
区中有MIN个字节,或者在两个字符之间超时
l
和“/dev/ttyUSBl”,下面就详细讲解串口应 TI艇个十分之一秒。
f穗摄静l
用编程。
从严格意义上来讲,原始模式是一种特殊
\逛西不同鸽遨凰艇
堆中的{.掘L
/
二、串口设置详解 的非规范模式。在原始模式下,对输入数据的
圉1串口设备初始化流程图
读写串口设备时需要设置串口的波特率、
处理方式是按字节为单位,并且终端是不可回
在打开串口设备之后,需要对串口设备的
校验码、停止位等等,对于应用程序开发来 显的。通过调用Cfmakeraw()函数就可以将把 属性进行配置。主要包括设置波特率、设置字
说,对于串口设备的设置主要通过如下的结构 终端的该工作模式设置为原始模式。
符大小、设置奇偶校验位、设置停止位以及设
体完成的:
三、简单的串口设置详解流程
置最小字符和等待时间等。
#include<termios.h>
下面以指纹识别系统为例介绍下串口的操
设置串口设备之前,需要先获取当前串口
struct termios
作流程。
设备的属性,这是因为结构体termios的成员
(
本系统中,对串口的操作和使用可以分为 都是和特定寄存器对应的,如果不先获取以前
unsigned short c
iflagl/幸输入模 如下几个部分:串口的初始化(包括串口设备 的状态,可能将寄存器中的值全部覆盖,从而
式标志木/
的打开、串口设备属性的设置)、串口数据单
导致通信失败,并且在操作完串口设备以后,
nusigned short c
oflag:/cAt出模
字节读取、串口数据的多字节读取、串口数据
需要将串口设备的属性恢复到以前的值。获取
式标志
的单字节写入、串口数据的多字节写入 串口
当前串口设备属性的过程如下:
nusigned short c
cflag:/啦制模 设备的关闭。
tcgetattr(fd。&new_cfg)://从fd代表的
式标志 I.串口设备的初始化过程 串口设备中获取当前的状态并将其保存在new
nusigned short c
_
Iflag ̄ 本地模
(1)打开串口
cfg中。
式标志
在Linux系统中,对设备的操作如同普通
接下来是将串口设备设置为原始模式,在
nusigned short c
_
line, 线路规
文件一样,在本系统中打开串口设备的代码如
本系统中需要使用原始模式进行通信
}
下所示: cfmakeraw(knew_cfg):
unsigned short C
_
CC[NCC];/}控制
#define DEVICENAMEO /dev/s3c241o_
将串口通信的字符大小设为8个字符
特 ,
serial 1
new
_
cfg.c
_
cflag&= CSIZE:
speed
_
t cispeed:
输入速度+/
fd=open(DEVICENAMEO,0
RDWR l 0一
new
_
cfg.c
_
cflag I=CS8;
speed
t c
_
_
ospeed:
/ 输出速度 / NONBLOCK):
设置波特率
}:
DEVIcENAMEO表示要打开的串口设备名
cfsetispeed(&new_cfg,BARDI ̄TE)://设
termios是POSIX定义的标准接口,是对虚 称,这个和特定的设备相关,在Linux桌面
置输入波特率
拟终端、串口等终端类设备的一种抽象。终端
系统上一般为/dev/ttyS*,而在嵌入式系统
cfsetospeed(&new_cfg。BARDRATE)://设
有规范模式、非规范模式和原始模式这三种工
中,这个根据UART驱动对的板级信息不同而
置输出波特率
作模式。上述结构体成员的C
—
lflag的ICANNON 不同,没有统一的规定,在本系统中是/dev/
设置奇偶校验位,不适用奇偶校验
标志位用于定义终端的工作模式类型,如果设
s3c241O
_
serial l。
new
cfg.c
cflag&: ̄PARENB;
__
置这一位说明终端工作与规范模式下,如果过
O
_
RDW ̄示以读写方式打开串口设备
new
_
cfg.c
iflag&= INPCK;
_
清除该标志表明终端工作在非规范模式下。默
0 NONBLOCK标志代表将以后的读写操作全
设置停止位,使用一个byte
认情况是工作在规范模式下。
以非阻塞模式。注意,这里必须选择非阻塞方
new
_
cfg.c
cflag&=’CsT0IIB:。
_
在规范模式下,对输入是通过行的方式进 式打开,否则会导致程序运行出错。
设置读取字符大小以及等待时间
行处理的。在输入行结束符(包括回车符、EOF 为了读写串口设备,需要恢复串口读写方
new
cfg.C
_
CC[vTI娅]=5o://两个字符之间
等)之前,系统调用read()函数是读不到输入 式为阻塞状态,以用于等待数据,可用fcntl()
等待超过5s返回
的数据。在非规范模式下,输入全部都是即时
函数实现
new cfg.c
_
cc[VMIN]=l: //最少读取一个
生效的,既不需要额外输入行结束符,也不需 if(fcntl(fd,F_SETFL,0)<o)
字符
要进行行编辑。在该模式下,用户可以通过对
{
清除串口缓存
参数MIN(c
_
cc[ⅧIN])和TIME(c—CC[vTI艇]) printf(“fcntl F SEIH ̄\n”):
该操作是必不可少的,否则会导致串口通
的设置来决定调用read()函数的方式。下面是
return 1:
信失败。
4中不同的设置情况。
)
tcflush(fd。Tc10FLUsH):
(1)MIN以及TIME全部为0的情况下: (2)配置串口设备的属性
其中TCIOFLUsH表示清空串口的缓存。
一
98一电子世界
………………………….
贸美最.塑J
基于DSP的电气数据分析应用
奇瑞汽车股份有限公司 刘琳
【摘要】随着工业的快速发展,电气信息的获取成为产品设计的主要组成部分,本文利用MATLAB Link for Code Composer Studio,进行DsP算法移植,最终实现通过摄
像头采集电气参数图像信息,显示器显示电气参数图像的曲线拟合结果。能有效提升读图的精度与速度,缩短开发周期,降低开发门槛,优化开发过程,整个系统易于
手持使用,特别是在工业现场可以直接使用,在实际工程项目中有着援佳的使用前景。
【关键词】图形处理;DSP;MATLAB;电气参数
序言
随着电气产业的日益普及和广泛使用,在
电气产品设计过程中,如何精确选型避免过设
计,成为电子电器产品规划、设计、销售人员
越来越关注的问题。同时当今是信息化社会,
图像是电子电器行业获取信息的最重要的来
源之一。本文提出结合MATL^JB来开发DSP系统
的思想,阐述了实现该思想的两种工具,并详
细介绍了使用MATLAB Link for Code Compo-
ser Studio辅助DSP设计的相关内容,包括其
功能特点、实现方式、工作原理等。最后结合
典型的FIR滤波器实例,探讨了使用该工具的
方法,并设计了图形用户界面。结果表明应
用MATLAB辅助开发DSP系统可以发挥二者的优
势,缩短开发周期,降低开发门槛,优化开发
过程。
二、具体分析
1.总体思路
数字信号处理(Digital Signa]Proc-
essing,简称DSP)是一门涉及许多学科而又广
泛应用于许多领域的新兴学科。MATLAB具有强
大的计算、分析和可视化功能,但MATLAB语
言是解释执行的,执行速度较慢;而DSP是为
一
、
(2)关键技术点
由于SDRAM在PCB板上的布局、布线属高
速数字信号设计,设计过程与低速电路不同,
需要考虑电路中的反射、串扰、电磁干扰等现
象,其设计的好坏直接影响系统性能,甚至使
系统失效,所以该部分设计为系统硬件电路设
计关键点之一;针对该问题,在设计过程中
要遵循一些基本的高速信号设计规则,DSP至
SDRAM的数据线与地址线作等长布线,PCB设计
完成后,进行性能仿真。
2.细节分析
(1)使用多项式拟合矩阵DL和矩阵zs的函
数DL=f(zs),经过测试,6此多项式在一定的
取值范围内,准确率最为合适,下面以实际情
况来分析此细节问题;
(2)2次多项式:p=polyfit(zs,DL,2);
(3)3次多项式,将p=polyfit(zs,DL,2)改
为p=polyfit(ZS,DL,3);
(4)4次多项式,将p=polyfit(zs,DL,3)改
为p=polyfit(zs,DL,4);
电源设计:该系统的电源模块主要由开
(5)5次多项式,将p=polyfit(zS,DL,4)改
关电源(BUCK)、线性电源组成,开关电源外围
为p=polyfit(ZS,DL,5);
器件(如储能电感、续流二极管等)的选择、布 (6)6次多项式,将p=polyfit(zs,DL,5)改
局、走线,决定了电源模块的稳定性和EMC性  ̄o-polyfit(zs,DL,6);
能,所以该模块设计为系统硬件电路设计关键
(7)7次多项式,将p=polyfit(zs,DL。6)改
点之一;针对该问题,在设计过程中要遵循环
路面积最小原则,并注重散热结构设计。
(3)关键元器件选型分析
(a)DSP:采用高性能数字多媒体处理器
TMS320DM642,最高主频可达720姗z。
(b)Flash;选用SPANSION S29GL128S-
90TF102,128Mbit FLASH芯片。
(c)SDRAM:根据算法要求,每个摄像头在
SDRAM中存放4帧数据,本设计采用1片ISSI生
产的Is42s3280oB(256.Mbit)。
(d)LM22676:该系统控制器在短时间耐
电压测试过程中,电压值为24V,控制器工作
电流≤1A。根据以上参数,可选择开关电源
L ̄22676。
为p--polyfit(zs,DL,7);
经过以上分析,6次多项式精度已经较为
了完成实时数字信号处理任务而设计的,算
法的高效实现是DSP器件的显著特点,但是其
开发门槛高…。如果能把MATLAB和DSP开发工
具结合在一起,取长补短,相辅相成,将是
DSP设计人员梦寐以求的一种新的开发思想。
MATLAB Link for Code Composer Studio可
理想,满足实际工程使用精度需求,无衙使用
7次多项式拟合。
四、小结
本文提出结合MATLAB来开发DSP系统的思
想,阐述了实现该思想的两种工具,并详细介绍
了使用MATLAB Link for Code Composer Studio ̄
助DSP设计的相关内容,基于DSP的图形识别和
处理 直接读取图形信息,有效的提升了读图
的精度与速度,能有效优化供应商及零部件选
型、提升设计质量、降低售后风险,整个系统
易于手持使用,特别是在工业现场可以直接使
用,在实际工程项目中有着极佳的使用前景。
参考文献
【1】部彦,唐东。宁志刚,簪.DSP原理及应用嗍.北京:电子
工业出版社2oo5.
团MATIABⅡnk for Code Compos ̄Studio Dcvdopmcnt
ToolsUser’SGuideJdathWorks ̄2oo2
.
以实现这一要求。
本文利用matlab的图形处理功能圆-3J,找
出图形上的点代表的坐标,并根据坐标轴的
数值范围,确定图形上的点代表的x、Y数值。
对图形上点所对应的X、Y值,做多项式拟合,
计算出在坐标轴的数值范围内x、Y。令数值
的方程Y=f(X)。利用MATLAB Link for Code
Composer Studio,进行DSP算法移植,最终
实现通过摄像头采集电气参数图像信息,显
示器显示电气参数图像的曲线拟合结果。
2.实施方法
(1)功能划分及逻辑框图
系统按功能可分为电源模块、视频切换、
存储器模块、DSP、视频输入模块、视频输出
模块六个部分。
接下来需要激活配置
if((tcsetattr(fd,TCSA ̄j如 cf )!=0)
(
f|perror tcsetattr
return l:
三、工作实例分析
1.工作流程
(1)视频信号通过摄像头采集;
(2)采集信号通过视频解码传给DSP处理;
(3)对采集的图像进行灰度、二值化处
理、边缘提取、滤波等一系列算法处理;
(4)利用上述算法对处理后的图像进行电
气参数图形提取;
(5)对提取的电气参数图形进行多项式拟
合Ⅲ:
【3]刘剑科,王艳芬,王胜利.M^.II.^B Link for CCS D c.
1opmentTools在DsP系统设计中的应用田.信忠技术与
信患化2oo5(4).
【4】谢良喜,孔建益,王兴东等.I ̄TLAB读入数据的几种
方武探讨田.徽计算机信患,2o05④:135-136.
(6)通过显示器,件拟合的结果显示,以
备后续设计开发使用。
作者简介:刘琳(1979一),女,安徽濉溪人,硕
至此,电气参数图中信息 ̄matlab读出,
转换成函数关系方便后续工程上使用。经过验
士,工程师(中级),现供职于奇瑞汽车股份有限公
司。
证,计算得出的数值和原图符合。
close 0函数即可完成。
四、结束语
本文以指纹识别系统的串口编程为例,
阐述了Linux系统下,串口编程的具体设置方
【4】韦东山_嵌入武Linvx应用开发完全手册 .北京:人民
邮电出版社 ̄ooa4.
【 鸟哥著,王世江.鸟哥的I Ⅱx私房菜基础学习篇(第三
版) 田.北京:人民邮电出版社2m0.
}
串口初始化、串口属性的设置的流程图,
如图1所示。
2.串口的读写和关闭
利用串口通信的过程就是对串口设备的读
写过程,只需要利用read0函数和write0函
数对打开的串口设备的文件描述符操作即可。
在操作完串口退出程序时,需要将打开的串口
关闭,这个过程和关闭普通的文件一样,调用
法,在本文的基础上再添加上层软件的设计即
作者简介:
可完成一个指纹识别系统。
参考文献
[1】于明,范书瑞,瞥样烨-ARM9嵌入式系统设计与开发教
程嗍.北京:电子工业出版社 ̄2006.
圆冷玉林.基于AltM的嵌入武Linux系统构建与应用研
究吲.重庆:重庆大学硕士学位论文 1n
孙甲凯,中北大学信息与通信工程学院硕士研究生,
主要从事嵌入武系统开发。
韩慧莲,中北大学信忠与通信工程学院教授,硕士生
导师。
范敏,中北大学信息与通信工程学院硕士研究生,主
要从事信号与信息处理。
刘寅,中北大学信息与通信工程学院硕士研究生,主
要从事电气控制与自动测试。
翻华清远见嵌入武培训中心.嵌入式Linux应用程序开
发详解D .北京:人民邮电出版社 9.
电子t蟹界一99—
发布者:admin,转转请注明出处:http://www.yc00.com/news/1713289329a2219572.html
评论列表(0条)