APP下载

SPI和单片机技术在嵌入式系统扩展中的应用

2016-03-22江汉大学文理学院信息技术学部邓乃君

电子世界 2016年2期
关键词:扩展单片机技术嵌入式系统

江汉大学文理学院信息技术学部 邓乃君 吴 文



SPI和单片机技术在嵌入式系统扩展中的应用

江汉大学文理学院信息技术学部邓乃君吴文

【摘要】随着计算机技术、电子技术的快速发展,芯片制造成本明显降低,嵌入式系统在移动设备、数码产品等各个领域广泛应用。文中基于SPI接口集成外围单片机的方法对嵌入式系统功能进行扩展,详细阐述整个扩展方案的结构及工作原理,重点介绍Linux环境下外围设备驱动程序的运行方法,以期为类似开发程序提供重要参考。

【关键词】SPI;单片机技术;嵌入式系统;扩展

近些年,对各类嵌入式系统进行设计中,对系统的存储、通信需求提出更高的要求。嵌入式产品具有个性化、人性化的特征,从而受到更多商家和消费者的欢迎,促使嵌入式设备的市场竞争更加激烈。传统的嵌入式系统外部接口比较滞后,导致嵌入式系统中扩展外部设备有一定的困难。虽然芯片技术的发展提供具有强大功能的SOC层,其集成的功能、接口更加丰富,但其开发费用、生产成本极高,在市场竞争中逐渐丧失价格优势。与片上系统比较,单片机的运算能力不理想,但其价格低、开发周期短,能够基于用户需求对其功能进行灵活调整,单片机的优势更加明显。文中根据SPI接口、外围单片机提出嵌入式系统功能扩展方法,通过 SPI在主CPU外围集成单片机,借助单片机完成嵌入式系统的功能扩展。

1 嵌入式系统扩展方案及工作原理

嵌入式系统的扩展方案的设备主要包括主CPU、单片机、外围设备三个部分,主CPU借助SPI接口实现与单片机交互数据,通过单片机已有的IO口、UART等接口扩展一系列串口、红外接口各项外围设备。外围数据经单片机处理后借助SPI总线发送至主CPU。反之,主CPU想要访问外围设备也要借助SPI总线发送给单片机,通过单片机程序完成对外围设备的访问操作。系统结构如图1所示。

图1 系统功能结构简图

SPI接口也称为外围接口,数据传递速度相比I2C总线更快,能够实现主CPU与多个外围器件传输数据信息的目的。SPI接口工作方式为主从模式,需要设计一个主机和一个多个从器件传送数据。本次设计中,主CPU是以单主单从的模式与外围单面机完成点对点通信。具体应用过中,可以依据实际需求通过SPI总线在外围集成相对应的单片机控制单元,从而集成大量的外围设备。因其实际应用领域的差异,根据开发的SPI协议与单片机固件程序合理调整外围设备,在并未增加大量制造成本和开发工作量的基础上,完成对嵌入式系统功能的扩展操作。同时,外围控制单片机能够对所有集成设备采集的信息进行相应的前置处理,能够分担主CPU运算压力,提升整个嵌入系统的响应效率。

2 外围驱动程序结构及运行机制

本系统所用的设备驱动程序基于Linux系统下进行设计,在Linux系统中,外部设备被抽象称作文件,对文件开展的各项操作也是对外部设备的操作,上述机制被称作虚拟文件系统。设备驱动程序是连接上层用户程序与机器硬件的重要接口,能够屏蔽硬件设备各项具体操作,把具体的硬件设备抽象为设备文件提供给用户程序,促使应用程序能够像普通文件一样对硬件设备实施读写操作。设备驱动程序主要任务在于对设备及资源进行释放,读取并会送程序发出的信息,实现用户空间、内核空间与物理层之间的数据传递。Linux环境下LED驱动程序代码如下:

#define DEVICE_NAME "leds" //加载模式后,执行”cat /proc/devices”命令看到的设备名称 //

#define LED_MAJOR 231 /* 主设备号 //

应用程序执行ioctl(fd, cmd, arg)时的第2个参数 */

#define IOCTL_LED_OFF 1

