0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于μc/OS-II和LPC2378微控制器汽车实验数据海量存储系统的设计

电子设计 来源:微计算机信息 作者:杨忻恺,张为公 2020-11-01 11:47 次阅读

引言

随着科学技术的不断发展.数据的存储和传输在嵌入式系统有了越来越重要的地位。海量数据存储是当前科技发展中的—个热点领域.它的应用也变的日益广泛。

设计嵌入式海量数据采集存储系统首先需要考虑的问题是软硬件接口的设计。只有软硬件接口定义清晰.协同工作顺利。才能保证软件与硬件组合为一个系统。软硬件接口设计又分为2个具体的问题:一是硬件接口连线的定义是否合理;二是软件上如何正确地收、发信息以及交换数据。必须选择合理的CPU来解决这两个问题。ARM核CPU以其高性能、小体积、低功耗和多供应源的出色结合而著名.它的另—个显著优点是易移植各种嵌人式实时操作系统.对于海量存储系统,这是非常必要的。此外,SD卡存储技术.目前设计成熟、应用广泛目使用极为简捷。

因此,本设计选择基于ARM的嵌入式结构作为海量存储的控制系统.使用高效便捷的CAN-BUS作为数据采集通道.采用SD卡作为存储介质.同时也为以后进一步完善系统功能提供了良好的解决方案。下面将围绕基于ARM的汽车实验数据海量存储系统的硬件设计和软件设计展开论述。

1 系统硬件设计

1.1 系统总体设计

通过分析系统的功能,根据模块的实际需要,设计中选用了具有CAN-BUS以及SD/MMC卡管理功能的高性能ARM处理器LPC2378。LPC2378是一款基于ARM7的微控制器,十分适用于需要串行通信的场合.且其内部包含CAN通道。所以需要考虑针对CAN总线的接口设计及其隔离电路的设计(详述见下文)。在它的基础上.再配上电源以及存储器等芯片,就构成了一个完整的嵌入式系统。系统总体框图如图1所示:

基于μc/OS-II和LPC2378微控制器汽车实验数据海量存储系统的设计

图1 系统总体框图

1.2 SD存储卡接口设计

本次方案选定的LPC2378微控制器内部带有SD卡控制器,支持SD卡的SD总线模式.因此.我们可以直接使用该控制器来访问卡。接口电路(如图2所示)包括4个部分:

图2 SD存储卡接口电路

1.SD总线:如图所示。微控制器的P0.22、P2.11、P2.12、P2.13、P0.20根据引脚功能.直接连接到卡座的相应接口。

2.SD卡ESD保护电路:如图所示.在卡座的数据总线DAT0-DAT3、时钟线CLK和命令线CMD上.使用了—个ESD保护器件PESD5VOL6U。这是—个专用于SD/MMC卡的ESD保护器件。它的作用是:当卡插人或拔出时,保护卡不受高压静电的损害。

3.卡供电控制:用可控方式给卡供电,这是为了防止SD卡进入不确定状态时,可以通过重新上电给卡复位。可控电路采用P型MOS管2SJ355.由ARM的GPIO口 P0.25进行控制。当P0.25输出高电平时。2SJ355断开卡的电源;当P0.25输出低电平时,2SJ355导通VCC3.3电源给卡供电。采用2sJ355的目的是当它开通时。管子上的压降比较小.在保证SD/MMC卡工作允许电压的情况下。也可以使用其它P型的MOS管。

4.卡检测电路:卡检测电路包括两部分.卡是否完全插入到卡座中和卡是否写保护。检测信号以两个引脚的电平方式输出。当卡插入到位时.卡座的CARD—INSERT脚由于卡座内部触点连接到GND,输出低电平:当卡拔出时.该引脚由于上掩电阻的存在而输出高电平。该输出由ARM的输入引脚P2.5来检测。卡是否写保护的检测原理与此相同。

2 系统驱动程序设计