/* 用于指定LED所用的GPIO引脚 //

static unsigned long led_table [] = {

S3C2410_GPB5,

S3C2410_GPB7,

······

}。

本次设计的扩展方法,主CPU借助SPI接口与外围单片机完成通信。对外围设备驱动程序进行设计时,设置SPI通信、单片机控制两个细节,把单片机所集成的外围设备与主CPU集成本地设备中,便于用户程序进行读写操作。2.1本地系统设备驱动程序实现过程

主CPU能够直接集成本地串口设备及外围单片机扩展的串口、IO设备等驱动实现过程。从本地设备驱动来说,驱动程序对硬件设备展开的操作直接定义至接口函数内,如果用户程序访问设备文件,接口函数执行对硬件设备的读写等操作。如果用户程序借助串口驱动定义的接口函数对本次串口文件展开访问操作,驱动核心会把用户发出的请求传递至本地串口,通过该串口驱动底层定义硬件函数把串口数据发送至硬件设备,达到最佳的通信目的。

2.2SPI协议及外围扩展设备实现过程

SPI协议就是串行外围设备结构,主要应用在AD转换器、数字信号处理器、解码器、实时时钟之间,是需在芯片关节占用四根线,是一种高速的,全双工的通信总线。SPI通信原理比较简单,主要包括ss(cs)、sck、sdi、sdo构成,基于SCK控制下,两个双向移位寄存器展开数据交换操作。因SPI总线接口主要占用微处理器4个I/O口线,使用SPI总线接口能有限监护电力设计,节省大量常规电路接口器件及I/O口线,提升整个设计的可靠性。下文介绍SPI子程序设计代码:

//首先定义好I/O口

sbit SDO=P1^0;

sbit SDI=P1^1;

······

sbit ACC_7= ACC^7;

unsigned int SpiRead(unsigned char add)

{

unsigned int datal6;

add&=0x3f;/*6位地址*/

add |=0x80;/*读取操作码l0*/

SDO=1;/*发送1为起始位*/

SCK=0;

for(i=0;<8;i++)/*发送操作码和地址*/

{

if(add&0x80==1)

SDO=1;

SCK=0;/*从设备上升沿接收数据*/

add<<= 1;

}

SCK=1;/*从设备时钟线下降沿后发送数据,空读1位数据*/

datal6<<= 1;/*读16位数据*/

{

SCK= 1;

datal6|=0x01;

SCK =0;

datal6< < =1;

return datal6;

}

在单片机内集成的外围设备,因主CPU无法对其展开直接的硬件操作,其访问过程比较复杂。SPI通信协议栈主要包括SPI基本驱动和虚通道协议栈两部分,SPI基本驱动协议中设定SPI数据包纯属速度、纠错方法等协议,确保SPI数据包能够在主CPU与单片机进行顺利传输。SPI虚通道协议栈设定每一个外扩展设备的数据格式、功能码等协议,便于对SPI数据包展开解析、封装操作.

驱动程序虚通道协议栈作为外围设备的硬件驱动在,主要由外扩展设备数据处理、重点响应等内容。上述虚拟硬件驱动通过调用协议栈虚拟的通道实现在用户与SPI硬件接口对数据进行传递。从单片机集成的外围串口来说,这种外围串口能与本地串口使用同一个串口驱动核心实施封装,虚拟成为与本次串口相同的串口设备为用户程序提供服务。本地串口驱动层能直接执行串口硬件范围操作,该虚拟硬件驱动并不执行各项硬件操作,仅调用协议栈虚拟的数据通道向SPI硬件传递数据,通过外围单片机完成接收或发送串口数据的目的。

3 结束语

总之,对嵌入式系统功能进行扩展设计中,本次设计通过SPI接口集成外围单片机的方法设计嵌入式系统扩展方案,详细介绍整个扩展方案的工作原理,重点阐述在Linux环境下外围驱动体系的接口及实现过程,这种扩展方案成为实现串口、通信接口等扩展功能,对改善外围接口资源不足的问题做出重要贡献。

参考文献

[1]米书田,王涛,张然等.基于单片机及嵌入式系统管理煤炭存储的探究[J].煤炭技术,2013,32(2):240-242.

[2]秦磊,孙曼,王小亮等.CH395与 SPI 接口的以太网模块设计[J].单片机与嵌入式系统应用,2015,15(7): 61-64.

[3]陈宇珂,郑理华,张兴安,等.ATMEL AVR单片机SPI大容量Flash Rom扩展的实现[J].医疗卫生装备,2015,36(4):19-21,68.

[4]朱德良,吴国强,陈新春等.一种单片机多任务操作系统的设计与应用[J].自动化与仪表,2014,29(1):50-52.

[5]汤沁,徐学军,彭地卓等.基于Linux嵌入式系统的S3C6410和ADS1298R的SPI接口驱动的实现[J].中国新通信,2014,9(1):79-80,81.

[6]蔡红专,刘强,陈琎等.嵌入式系统中基于SPI协议的SD卡扩展实现[J].微型机与应用,2014,33(19):23-26.

邓乃君(1993—),男,湖北武汉人,现就读江汉大学文理学院信息技术学部,从事嵌入式系统的开发与研究。

作者简介:

猜你喜欢

扩展单片机技术嵌入式系统
浅谈数据挖掘和自适应算法的应用
多维传播语境下的播音主持功能与拓展研究
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
嵌入式系统课程“中断、异常与事件”教学实践及启示
面向实践创新人才培养的嵌入式系统教学研究
单片机技术在多机通信系统设计中的应用
试论单片机技术在电气传动系统的应用
恒温晶体振荡器调频范围扩展思考
单片机课堂教学探究
在DiskOnChip上构建VxWorks系统开发环境