鉴于本系统的高实时性要求.在模块软件设计前首先在LPC2378上移植了μC/OS-II。μc/OS-II是一个高性能的嵌入式实时操作系统。能高效地实现任务切换、任务调度、任务问通信、同步、互斥、实时时钟管理、中断管理等功能。μC/OS-II也是—个移植性很强的操作系统.系统移植时只需要修改和硬件有关的源代码即可。

2.1 系统软件流程

使用定时中断方式采集CAN总线中的数据。在μC/OS-Ⅱ主函数中建立一个空闲任务TASK0.配置和初始化定时器0和实时时钟,启动多任务操作系统.并记录其启动时间。接着在TASK0任务中初始化ADC、定时器等系统硬件,创建控制、存储采样信息的信号量和消息邮箱.并创建SD卡文件写入任务、采样任务和FS文件管理系统任务。其中,文件管理任务的优先级最高.SD卡写入任务最低。而采样任务是由中断服务程序(ISR)控制的.定时器时间到后,触发中断,ISR即发送信号量给采样任务,随即开始一次硬件采样。SD卡文件写入任务和采样任务的流程图分别如图3、图4所示。

图3 SD卡文件写入任务流程图

图4 采样任务流程图

在采样中有两个问题需要注意.首先是所有的采样值都必须加上采样时问的数据,方便后期的实验结果分析.所以在硬件设计中使用到了LPC2378的实时时钟功能(RTC)。第二个问题是FS文件系统管理任务在控制SD卡写入任务时.是以ASCII码的形式往SD卡中写入数据,因此在数据存储前比较将A/D采样结果转换成ASCⅡ码。

2.2 CAN总线初始化设计

CAN控制器的寄存器比较多.但其通信流程与常规通信接口UART大体是一致的.所以初始化CAN的过程,包括对CAN的时钟频率.CAN的引脚一级波特率的设置等。需要注意的是。所有设置必须要在CAN控制器处于复位模式下时进行。

初始化CAN控制器使用函数CAN_Init().它包括了两路的CAN控制器的同时配置。

CAN总线的初始化程序关键代码:

void CAN_Init(unsigned char Ch,unsigned long Baud)

{

unsigned long addr

/*配置CAN控制器引脚*/

PCONP |=0x01L《《13; /*打开CAN控制器电源*/

PINSEL0&=~(Ox03L《《0); /*通道IRD*/

PINSEL0 |=(0xO1L《 PINSEL0&=~(Ox03L《《2); /*通道ITD*/

PINSEL0 |=(0x01L《《2);

。。.

addr=(unsigned long)(&CAN1BTR)+Ch*CANOFFSET;

RGE(addr)=Baud; /*获取CH路的CANIBTR寄存器地址.并设定波特率*/

。。.

}

2.3 SD/MMC接口的初始化设计

SD接口的初始化在TASK0任务中进行.其功能通过调用SDCammand函数实现。SDCammand函数包括底层SD驱动程序和操作系统上层接口程序。SDCammand函数的关键代码如下:

uint16 SDCammand(uint8 Cammand,void * Parameter)

{

/*定义相关变量*/

switch(cammand)

{

case DISK_INIT: /*设备初始化*/

SD_Initialize(&sds); /*完成SD卡的硬件初始化*/

case DISK_CLOSE: /*关闭驱动器.移除驱动程序*/

case DISK_READ_SECTOR:⋯/*读扇区*/

case DISK_WRITE_SECTOR:⋯/*写扇区*/

。。.

}

retum rt; /*rt负责返回各种底层驱动返回值*/

}

3 结语

详细论述了基于ARM的汽车实验数据海量存储系统的软件和硬件设计.该系统在以LPC2378微处理器和μC/OS一Ⅱ操作系统组成的平台上完成了对汽车同步器实验台各项参数的采集、处理、存储等功能。该系统性能稳定可靠、实时性强、设计简单.在实际应用中已达到了预期的效果。文中所述海量存储系统也可应用于其它需要大量数据处理的工控实验场合.具有参考意义。

本文作者创新点:1、采用LPC2378为系统控制单元核心;2、采用便携,成本低廉的SD卡作为海量存储单元;3、经实践测试.本系统完全可应用于各类汽车工控实验数据的存储,经济效益可观。

责任编辑:gt

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6284

    浏览量

    121872
  • 存储系统
    +关注

    关注

    2

    文章

    381

    浏览量

    40703
  • 嵌人式
    +关注

    关注

    0

    文章

    10

    浏览量

    7484
收藏 人收藏

    评论

    相关推荐

    LPC2378应用模块出售

    、RS-485、I2C、PWM、SPI、MINIBUS、ADC(10bit)、DAC(10bit),可用于工业控制、协议转换、通讯前端等领域,提供kEIL环境下的驱动代码、uC/OS-II的应用模板和相关的开发环境,价格面议。本
    发表于 11-22 16:20

    LPC2378不能下载程序,求救!

    我在网上购买10片LPC2378,用了6片,在调试中发现每片都能检测到LPC2378 内核,但读不到内部ID,.请大师们多指教,是不是芯片有问题呀.谢谢!
    发表于 08-07 10:14

    LPC2378学习代码

    给我们菜鸟的七夕礼物,LPC2378的学习代码,以此共勉!{:soso_e130:}
    发表于 08-23 17:28

    μCOS-II操作系统在各种处理上的移植

    的工作就是操作系统的移植。本文选取使用较多的51单片机、LPC2210、NiosII三种处理进行介绍。 1 μC/OS-II操作
    发表于 08-14 09:46

    嵌入式实时操作系统μC/OS-IILPC2378上怎么移植?

    操作系统及CPU是什么 μCOS-Ⅱ内核结构及工作原理嵌入式实时操作系统μC/OS-II
    发表于 04-26 06:32

    怎样利用μC/OS-II去设计整车控制器系统

    怎样利用μC/OS-II去设计整车控制器系统
    发表于 05-14 06:48

    如何设计一个由LPC2378和MAX4357构成的嵌入式系统

    本设计采用恩智浦公司(NXP)基于ARM7的微控制器LPC2378与美信公司(MAXIM)视频矩阵切换芯片MAX4357构成嵌入式系统,在μC/OS
    发表于 06-08 07:06

    LPC2300的UCOS II

    MicrimEmpowering Embedded SystemsC/OS-IIC/ProbeC/LCDand theNXP LPC2378 Processor(Using the Keil MCB2300 Evaluation Board)
    发表于 06-26 17:00 32次下载

    μC/OS-II在MPC555微控制器上的应用

    以新一代微控制器MPC555 为硬件开发平台, 实现嵌入式实时操作系统μC/OS-II 向MPC555硬件平台的移植; 同时, 给出在此平台下进行串行通信程序开发的示例。
    发表于 04-16 09:14 14次下载

    μC OS-II 在MPC555 微控制器上的应用

    以新一代微控制器MPC555 为硬件开发平台, 实现嵌入式实时操作系统μC/OS-II 向MPC555硬件平台的移植; 同时, 给出在此平台下进行串行通信程序开发的示例。
    发表于 05-15 14:59 15次下载

    LPC2378管脚排列图

    LPC2378管脚排列图
    发表于 09-26 10:38 89次下载

    LPC2378设计的数据采集系统

    本文介绍了以LPC2378为核心微处理器设计成的 数据采集 系统,给出了软件和各模块,接口设计。
    发表于 06-29 14:55 78次下载
    <b class='flag-5'>LPC2378</b>设计的<b class='flag-5'>数据</b>采集<b class='flag-5'>系统</b>

    LPC2378管脚排列图

    介绍了关于LPC2378的管脚排列图,掌握每个引脚的模块及功能!
    发表于 04-25 13:54 0次下载

    LPC2378 Erratasheet V1.5资料

    LPC2378 Erratasheet V1.5资料,感兴趣的小伙伴们可以看看。
    发表于 11-08 18:13 0次下载

    基于SMTP的数据采集系统(LPC2378

    基于SMTP的数据采集系统(LPC2378
    发表于 09-29 11:45 12次下载
    基于SMTP的<b class='flag-5'>数据</b>采集<b class='flag-5'>系统</b>(<b class='flag-5'>LPC2378</b>