• 基于ARM9芯片的S3C2440和Linux操作系统设计SPI驱动程序

    基于ARM9芯片的S3C2440和Linux操作系统设计SPI驱动程序

    在嵌入式开发过程中,许多系统通常使用串口驱动来满足通信要求,但在实际应用中,使用SPI通信方式会更加高效和快捷[2]。SPI接口是一种高速、高效的串行接口技术,因而SPI设备在数据通信应用中十分方便[3]。本文基于ARM9芯片的S3C2440和Linux操作系统,设计了一种SPI驱动程序,该驱动程序功能可靠灵活、易于移植,可应用于多种嵌入式平台,实现ARM与设备之间的通信。 1硬件说明 1.1S3C2440开发平台 1.2SPI硬件模块 S3C2440具有两个SPI,每个SPI具有两个8位移位寄存器用于独立地发送和接收数据,并兼容SPIver.2.11协议,支持8位逻辑预分频,系统可用polling、中断、DMA三种方式判断SPI发送及接收状态。此SPI模块共包含以下信号线[5]: (1)SCK:数据同步时钟信号,由主设备驱动,向从设备输出,使得从设备按照同步时钟的步调来接收或发送数据。 (2)nCS(由用户指定GPIO):从设备选择信号线(SlaveSelect,SS)由主设备发出,用来选择激活某个从设备,低电平有效。 (3)MISO(SPIMISO0):主入从出信号线,表示该信号在主设备中作为输入,在从设备中作为输出。 (4)MOSI(SPIMOSI0):主出从入信号线,表示该信号在主设备中作为输出,在从设备中作为输入。 (5)/SS(nSS):多主错误检测。 2Linux下的SPI设备驱动程序设计 Linux设备驱动在Linux内核中扮演着重要的角色。它可使某些特定硬件响应一个定义良好的内部编程接口,这些接口完全隐藏了设备工作的细节。用户操作可通过一组标准化的调用来执行,这些调用在形式上完全独立于特定的驱动程序,而将这些调用映射到实际硬件设备的特有操作上,则是驱动程序的任务[6]。本设计的SPI驱动主要定义了初始化、读和写三个操作。其中初始化操作用于驱动程序第一次加载到内核运行时,对一些内核机制及存储器进行初始化。写操作负责将用户数据拷贝至内核缓冲区,控制本地主SPI发送数据至从SPI寄存器中。读操作将按照用户要求读取的字节数,连续读取本地主SPI中接收到的数据,并将其拷贝至用户空间。驱动程序将采用中断的方式通知系统SPI数据是否发送完毕,即当SPI硬件模块每发送完毕一个数据,都会通过中断线向系统发起中断,系统响应中断后,驱动程序将调用中断处理例程。 2.1SPI初始化 (1)申请中断。此驱动设计通过中断判断数据是否发送完毕,所以需要申请SPI0相关的中断,并注册相应的中断处理函数。此驱动程序的中断处理函数声明如下: staTIcirqreturn_ts3c2440_isr_spi(inTIrq,void*dev_id,structpt_regs*reg) 利用request_irq向内核申请中断号并注册中断处理函数: request_irq(IRQ_SPI0,s3c2440_isr_spi,SA_INTERRUPT,DEVICE_NAME,s3c2440_isr_spi); (2)虚拟地址映射。驱动程序可以直接通过访问内核中的虚拟地址来访问设备物理地址所对应的寄存器,对其进行操作。SPI设备的地址映射过程如下: request_mem_region(S3C2440_PA_SPI,0x30,“s3c2440-spi”); base_addr=ioremap(S3C2440_PA_SPI,0x30); 其中S3C2440_PA_SPI为SPI的物理地址(在/asm-arch/arch-s3c2440/map.h中定义),从S3C2440_PA_SPI开始分配0x30大小的内存区域,此后将其移至内核空间。 (3)相关寄存器的设置。通过配置SPI功能寄存器设置SPI工作模式。以ioremap返回的虚拟地址为基址,通过增加不同偏移量访问相应寄存器。本次设计将本地SPI设为主设备,开启SCK信号使能,设定CPOL和CPHA均为0,SPI工作在普通模式下。设置波特率预分频寄存器(SPPRE)中的分频比为8。具体设计如下: __raw_writel((S3C2440_SPCON_SMOD_INT|S3C2440_SPCON_ENSCK|S3C2440_SPCON_MSTR),s3c2440_SPCON); DPRINTK(DEVICE_NAME“SPCONiniTIalizen”); __raw_writel((S3C2440_SPPIN_ENMUL|S3C2440_SPPIN_KEEP),s3c2440_SPPIN); DPRINTK(DEVICE_NAME“SPPINiniTIalizen”); __raw_writel(0x07,s3c2440_SPPRE); DPRINTK(DEVICE_NAME“SPPREinitializen”); (4)初始化发送和接收数据缓冲区。数据缓冲区使用环形缓冲区结构,通过头尾指针的循环移动,实现对缓冲区的动态管理。其定义如下: typedefstruct { spi_bufbuf[MAX_SPI_BUF]; unsignedinthead,tail; wait_queue_head_twq; }SPI_BUF;staticSPI_BUFspi_Tx_buf;staticSPI_BUFspi_Rec_buf; 其中spi_buf表示char型,MAX_SPI_BUF为缓冲区大小,设为1024B。head、tail分别表示头尾数组下标,wq为等待队列头。此结构依靠以下宏进行管理: #defineSPI_Tx_BUF_HEAD(spi_Tx_buf.buf[spi_Tx_buf.head]) #defineSPI_Tx_BUF_TAIL(spi_Tx_buf.buf[spi_Tx_buf.tail]) #defineINCBUF(x,mod)((++(x))&((mod)-1)) 前两个宏用于引用缓冲区中的元素,最后一个宏用于对头尾下标进行前移,并保证头尾下标数值可循环变化,不发生溢出。 在初始化时,分别对接收和发送缓冲区的头尾指针进行清零操作,具体如下: spi_Tx_buf.head=spi_Tx_buf.tail=0;spi_Rec_buf.head=spi_Rec_buf.tail=0; (5)内核机制相关的数据结构初始化。本设计所使用的内核机制包括了中断上下半部的操作和睡眠等待机制,因此需要对发送、接收等待队列以及tasklet结构进行初始化,并注册tasklet处理函数。初始化过程如下: init_waitqueue_head(&(spi_Tx_buf.wq)); init_waitqueue_head(&(spi_Rec_buf.wq)); tasklet_init(&spi_tasklet,spi_tasklet_handler,data); (6)初始化相应端口。根据S3C2440外部管脚配置,将与SPI功能引脚复用的GPIO设定为SPI相应功能。具体操作如下: s3c2440_gpio_cfgpin (S3C2440_GPE11,S3C2440_GPE11_SPIMISO0); s3c2440_gpio_cfgpin (S3C2440_GPE12,S3C2440_GPE12_SPIMOSI0); s3c2440_gpio_cfgpin (S3C2440_GPE13,S3C2440_GPE13_SPICLK0); s3c2440_gpio_cfgpin (S3C2440_GPG2,S3C2440_GPG2_INP);//设置nSS s3c2440_gpio_cfgpin(S3C2440_GPB10, S3C2440_GPB10_OUTP);//设置片选信号 s3c2440_gpio_setpin(S3C2440_GPB10,1); 2.2SPI写操作 写操作主要是将上层应用部分的用户空间中的数据拷贝到内核空间中的环形缓冲区中,此后将缓冲区的数据送到SPI发送寄存器中,在SPI发送完一个数据后,系统产生中断,中断例程中的下半部将调用tasklet判断缓冲区状态。若缓冲区中有相应的空间,可以将下一数据填入SPI发送寄存器中,直至将缓冲区数据全部发送完毕。 本设计的写操作实现了环形缓冲区的动态管理,即在缓冲区删除数据、尾指针前移的情况下,允许向缓冲区添加数据,头指针前移。此设计可以使用户空间任务与内核空间的数据发送同时进行,提高了用户空间任务执行效率,并且当利用copy_from_user函数将数据从用户空间拷贝至内核空间时,数据发送仍在进行,即数据从用户空间至内核空间拷贝过程与数据发送过程并发,提高了驱动程序效率。 为了实现环形缓冲区动态管理,定义了copy_to_Tx_buf_init和copy_to_Tx_buf两个函数完成数据向缓冲区的复制操作。 (1)copy_to_Tx_buf_init函数。本函数主要用于两种情况: ①如果缓冲区为空,当有一组数据到来且此数据的大小小于缓冲区的空间大小时,直接将此数据放到缓冲区中。 ②如果发送数据的大小大于剩余缓冲区的空间,则只复制缓冲区大小的数据到缓冲区。 缓冲区满,该进程进行睡眠操作,直到缓冲区所有数据发送完毕,缓冲区再次为空,当前进程被唤醒,将此组用户数据的未发送部分复制到缓冲区,继续发送。 (2)copy_to_Tx_buf函数。此函数主要用于缓冲区正在发送且未发送完毕的情况,将新一组用户数据copy至缓冲区。首先计算缓冲区剩余空间,若剩余空间大于本组用户数据大小,则直接将用户数据全部copy至缓冲区;若剩余空间小于本组数据大小,则copy与剩余空间大小相同的用户数据至缓冲区。 写操作的具体流程如图1所示,首先用户数据从空间态转换到内核态,并设置相应的接收标志位。此后判断数据大小。若数据大于缓冲区空间,数据发生溢出,写操作结束;若没有溢出,为了保证进程间的数据,使得该进程获得自旋锁,此时判断缓冲区是否为空。根据上面两个函数的介绍,在不同情况下分别调用不同的函数,在数据写入环形缓冲区后,将数据发送到SPI的发送寄存器。当SPI发送寄存器发送数据时,环形缓冲区依旧接收数据,如果此时缓冲区为满,则释放自旋锁,并设置进程等待标志位(wait_Tx_done),将此进程休眠,直到发送寄存器中的数据发送完毕,再唤醒进程,判断数据是否全部发送完毕。若仍有数据等待发送,则调用copy_to_Tx_buf_int;若数据已全部发送完毕,则写操作结束。若缓冲区不为满,则判断数据是否发送完毕。数据全部发送完毕,发送操作结束。 2.3SPI读操作 读操作是连续读取主SPI发送到从SPI的接收缓冲区中的数据,并将其传送给用户空间。具体流程如图2所示。首先判断操作标志位spi_Rec_en,若此位为0,说明此时驱动正处于发送状态,则将发送进程等待标志位(wait_Tx_done)置1,读进程进入休眠状态即放入等待队列中,等待中断处理函数中相关发送程序唤醒。若操作标志位不为1,读进程首先获得自旋锁,判断数据大小。若数据大小不为0且不超过缓冲区大小,则按照S3C2440接收数据的要求,向SPI发送寄存器写入第一个dummy数据(0xff)。此后,将接收进程等待标志位(wait_Rec_done)置1,释放自旋锁,并将此进程加入等待队列进行休眠,直到用户要求的所有数据已发送至接收缓冲区后,由中断处理函数唤醒该进程,最后将接收区中的数据放到临时接收缓存中,以便于其他操作读取。 3SPI驱动程序测试 SPI驱动程序主要通过调用写操作,使SPI连续发送数据0x55,此后再调用SPI读操作,将MISO上的串行数据读入用户缓冲区,并与实际数据进行比较。图3为示波器测试MOSI引脚波形。图中波形1为SCK信号,ARM系统时钟为40MHz,SPI的SCK信号为系统时钟的256分频,约为156kHz;波形2为MOSI信号,SPI从低位向高位串行移位。通过波形可以看出,SPI驱动能够准确地完成读写操作,验证了其正确性。

    基础知识科普站 S3C2440 SPI arm9 Linux ARM

  • 详谈Linux系统之实时监控相关技术

    详谈Linux系统之实时监控相关技术

    万物互联和大数据技术的发展,让我们的生活更加活色生香,其背后离不开安全、稳定可靠的服务器系统。 这里我们主要是从系统日常行为安全的角度分享一种能满足线上部署、能够将进程或文件创建、网络连接、网络I/O、文件I/O、shell操作、数据库操作、telnet操作、http访问、系统调用(syscall)和系统资源信息等系统相关的行为信息实时采集和存储的Linux行为监控技术。 传统监控技术 现有系统行为监控的实现技术主要采用以下方法: 1.LinuxKprobes调试技术 Kprobes调试技术是一种专为Linux内核跟踪和调试而设计的特定API。Kprobes允许内核开发人员为任何内核指令以及函数入口和函数返回处理程序安装预处理程序和后处理程序,这些处理程序可以访问并更改寄存器。这样一来,内核开发者们就可以监控系统调用相关工作流程并簿记。利用Kprobes技术,内核开发人员可以在内核的绝大多数指定函数中动态地插入探测点来收集所需的调试状态信息;关于“调用了哪些系统”、“系统何时被调用”、“执行是否正确以及函数的入参和返回值是什么”等疑惑都可以轻松解决。此外,还能将这些信息屏幕输出或转储日志文件。 2.Linux内核的tracepoints(跟踪点)技术 内核的tracepoint是一种轻量级的hooks技术,使用高效的系统调用行为跟踪及相关性能计算,对系统本身的性能只有微小的时间损失和空间损失。通过注册syscall_enter_probe等定制的probe函数,在发生系统调用相关行为后,内核找到probe函数,并将参数等信息传递给probe函数。只要将probe函数中记录的相关行为信息输出,即可达到监控目的。 在现有的Linux系统行为监控工具中,采用LinuxKprobes调试技术、Linux内核的tracepoints(跟踪点)技术的工具有:strace、ftrace、tcpdump、lsof、htop、iftop、systemTap、perf…… 以上的工具通常只能作为日常内核开发调试或日常运维分析工具来使用,主要用于开发调试或问题定位等简单的信息输出。然而,这些工具存在一些使用缺陷,可以总结为以下几点: 1、仅适用于内核开发人员调试使用或是运维人员在现场开启使用,各工具特点不一,难以满足系统全面监控的需求。 2、没有提供行为数据的良好存储能力,只提供简单的输出或是日志存储。由于没有数据缓存功能,容易造成行为数据的丢包,不能很好地支撑事后数据回放或分析。 3、不能进行线上运行的实时部署,只能在事后或事中开启,无法满足运维或安全监控的自动化要求。在高吞吐、高并发的服务器上,增加了服务器运行的负担。 新型实时监控缓存技术方案 针对现有技术无法满足线上实时部署、影响服务器性能、行为数据不具备良好的存储和缓存功能等缺陷,我们给大家分享一种具备实时监控和缓存功能的技术方案。 该方案主要是采用分层结构的模型进行架构的,具体分为内核probe层、基于内存映射mmap技术的buffer层、基于本地数据库的用户态缓存层。具体结构如下图: 业务流程描述 下面通过一个具体的系统行为事件信息采集-缓存的例子,来说明这三层之间的业务流关系: 首先,当用户发起网络连接服务主机操作,在服务主机系统中将发生socketaccpet系统调用中断,服务进程陷入内核态,进入系统调用例程。 其次,通过Linux内核tracepoints机制,内核查找系统调用tracepoint的probe函数;此时,内核查到已经挂载的内核probe层的probe函数,并将相应accpet系统调用参数信息传入probe函数。 接下来,内核probe层的probe函数将传来的系统调用相关信息进行分类、序列化处理后,将相关参数信息转化为系统行为事件信息写入mmapbuffer层。 最后,用户态缓存层进程通过mmap映射技术,从mmapbuffer层读取具体的系统行为事件信息,将系统行为事件信息再次格式化为易于阅读和分析的字符串信息,并选择一种本地或分布式的缓存技术,持久化存储系统行为事件信息。 通过上述业务流程的分析,可以概括出上述三层主体功能分别为:内核probe层采集系统调用信息、mmapbuffer层转化系统行为事件信息、用户态缓存层持久化系统行为事件信息。如下图所示: 通过上文可以得知,本方案与目前现有工具或方案的主要区别在于本方案体现了以下两方面:实时性、缓存持久化。 实时性 “实时性”就是指系统操作行为(系统调用)信息能够实时感知,“零损耗”地对信息进行采集。 我们知道系统行为信息的采集是由“内核probe层”完成的,在该层中主要也是采用了Linux内核字符设备驱动技术+Linuxtracepoints机制。通过开发Linux内核字符设备驱动来驱动probe模块,在probe模块中挂载tracepoint函数,采集各系统调用的相关信息。 为了实现系统调用信息从内核probe层到用户态缓存层的“Zerocopy”高效传递,在probe层与用户态缓存层采用了Linux内核驱动与用户态进程实现地址共享的mmapbuffer技术方案。 缓存持久化 经过内核probe层采集的系统行为事件信息存放在mmapbuffer层中,为了实时高效地将这些事件信息持久化存储,本方案采用了一种开源高效的本地文件数据库引擎,该引擎占用资源少、无需安装和管理配置、数据吞吐率每秒可达上万条记录。这样轻型的持久化模块,可以通过“零损耗”的方式部署到线上服务器,而不占用服务器资源。 从mmapbuffer层中读取到系统行为事件信息,在用户态缓存层还可以根据具体业务的要求,做一些数据处理分析,如格式化、过滤等。最终存放到文件数据库中,从而实现系统行为事件信息的持久化缓存。

    基础知识科普站 操作系统 监控 Linux

  • 基于μC/0S一Ⅱ和LPC2129微控制器实现智能机器人控制系统的设计

    基于μC/0S一Ⅱ和LPC2129微控制器实现智能机器人控制系统的设计

    1 引言 轮式移动机器人是机器人研究领域的一项重要内容,它集机械、电子、检测技术与智能控制于一体,是一个典型的智能控制系统。智能机器人比赛集高科技、娱乐、竞技于一体,已成为国际上广泛开展的高技术对抗活动。现以ARM7处理器为控制核心,采用无线通信技术,并移植嵌入式实时操作系统μC/0S一Ⅱ设计了一套智能机器人控制系统。 2 硬件设计 根据竞技机器人的功能要求进行总体设计,将各个功能进行模块化,其控制系统硬件框图如图1所示。中央处理器采用微控制器结构,用以控制外围设备协调运行。舵机控制机器人的运动方向;驱动电机电动机采用输出轴配有光电编码器的小型直流电机驱动车轮旋转。电磁铁作为机械手夹紧的执行元件。设置了两路超声波传感器、8路光电检测输入和8路开关量检测接口。整个机器人的运行状态和运行参数通过LCD动态显示。 2.1 微控制器的选型 机器人要实现的动作和功能较多,需要多个传感器对外界进行检测,并实时控制机器人的位置、动作和运行状态。系统中的所有任务最终都挂在实时操作系统μC/0S一Ⅱ上运行,因此不仅要考虑微控制器的内部资源,还要看其可移植性和可扩展性。LPC2129是Philips公司生产的一款32位ARM7TDMI—S微处理器,嵌入256 KB高速Flash存储器,它采用3级流水线技术,同时进行取指、译码和执行,而且能够并行处理指令,提高CPU的运行速度。由于它的尺寸非常小,功耗极低,抗干扰能力强,适用于各种工业控制。2个32位定时计数器、6路PWM输出和47个通用I/0口,所以特别适用于对环境要求较低的工业控制和小型智能机器人系统。因此选用LPC2129为主控制器,可以获得设计结构简单、性能稳定的智能机器人控制系统。 2.2 无线通信接口设计 系统采用迅通公司生产的PTR2000无线通信数据收发模块。电路接口如图2所示。该模块基于NORDIC公司生产的射频器件nRF401开发,其特点是:①有两个频道可供选择,工作速率高达20 Kb/s;②接收发射合一,适合双工和单工通信,因而通信方式比较灵活;③体积小,所需外围元件少,接口电路简单,因此特别适合机器人小型化要求;④可直接接单片机串口模块,控制简单;⑤抗干扰能力强;⑥功耗小,通信稳定。 2.3 光电检测模块设计 2.3.1 光电检测过程 设计光电检测模块,使机器人能够检测地面上的白色引导线。光电检测电路主要包括发射部分和接收部分,其原理如图3所示。发射部分的波形调制采用了频率调制方法。由于发光二极管的响应速度快,其工作频率可达几兆赫兹或十几兆赫兹,而检测系统的调制频率在几十至几百千赫兹范围之内,因此能够满足要求。光源驱动主要负责将调制波形放大到足够的功率去驱动光源发光。光源采用红外发光二极管,工作频率较高,适合波形为方波的调制光发射。 接收部分采用光敏二极管接收调制光线,将光信号转变为电信号。这种电信号通常较微弱,需进行滤波和放大后才能进行处理。调制信号的放大采用交流放大形式,可以将调制光信号与背景光信号分离开来,为信号处理提供方便。调制信号处理部分对放大后的信号进行识别,判断被检测对象的特性。因此,该模块的本质是将“交流”的、有用的调制光信号从“直流”的、无用的背景光信号中分离出来,从而达到抗干扰的目的。 2.3.2 光电探头 在机器人底盘前部安装有光电探头,共设置了5个检测点,其结构如图4所示。 从理论上讲,检测点越多,越密,识别的准确性与可靠性越高。但是硬件的开销与软件的复杂程度也相应增加。采用该寻线系统保证了检测的精确度,也节约了硬件的开销。发光二极管发出的调制光经地面反射到光敏二极管。光敏二极管产生的光电流随反射光的强弱线性变化。检测出这种变化,即可判断某一个检测点是否在白色引导线的上方,从而判断机器人和白色引导线的相对位置。 2.4 超声波测距传感器设计与实现 两路超声波传感器用以控制机器人避开障碍物,并预测机器人相对目的地距离,起导航作用,其接收部分与微控制器的捕获和定时管脚相连接。整个超声波检测系统由超声波发射、超声波接收和单片机控制等部分组成。发射部分由高频振荡器、功率放大器及超声波换能器组成。经功率放大器放大后,通过超声波换能器发射超声波。 图5给出由数字集成电路构成的超声波振荡电路,振荡器产生的高频电压信号通过电容C2隔除掉了信号中的直流量并给超声波换能器MA40S2S。其工作过程:U1A和UlB产生与超声波频率相对应的高频电压信号,该信号通过反向器U1C变为标准方波信号,再经功率放大,C2隔除直流信号后加在超声波换能器MA40S2S进行超声波发射。如果超声波换能器长时间加直流电压,会使其特性明显变差,因此一般对交流电压进行隔除直流处理。U2A为74ALS00与非门,control_port(控制端口)引脚为控制口,当control_port为高电平时,超声波换能器发射超声波信号。 图6示出为超声波接收电路。超声波接收换能器采用MA40S2R,对换能器接收到的信号采用集成运算放大器LM324进行信号放大,经过三级放大后,通过电压比较器LM339将正弦信号转换为TTL脉冲信号。INT_Port与单片机中断管脚相连,当接收到中断信号后,单片机立即进入中断并对超声波信号进行处理和判断。 3 实时操作系统μC/OS—II的移植 μC/OS—II是一个嵌入式实时操作系统内核,包含了任务调度、任务管理、时间管理、内存管理和任务间的通信与同步等基本功能。μC/OS—II进行任务调度时,会把当前任务的CPU寄存器存放到该任务堆栈中,然后再从另一个任务堆栈中恢复原来的工作寄存器,继续运行另一个任务。 根据各个控制功能和微控制器的资源结构对任务进行划分,共划分为7个应用任务,其划分过程如图7所示。无线串行通信采用中断接收方式,保证数据接收的实时性。 μC/OS一Ⅱ任务的建立包括定义任务堆栈、设定任务优先级、初始化该任务要求的系统硬件及实现具体的控制过程等4部分。现以任务1为例,介绍应用任务的建立过程。 在嵌入式实时操作系统环境下开发实时应用程序,可使程序的设计和扩展变得容易,而且无需大的改动即可增加新的功能。通过将应用程序分割成若干独立的任务模块,可大大简化应用程序的设计过程;而且能快速、可靠地对实时性要求苛刻的事件。通过有效的系统服务、嵌入式实时操作系统,能使系统资源得到更好的利用。 4 调试运行 在机器人控制系统起动时,μC/OS一Ⅱ对堆栈空间、各个控制寄存器和外设器件的硬件进行初始化,并设定当前各个功能部件的初始状态。 在实时机器人系统下,机器人正常启动后,系统实时监视机器人在比赛场上的运行状况,若出现某一动作或功能无效则给出出错信息。正常运行时实时显示机器人在比赛场上的坐标值和动作状态,如图8所示。 5 结语 根据智能机器人的控制要求,设计了基于无线通信的嵌入式机器人控制系统。在软件设计上移植了嵌入式实时操作系统μC/OS一Ⅱ。利用光电检测模块和超声波导航模块感知外部信息,实现了对智能机器人的控制。

    基础知识科普站 无线通信 微控制器 机器人 嵌入式 控制系统

  • 基于S3C4480处理器和μC/OS-Ⅱ实现机器人控制系统的设计

    基于S3C4480处理器和μC/OS-Ⅱ实现机器人控制系统的设计

    移动机器人是一种能够感知外部环境,在有障碍物的环境中能够实现动态决策与规划,从而完成避障等多种功能的综合系统。机器人系统通常分为机构本体和控制系统两部分,控制系统的作用是根据用户的指令对机构本体进行操作和控制。随着机器人的智能化水平越来越高,控制器要有方便、灵活的操作方式,以及多种形式的控制方式和高度可靠性,还要有很高的实时性。 为了保证系统的实时性,简化控制系统软件的设计,有必要在控制系统引入嵌入式操作系统。本设计将嵌入式技术与机器人技术相结合,利用ARM作为硬件平台并移人μC/OS-Ⅱ嵌入式实时操作系统,开发了具有多线程、多任务管理的控制终端。嵌入式主控制器ARM是整个机器人控制系统的核心,主要完成环境感知、组织管理、总体任务分配。嵌入式主控器作为机器人的运算层,一方面作为控制上位机,可以通过串口与下位机伺服控制系统通信,从而完成机器人的运动控制;另一方面还提供了与遥控操作端或用户端的无线通信接口。本文设计的机器人控制系统可应用于日常生活、足球机器人以及其他科学探索领域。 1 系统组织架构与硬件设计 设计时考虑到机器人在体积、质量等方面的限制,以及要满足功耗低,实时性高,性能优越的特点,选择合适的软硬件结构及有效的控制模式是整个设计过程的关键。 1.1 系统总体架构 整个机器人控制系统由嵌入式主控制器、伺服控制模块、无线通信模块和传感检测模块组成。控制系统的总体架构如图1所示。 按功能划分,该控制系统分为上下两层。由实现任务管理、运动轨迹生成、定位的上层控制系统,以及完成机器人伺服控制、传感器信息采集的下层控制系统组成。上层控制系统是整个控制系统的核心控制层,它有两种控制实现方式:一种是独立运行模式,另一种是遥控或远程实时控制模式。独立运行模式有自己的运行参数,即上层控制系统根据激光雷达的信息传递到环境建模模块,产生环境地图并产生避障算法所需信息,控制器根据避障模块信息产生机器人本体速度和方向信息,传递到运动控制器。在运动控制底层程序定义了一系列程序,运动控制器通过解释上层控制系统传递过来的信息并执行相应程序,从而达到机器人控制的目的,实现实时避障。遥控器或远程实时控制模式是通过无线通信单元接收用户端或遥控端发出的命令,实现对机器人的实时控制。系统的控制实现方式如图2所示。 1.2 主控制模块 主控制模块采用SAMSUNG公司16/32位RISC处理器S3C4480作为控制器。S3C4480功耗低,有多种电源供电方式,有多种外部存储器访问,新的总线体系结构(SAMBA),速度可达132 MHz。主控模块使用Hynix公司的HY57V281620(SDRAM)以及SAM-SUNG公司的Nand-Flash芯片K9F2808U作为存储器。为了增大数据吞吐能力,选取了2片SDRAM构成32位地址宽度。S3C4480使用ARM7TDMI核,它满足μC/OS-Ⅱ正常运行的所有条件,设计时S3C4480移入μC/OS-Ⅱ操作系统,将加快处理器的应用和开发,而且还能提高系统的实时性。通过将系统的功能划分成按不同优先级调度的任务,实现对机器人的多任务控制,主控制模块中的路径规划任务采用栅格法。 1.3 激光雷达测距模块 激光雷达是一种工作在从红外线到紫外光谱段的雷达系统,相对于超声波、红外、摄像头等其他传感测距方法,激光雷达具有探测距离远,测量精度高,价格相对适中等优点。在本设计中使用德国施克公司的LMS291激光测量系统,基于飞行时间测量原理,180°扫描角度,可以设置三个保护区域,具有滤波功能,以消除障碍检测过程中激光雷达的测距噪声干扰。 LMS291激光雷达通过旋转镜面向各个方向发射脉冲激光,并由LMS291接收器接收反射光线。该激光雷达响应时间可固定为13 ms,发射角为几mrad的激光脉冲,通过测量发射脉冲与反射脉冲之间的时间延迟,并乘以光速,就可以测得障碍物的距离。时间测量通过图3所示的脉冲填充法求出。 如果计数值为N,则t=N△T=N/f,从而可得L=ct/2=cN/(2f),其中,f为时钟脉冲。 LMS291激光测量系统提供RS 232数据接口,本设计主控制器采用的是S3C44B0,由于它的LVTTL电路所定义的高、低电平信号为正逻辑,而RS 232标准采用负逻辑方式,两者间通信要进行电平转换,在设计时系统采用RS 232电平转换芯片MAX232ACPE实现串口的通信。 1.4 无线通信模块 无线通信模块利用从前端RF接收到的遥控端或用户端的信息通过串口发送到机器人,也可将机器人的信息通过无线通信模块发送出去。前端RF使用Chip-con公司生产的CC2420芯片,无线通信模块采用的微控制器为Microchip公司的PIC18LF4620。CC2420与PIC18LF4620都使用3.3 V作为工作电压,可以降低功耗,CC2420只需通过SI,SO,SCLK,CSn与PIC18LF4620的SPI接口进行连接。本设计中使用PIC18LF4620的RC6,RC7引脚作为RS 232的数据发送端与数据接收端。CC2420是一款较为通用的符合IEEE802.15.4的2.4 GHz ZigBee收发芯片,该芯片在集成了PHY层和部分MAC层的同时,还提供了许多硬件支持。 1.5 伺服控制模块 运动控制模块通过RS 232与主控制模块连接,主控制模块通过串行总线将期望速度、方向信息传送至运动控制器,运动控制器将信息处理后作为运动控制算法的输入量,运动控制算法得到以PWM形式表示的电机控制信息。为判断电机转速及运转方向,安装在电机上的光电编码器提供相位相差90°的两个通道的光码脉冲输出,光电编码器产生的两脉冲送入DSP的正交编码脉冲单元的QEP1,QEP2引脚,通过DSP的比较单元CAP1,CAP2捕捉,然后经译码单元产生内部4倍频后的脉冲信号CLK以及转向信号,将脉冲信号送入选定的计数器进行计数,计数方向由转向信号决定,通过读取选定通用定时器的计数值、脉冲数、计数方向可得到电机的转速、行程及方向为伺服控制提供反馈输入。没计使用TI公司的TMS320F2812作为控制驱动模块的控制器,该芯片产生的PWM信号并不能够直接驱动电机的执行,设计时使用TI公司的直流电机驱动芯片SN7S4410将PWM转换成可驱动电机的驱动信号。图4为移动机器人运动控制系统的原理图。 图4中电流传感器为霍尔元件电流传感器,将采集到的电机电流信息送入A/D转换接口,从而整个运动控制系统形成双闭环控制系统。运动控制器中运动控制算法采用PID算法,设定允许的误差为e0,设定如下关系: 当| e(k)|≤e0时,控制器不起作用; 当| e(k)|>e0时,可以得到控制器的输出为: PWM信号的宽度由时间管理器中定时器的周期寄存器和与该定时器相关的比较寄存器决定,经过PID处理后的控制器输出u(k)为脉冲的占空比,然后写入选定定时器的比较寄存器,比较寄存器与周期寄存器的比值即为PWM波形的占空比,从而实现电机转速的控制。 2 软件设计 该机器人控制系统的软件设计包括主控制模块、DSP运动控制器算法程序、PIC18LF4620的程序设计。PIC18LF4620的程序设计在这里不做介绍。 2.1 主控制模块程序设计 主控制模块软件设计是在μC/OS-Ⅱ平台上设计各硬件的驱动程序,创建和启动各项任务,创建信号量、消息邮箱、消息队列完成各任务间的通信。 针对S3C4480的硬件资源和编译器特性,移植时要对μC/OS一Ⅱ的三个源文件做修改: (1)OS_CPU.H头文件与编译器相关的数据类型重新修改; (2)OS_CPU_ A.S文件中修改处理器相关的4个汇编函数; (3)OS_ CPU.C文件中编写初始化任务的堆栈函数。 μC/OS-Ⅱ中程序是从main()函数开始执行,程序启动后跳转至主程序运行,调用ARMInit()初始化ARM系统,包括建立相关参数和变量,配置ARM处理器中断端口、设置中断并初始化各器件,然后调用OSInit()初始化μC/OS-Ⅱ操作系统,将操作系统的初始化与硬件的初始化分开来使得思路更清晰,便于调试。由于各任务之间要通过创建信号量、消息邮箱、消息队列来完成通信,该操作通过调用OSSemCreate(),OSMboxCreate(),OSQCreate()函数来完成,然后调用OSTaskCreate(void(*task)(void*pd),void*pda-ta,OS_STK*ptos,INT8U prio)函数创建各任务完成系统控制。最后调用函数OSStlart(),μC/OS-Ⅱ开始运行,执行任务。本系统设计时主要完成的任务有无线通信任务、命令解释任务、激光雷达信息处理任务。 2.2 伺服控制模块程序设计 伺服控制模块利用高速的DSP运动控制器与反馈信号组成闭环控制系统,DSP发送PWM波与方向信号控制直流电机的转速,通过速度反馈,DSP可实时读取当前速度,利用DSP中的控制程序根据速度读数控制PWM的占空比,从而实现闭环控制。主程序流程图如图5所示。 在DSP的事件管理器中,将其中一个定时器设定一个中断周期,每当定时器产生中断时,调用中断处理子程序获得电机的反馈速度。 3 结 语 根据新型激光雷达跟踪测量理论,开发研制了基于μC/OS-Ⅱ的机器人实时控制系统。该控制系统已成功用于实验室自主研制开发的足球机器人。性能测试表明,该机器人控制系统能够快速及时跟踪定位目标,并且能够通过无线通信模块与遥控端进行通信,完成指定操作指令。该控制系统采用的控制决策算法为PID,今后将致力于研究采用更为先进的算法。

    基础知识科普站 机器人 处理器 嵌入式 控制系统 S3C4480

  • 基于RTX51嵌入式实时操作系统实现PBJ-1嵌入式控制系统的设计

    基于RTX51嵌入式实时操作系统实现PBJ-1嵌入式控制系统的设计

    排爆机器人(EOD robot)是一种遥操作地面移动机器人,操作机主体一般是由一个机械手和一个可移动平台组成,主要用于拆除疑似爆炸物品,以减少作业现场人员伤亡,是军警部门必须装备的设施。目前国际上主要流行美国Remotec公司的Andros系列排爆机器人、法国Cybernetics公司研制的TRS200中型排爆机器人等。但是国外的排爆机器人价格过高,出现故障后维修特别不方便。因此国家863专家组已经将高性能排爆机器人的研发及国产化列入了重点支持的课题。 由于种种原因,目前的排爆机器人很多只采用PLC实现点动控制,功能有限且操作性较差。研究高性能控制器成为排爆、消防等各种遥操作地面移动机器人的共同课题。利用先进的嵌入式系统技术可以较好地解决这类问题。 本文概述了上海交通大学机器人研究所研制的新型遥控移动式排爆机器人PBJ-1的嵌入式控制系统(如图1所示),主要叙述基于RTX51嵌入式实时操作系统(RTOS)开发排爆机器人PBJ-1嵌入式控制系统固件的情况。利用嵌入式系统技术开发适合排爆等各类遥控地面移动机器人使用的嵌入式控制系统能够解决上述种种矛盾。 1 PBJ-1功能介绍 目前国际上比较流行的排爆机器人,都需要由经过专门培训的操作人员通过操作一组分别控制机械臂上各个关节驱动电机的按键控制,操作很不方便。操作人员需要根据现场的状况,判断出需要机械手执行的动作,再经过大脑的转换,手工控制机械臂各个关节顺序动作,使机械手爪拟合出一条空间轨迹以完成作业,大大降低了工作效率。这类排爆机器人一般都需要大量的摄像机,随时显示爆炸物相对机械手爪的位置,以便操作人员决定下一步动作。 新型排爆机器人PBJ-1为了使操作人员操作更加方便,在嵌入式控制器中嵌入了机器人运动学运算,能够实现机械臂的自主联动控制。操作者只要通过观看控制箱上面的显示器,直接操纵控制器命令机器人水平前、后或垂直上、下运动,机械臂可以实时进行机器人运动学运算和分解运动控制,控制机械手爪完成空间的直线拟合运动。这种操作方式略过了操作人员在大脑中进行动作转换的步骤,大大方便了排爆这一高危险性作业现场的作业。 为了方便现场操作,在其嵌入式控制器系统中还加入了机器人的一些半自主动作功能。例如当机器人完成作业后机械臂可以自动折叠归位;机械臂可以自动进入作业最佳操作姿态;当操作不当时,控制器可以自主取消操作人员发送的命令,以避免机械臂与车体之间的干涉碰撞等。 为防止爆炸物被恐怖分子遥控引爆,爆炸物品的拆除现场一般都要做电磁屏蔽处理,不能使用无线遥控型机器人,只能采用有缆遥操作移动机器人。由于爆炸物品的拆除作业危险性很大,所以对排爆机器人的有线通讯系统的可靠性要求很高。PBJ-1是通过RS-485协议实现相互之间远距离、高速、高可靠性通讯。 操作人员可以通过上位控制箱里的液晶显示器监视作业现场的状态;通过操作各种动作按钮及操纵杆控制机器人完成各种作业。控制箱有六组4位数显LED,分别显示机器人型号(PBJ1)、通讯状态(run或Err)、大小臂关节角、机器人及车体运动速度、机器人电源实时电压。这些都保证了操作人员可以全面了解机器人具体运行状态,顺利完成作业。 2 PBJ-1嵌入式控制系统设计 遥操作机器人由于工作于非结构环境中,实际期望运动轨迹未知,所以需要根据操作者的实时操作情况进行动态实时的目标位置生成及轨迹规划,并完成相应的运动控制。 由于这台新型排爆机器人功能增强,下位机微控制器需要实时完成机器人运动学及分解运动控制解算,并驱动各个接口器件实时控制机器人运动,还要保证上、下位机之间的正常通讯连接,及时、迅速、高可靠性地响应上位机经过处理的数据并且上传机器人本体的各种状态信息,负担很重。因此如何合理地进行系统固件程序设计成为决定该机器人实际运行效果的关键。 要实现上面所述的功能,微控制器的应用必须能够同时进行多任务或工作的执行。对此,传统的基于单任务顺序循环机制的程序设计方法难以胜任,如图2所示。因此,需要找到一种新的合适的控制器设计方法。由于微控制器系统功能通常可以分解为多个相对独立的模块,将这些模块理解为任务,从而可以引入多任务机制进行管理。引入多任务机制后,可以有效地改善程序结构,满足应用系统复杂的定时要求。在多任务机制下,CPU的运行时间被划分成许多小的时间片,由某种调度算法按不同的优先级别分配给不同的任务。多个任务分别在各自的时间片内访问CPU,从而产生了微观上轮流运行、宏观上并行运行的多任务效果,如图3所示。 在多任务嵌入式系统中,合理的任务调度必不可少。单纯通过提高处理器速度无法达到目的,这样就要求嵌入式系统的软件必须具有多任务调度能力。因此必须基于多任务实时操作系统进行嵌入式系统固件开发。 实时操作系统的首要任务是调度一切可利用的资源完成实时控制任务;其次才着眼于提高计算机系统的使用效率。其重要特点是通过任务调度对重要事件在规定的时间内作出正确的响应。实时操作系统既能保证对外界的信息以足够快的速度进行相应处理,又能并行运行多个任务,具有实时性和并行性的特点,因此能很好地完成对多个信息的实时测量、处理并进行相应的多个实时控制。 PBJ-1上下位机嵌入式控制器都是以业界经典51内核增强型单片机AT89C55WD为核心;基于嵌入式实时操作系统RTX51Tiny开发固件程序。通过提供必不可少的系统服务,如信号量管理、消息队列、延时等,实时内核使CPU的利用更为有效。 2.1 RTX51简介 RTX51是德国Keil公司开发的一种应用于MCS51系列单片机功能强大的、可用于目前世界上所有由Intel 8051标准内核派生出的350多种增强微控制器的实时操作系统。使用RTX51可实现程序按时间片轮转和抢先的任务调度,并且支持事件和信号驱动。 RTX51有两个版本:RTX51Full和RTX51Tiny。RTX51Full允许4个优先权任务的循环和切换,并且能够并行地利用中断功能。RTX51Full可以从内存池中申请和释放内存,同时可以强制一个任务停止执行等待一个中断,或者是其它中断传来的信号量或者消息。RTX51Tiny短小精悍,是RTX51Full的一个子集,只占用900字节ROM、7字节DATA型及3倍于任务数量的IDATA型RAM空间,可以很容易地运行在没有扩展外部存储器的单片机系统上。使用RTX51Tiny的程序可以访问外部存储器,允许循环任务切换,并且支持信号传递,还能并行地利用中断功能。RTX51Tiny 允许“准并行”同时执行几个任务。每一个任务在预先定义好的时间片内得以执行。时间到使正在执行的任务挂起,并使另一个任务开始执行。最新的RTX51Tiny2.0重新调整了内核结构,使用更灵活、执行更快、占用的资源更少,另外还增加了几个新的特性。 RTX51Tiny内核完全集成在Keil C51编译器中,以系统函数调用的方式运行,因此可以很容易地使用Keil C51语言编写和编译一个多任务程序,并嵌入到实际应用系统中。内核主要提供以下函数供应用程序引用,见表1。 RTX51Tiny的用户任务具有表2所列的几个状态,它们如图4所示进行切换。 为了保证任务在执行顺序上的协调,必须采用同步机制。内核用以下事件进行任务间的通信和同步: (1)SIGNAL:用于任务之间通讯的位,可以用系统函数进行置位或清除。如果一个任务调用了os_wait函数等待SIGNAL而SIGNAL未置位,则该任务被挂起直到SIGNAL置位,才返回到READY状态,并可被再次执行。 (2)TIMEOUT:由os_wait函数开始的时间延时,其持续时间可由定时节拍数确定。带有TIMEOUT值调用os_wait函数的任务将被挂起,直到延时结束,才返回到READY状态,并可被再次执行。 (3)INTERVAL:由os_wait函数开始的时间间隔,其持续时间可由定时节拍数确定。带有INTERVAL值调用os_wait函数的任务将被挂起,直到间隔时间结束,才返回到READY状态,并可被再次执行。与TIMEOUT不同的是,任务的节拍计数器不复位。 RTX51Tiny采用微控制器(51)内部定时器T0来产生定时节拍,各任务只在各自分配的定时节拍数(时间片)内执行。当时间片用完后,切换至下一任务运行,因此各任务是并发执行的。RTX51Tiny调度程序定义这些任务按照下面的规则运行: (1)如果出现以下情况,当前运行任务中断: ①任务调用os_wait函数并且指定事件没有发生。 ②任务运行时间超过定义的时间片轮转超时时间。 (2)如果出现以下情况,则开始另一个任务: ①没有其他的任务运行。 ②将要开始的任务处READY或TIME-OUT状态。 图4 RTX51任务切换图 2.2 嵌入式操作系统的特殊问题处理 在RTX51 下进行多任务编程与传统的顺序循环单任务编程相比有以下几个值得注意的不同点: (1)多任务编程CPU 是轮流执行每个任务,可以将每个任务设计成死循环的模式,不断重复地进行数据计算或者访问硬件,不会影响别的任务的执行。当一个任务的数据计算完成后,可以通过os_wait 函数将CPU 交出执行别的任务。而单任务模式却独占了所有的CPU 资源,时常要担心是否执行时间太长而不能及时响应外部的异步事件。 (2)多任务编程有一个缺点,即资源冲突和重入问题。所谓资源冲突就是任务A在访问某个资源时,恰好发生了任务切换,任务B也访问这个资源,且改变了它的状态,这样当再次执行任务A时就可能发生冲突或带来不确定性。而所谓重入是指假设任务A在运行某个函数,发生任务切换后,任务B也运行这个函数,这样就会破坏任务A执行这个函数的现场,从而可能导致任务A执行函数时结果不正确。这种问题尤其容易出现在串行接口器件的操作中,例如串口、串行的A/D、D/A器件等。 在本嵌入式机器人控制器开发过程中,采用这种处理办法:将对每个独立的硬件(例如串行通讯)进行操作的驱动程序段放在一个任务中,也就是说要想对某个设备资源进行操作,只有依靠执行相应的任务来实现。这样无论何时切换任务,都不会对任何独立的“外设”造成影响。这样做彻底避免了资源冲突和重入问题而且利于系统维护与升级。各个任务之间要实现通信,可以调用os_send_signal函数及全局变量。 在嵌入式控制系统开发中借鉴了Windows消息驱动的思想,使部分不需要始终执行的任务处于等待信号状态,这样它们不会占用资源。只有当需要进行相应处理时通过需要它们运行的任务发送给它们SIGNAL,它们才会进入RUNNING任务队列中,得到执行。相关的系统函数为: os_wait (K_SIG, 0, 0); //等待信号 os_send_signal (Task_ID);//向Task_ID任务发送一个信号。 这样的处理,可以使微控制器在有限的资源下集中精力处理好耗时且重要的事情。 2.3 排爆机器人嵌入式控制系统固件开发 上位机嵌入式控制器固件结构如图5所示。根据控制器要完成作业的独立性分割成几个任务片。图5表示了各任务之间的关系、与外设连接关系。整个系统被区分成三个层次。 减少上、下位机之间数据交换的次数及数据量有利于减少下位控制器中断机器人的运动控制转入通讯协议处理的几率,可以提高运动控制的质量。所以PBJ-1的通讯部分固件程序设计没有采用传统的定时向下位机传送输入设备的状态这种高通讯负担的方法,而是基于消息驱动的思想。通讯任务依靠输入设备检测任务执行的结果来决定是否激活、进入消息队列以实现控制器之间的通讯。这样只有当操作者实际改变了输入设备的状态,上位机才向下位机发送相应的信息。利用消息驱动思想来开发通讯程序十分方便、可靠,并且大大减少了通讯线路的负担。为了保证数据传输的高可靠性,每次数据交换都先经过握手以确保无误。下位机嵌入式控制器固件结构如图6所示。 图5 上位机嵌入式控制系统固件结构 图6 下位机嵌入式控制系统固件结构 由于有些任务不需要一直执行,例如机器人需要响应上位机的指令完成继电器的切换等,也将利用os_wait函数处理,使它们平时不进入RUNNING任务队列中,减少资源浪费。在下位机串口中断中利用isr_send_signal向该任务发送信号激活该任务,使得该要求得到执行。具体调用方法如下: isr_send_signal(Task_ID); //从一个中断发送一个信号到Task_ID任务。 通过Windows消息驱动的思想和RTX51 Tiny实时操作系统的配合,合理分配了系统的资源。下位机控制器“集中精力” 完成机器人运动学解算及分解运动控制运算这些相当耗时的任务,实时控制机械臂运动。 在微控制器固件开发中嵌入操作系统还大大提高了系统的稳定性。即使某个外设或任务出现故障,与之无关的任务一般不会受到影响,不像传统的顺序循环机制的程序设计方法中如果某一环节出现问题会立刻造成整个系统的崩溃。 实际整个系统的上下位机微控制器都是仅仅利用运行于22.1184MHz频率下的AT89C55WD 就很好地达到了预期目标。该系统在随意频繁地分别开关上下位机电源、受到较强电磁干扰、大功率电机频繁启动、制动造成系统电源电压波动较大等苛刻的运行测试中均表现出了非常高的稳定性与数据传输准确性。整个系统在运行中即使出现了通讯失败(人为切断通讯线路或部分电源),当故障排除后,上、下位机可以迅速自动恢复正常的通讯状态没有出现误动作。 为新型排爆机器人PBJ-1先后开发了两套控制器固件程序,采用完全一样的硬件平台。一套是基于传统的顺序循环机制,开始效果不理想,后来借鉴消息驱动思想改进程序架构才满足了要求。开发过程中花费了不少时间来调试。另一套就是本文所述的基于RTX51 Tiny嵌入式实时操作系统开发的,实际运行效果相当好,但是花费的时间很少,而且很容易增加新的功能。 实践表明, 在系统复杂、对实时性和精度要求比较严格,并且需要并行处理的任务较多的运动控制系统中,使用RTX51Tiny是一个较好的解决办法。此外,使用RTX51Tiny实时操作系统,会加快嵌入式控制系统的开发速度,降低软件编写的复杂度,提高产品的开发效率。维护和功能扩展都非常方便。

    基础知识科普站 操作系统 嵌入式 控制系统 上位机 下位机

  • 央视曝光:我国沿海多地渔民捞到境外间谍装置

    央视曝光:我国沿海多地渔民捞到境外间谍装置

    4月15日是全民国家安全教育日,提起国家安全,如果你的脑海中浮现的还只是“抓间谍”的场景,那么你就太out了。现如今,凡是可能涉及一国政治、社会稳定和有序发展的因素,都已纳入了国家安全范畴。今天,我们就来了解一下海洋安全。 前段时间,我国一些沿海渔民频频向记者反映,他们在出海捕鱼时,经常会捞到一些长相奇怪的不明物体,有的像一只小船,有的像一个圆球,还有的像一罐氧气瓶……随后,记者实地采访了江苏、浙江、海南等地渔民。 据一名渔民介绍,他捞到的像小船一样的不明物体,长度大概在3米左右,全身几乎都是黑色的。“小船”的上面布满了先进的太阳能电池板,并且还竖立着3根天线;两边则带有翅膀,后面还配有1个螺旋桨。 为了弄清这些不明物体到底是什么,记者带着这只“小船”找到了中国水声工程方面专家唐建生博士。 (央视新闻视频截图) 经专家鉴定,该不明物体是境外国家投放的一种窃密装置。 据唐建生介绍,该装置实际上就是波浪滑翔机,是近年来出现的一种新型海洋无人潜航器,主要由水面艇、挂缆、水下驱动单元三个部分组成。 (央视新闻视频截图) 从工作原理的角度看,该无人潜航器是通过波浪的起伏来提供动力向前行进的,再通过太阳能为仪器的数据采集、通信、定位等功能提供能量的。由于里面搭载了较多的传感器、定位装置,以及无线电通信装置,所以它可以测量好多海洋的环境参数,并能长时间在我国周边海域持续地工作、持续地搜集海洋环境信息。 “可以确定地说,该无人潜航器并不是我国制造和使用的装备,而是境外国家在我国海域秘密投放的窃密装置,性能先进,功能强大,能够实现侦察和情报搜集任务。”唐建生表示。 (央视新闻视频截图) 根据公开资料显示,无人潜航器其实就是一种无人驾驶,通过自主控制或遥控方式在水下航行,可代替潜水员或小型潜艇执行深海探测、救生、侦察、排雷等高危险性水下任务的智能化系统。一般来说,军用无人潜航器根据排水量大小可分为便携式、轻型、大型、超大型四类。目前,国际上研发使用无人潜航器的主要国家有美国、德国、俄罗斯、英国、法国等。 据21ic家了解,早期的无人潜航器主要应用于民用领域,代替潜水员执行沉船打捞、深水勘探、水下电缆铺设等作业。近年来,随着无人潜航器技术的日趋成熟,其在军事领域的重要价值越来越受到各国海军重视。现如今,军用无人潜航器的用途可以用“神通广大”来形容了。它不仅能够执行搜救、情报收集、监视和侦察等任务,还能作为一个武器平台,携带鱼雷或导弹,以隐蔽的方式进攻敌方战略目标,出其不意,攻敌不备。 可以预见,无人潜航器未来可执行的任务将越来越复杂,它绝对能够成为未来海战的“杀手锏”。如果将无人潜航器投入实战的话,必将开创海洋战争的新篇章。 近年来,国家安全面临的国内外形势愈加严峻复杂,维护国家安全的任务也更加艰巨,海上安全防范是其中不可或缺的组成部分。随着国际局势日趋复杂多变,境外对我国沿海地区实施的间谍窃密活动屡见不鲜。然而,有些国家却把深水探测器扔到了我们家门口,这种小偷的窥视行为,我们绝对不能允许!

    芯鲜事 AI 窃密装置 无人潜航器 波浪滑翔机

  • 4.3寸TFT的MSP430程序

    4.3寸TFT的MSP430程序

    一、TFT简介 TFT(触摸屏)Thin Film Transistor (薄膜场效应晶体管),是指液晶显示器上的每一液晶象素点都是由集成在其后的薄膜晶体管来驱动,从而可以做到高速度高亮度高对比度显示屏幕信息, TFT触摸屏薄膜晶体管液晶显示器,是多数液晶显示器的一种在众多的平板显示器激烈竞争中,TFT触摸屏能够脱颖而出,成为新一代的主流显示器决不是偶然的,是人类科技发展和思维模式发展的必然。液晶先后避开了困难的发光问题,利用液晶作为光阀的优良特性把发光显示器件分解成两部分,即光源和对光源的控制。作为光源,无论从发光效率、全彩色,还是寿命,都已取得了辉煌的成果,而且还在不断深化之中。LCD发明以来,背光源在不断地进步,由单色到彩色,由厚到薄,由侧置荧光灯式到平板荧光灯式。在发光光源方面取得的最新成果都会为TFT触摸屏提供新的背光源。随着光源科技的进步,会有更新的更好的光源出现并为TFT触摸屏所应用。余下的就是对光源的控制,把半导体大规模集成电路的技术和工艺移植过来,研制成功了薄膜晶体管(TFT)生产工艺,实现了对液晶光阀的矩阵寻址控制,解决了液晶显示器的光阀和控制器的配合,从而使液晶显示的优势得以实现。 应用领域:要应用于计算机、视频终端、通讯及仪器仪表等行业。主要应用领域有笔记本电脑、台式计算机监视器、工作站、工业监视器、全球卫星定位系统(GPS)、个人数据处理、游戏机、可视电话、便携式VCD、DVD及其它一些便携装置。 二、TFT基本驱动 4.3寸TFT(Thin-Film Transistor)的读写时序和1.8、2.4大小的几乎一样(毋宁说就是一样)。 数据写入模式可在16位和8位数据位选择。 MSP430使用首先配置引脚的输入输出方向,进而分配引脚。 时序控制引脚的分配 LCD_RS_H时数据写入,LCD_RS_L时命令写入。 void LCD_Writ_Bus(unsigned int VH,unsigned int VL) //并行数据写入函数 { LCD_CMDOUT; LCD_DataH_Out; LCD_DataL_Out; LCD_CS_L; //LCD_RS_H; //RS=1;高写数据 LCD_WR_L; DataH_OUT = VH; DataL_OUT = VL; LCD_WR_H; LCD_CS_H; } void LCD_WR_DATA8(unsigned int VH,unsigned int VL) //发送数据-8位参数 { LCD_RS_H; //RS=1;高写数据 LCD_Writ_Bus(VH,VL); } void LCD_WR_Data(unsigned int da) { LCD_RS_H; //RS=1;高写数据 LCD_Writ_Bus(da>>8,da); } void LCD_WR_REG(unsigned int da) { LCD_RS_L; //RS=0;低写命令 LCD_Writ_Bus(da>>8,da); } LCD驱动芯片采用SSD1960,对照其Datasheet操作相关寄存器。 //初始化函数 void TFT_Init(void) { LCD_WR_REG(0x00E2); //PLL multiplier, set PLL clock to 120M LCD_WR_Data(0x0023); //N=0x36 for 6.5M, 0x23 for 10M crystal LCD_WR_Data(0x0002); LCD_WR_Data(0x0004); LCD_WR_REG(0x00E0); //PLL enable LCD_WR_Data(0x0001); delay_time(1); LCD_WR_REG(0x00E0); LCD_WR_Data(0x0003); delay_time(5); LCD_WR_REG(0x0001); // software reset delay_time(5); LCD_WR_REG(0x00E6); //PLL setting for PCLK, depends on resolution LCD_WR_Data(0x0001); LCD_WR_Data(0x0033); LCD_WR_Data(0x0032); LCD_WR_REG(0x00B0); //LCD SPECIFICATION LCD_WR_Data(0x0018); LCD_WR_Data(0x0000); LCD_WR_Data((HDP>>8)&0X00FF); //Set HDP LCD_WR_Data(HDP&0X00FF); LCD_WR_Data((VDP>>8)&0X00FF); //Set VDP LCD_WR_Data(VDP&0X00FF); LCD_WR_Data(0x0000); LCD_WR_REG(0x00B4); //HSYNC LCD_WR_Data((HT>>8)&0X00FF); //Set HT LCD_WR_Data(HT&0X00FF); LCD_WR_Data((HPS>>8)&0X00FF); //Set HPS LCD_WR_Data(HPS&0X00FF); LCD_WR_Data(HPW); //Set HPW LCD_WR_Data((LPS>>8)&0X00FF); //Set HPS LCD_WR_Data(LPS&0X00FF); LCD_WR_Data(0x0000); LCD_WR_REG(0x00B6); //VSYNC LCD_WR_Data((VT>>8)&0X00FF); //Set VT LCD_WR_Data(VT&0X00FF); LCD_WR_Data((VPS>>8)&0X00FF); //Set VPS LCD_WR_Data(VPS&0X00FF); LCD_WR_Data(VPW); //Set VPW LCD_WR_Data((FPS>>8)&0X00FF); //Set FPS LCD_WR_Data(FPS&0X00FF); LCD_WR_REG(0x00F0); //pixel data interface LCD_WR_Data(0x0003); LCD_WR_REG(0x0021); //进入图形颜色翻转模式 LCD_WR_REG(0x00BC); //重要Set the image post processor LCD_WR_Data(0x0080); //对比度Set the contrast value LCD_WR_Data(0x0080); //亮度Set the brightness value LCD_WR_Data(0x0080); //饱和度值Set the saturation value LCD_WR_Data(0x0001); //处理机允许Post Processor Enable delay_time(5); TFT_CLEAR(0X07FF); //GBLUE LCD_WR_REG(0x0029); //display on } void TFT_CLEAR(uint color) { unsigned int l=480,w; LCD_WR_REG(0x002A); LCD_WR_Data(0); LCD_WR_Data(0); LCD_WR_Data(HDP>>8); LCD_WR_Data(HDP&0x00ff); LCD_WR_REG(0x002B); LCD_WR_Data(0); LCD_WR_Data(0); LCD_WR_Data(VDP>>8); LCD_WR_Data(VDP&0x00ff); LCD_WR_REG(0x002C); while(l--) { for(w=0;w<272;w++) LCD_WR_Data(color); } }

    基础知识科普站 驱动 MSP430 3寸TFT

  • 单片机在GPS和CDMA计时系统中的设计

    单片机在GPS和CDMA计时系统中的设计

    摘要介绍了一种基于MSP430单片机的GPS和CDMA双接收计时系统的设计思路与方法,并给出了系统的硬件电路和软件流程。该系统采用GPS和CDMA时钟信号,其可以自动调整时间,同时还拥有多方位保障时间的精确性、一致性、高可靠性及环境适应性强的优势。 在可靠性、扩展性、控制功能以及体积、功耗等方面比其他电子产品具有优越性。在天文、地震台、航空航天等对时间精度较高的场合,以及国防、通信、电力、交通等要求高精度时间同步的领域,得到广泛应用。 1 系统硬件设计方案 1.1 系统总体设计 基于MSP430单片机的GPS和CDMA双接收计时系统,是传统钟表计时技术与现代时频、微电子、通讯、计算机等多项技术的结合,通过接收不同形式的时间码,经内置微处理器解码处理,自动校准计时器走时,使该系统显示时间与标准时间自动保持精确同步。除保留传统机械时钟计时特点外,还增加了LCD数字显示,双显示方式。接收GPS、CDMA信号,实现双系统联合精确定时,在接收到精确的时码后,经数据处理器处理,即可自动校正时钟的走时误差,使每只时钟的走时均受统一精确的时码控制,从而实现了高精度计量时间的一致性,同时也可手动校时、接收时间信号,系统硬件框图如图1所示。 图1 系统硬件框图 1.2 系统各部分的硬件设计 1.2.1 MSP430 MCU MSP430F5xx是德州仪器仪表推出的实现超低功耗MSP430 MCU系列产品。该系列针对峰值高达25 MHz的产品,实现业界最低的功耗,拥有更高的闪存与RAM存储器存储容量,以及射频(RF)、USB、加密和LCD接口等集成外设。MSP430F5xx MCU的工作功耗与待机功耗仅为160μA/Hz与1.5μA,系统能以较小功耗运行的同时可执行高强度的任务。可充分发挥高达25 MHz峰值执行性能,同时确保功耗仅为160μA/HMz。MCU采用16位精简指令,一个时钟周期可执行一条指令,运行速度可达25~30 MI·s-1,而传统51单片机6个或12个时钟周期可执行一条指令。以上特点确保了其可编制出高效率的源程序,用以满足电池供电超低功耗要求。 1.2.2 GPS接收模块 GPS模块是应用较广的一种导航、定位和定时的多功能系统,具有全天候、高精度、自动测量以及体积小、功耗低的特点,且技术成熟、价格低廉。 GPS模块为系统提供GPS定时、定位信息,设计采用u-blox公司的MAX-6Q,其具有以下特点:(1)精度高,抗干扰能力强。(2)启动时间短,冷启动只需26 s,热启动只需1 s。(3)串行接口有1UART、1DDC,可方便与MSP430F5xx的UART模块通信。(4)体积小,电压为3.3 V,与MSP430F5xx相同。(5)输出信息采用标准的NEMA-0183协议。 1.2.3 CDMA接收模块 CDMA无线通信模块从CDMA基站上获取标准的时间信号,CDMA校时系统信号稳定,不易受电源、外界无线电干扰,便于部署在任何有CDMA信号的地方。针对以上特性,在室内无卫星信号或GPS信号难于接收的地点使用,恰好解决了常见的GPS模块局限性问题。 CDMA接收模块采用华为MC323模块,MC323将基带、RF收发器、电源管理模块单元、功率放大器集成,功能全面、应用广泛。其电路框图如图2所示。 图2 MC323电路框图 2 系统软件设计方案 系统的软件部分主要负责设置GPS模块与MCU之间的串口通信1、CDMA模块与MCU之间的串口通信2、时间的显示及人机接口。其主要包括初始化、串口通信、数据处理、故障提示、显示、键盘处理及电源管理等部分,其中初始化包括MSP430中各种寄存器的配置、串口相关参数配置以及外围电路的初始化等。 2.1 系统软件双接收的整体方案 系统采用GPS和CDMA双模式接收,同时可定时进行自动接收,也可通过外部接收按键进行强制接收。软件优先接收GPS模块的数据信息,当GPS数据无效或无法采集到信号时,再接收CDMA数据。若GPS和CDMA接收的数据有效,则更新数据;若无效,则数据保持。系统双接收处理流程如图3所示。 图3 系统双接收处理流程图 2.2 GPS模块接收方案 GPS模块MAX-6Q通信采用串口通信1,包括数据发送、接收、校验、通信障碍提示等,数据处理主要有GPS接收数据的解码、存储和数据刷新等。MAX-6Q的数据输出为NMEA-0183格式,最大更新速率5 Hz,为保证数据传输的可靠性与实时性,并提高单片机的利用率,文中采用中断方式而非查询方式。 在中断处理程序中,将接收到的GPS数据放入数组中,通过读取数据包的前7 bit,可判断该数据包格式,系统只处理了NEMA中GPGGA和GPZDA两种格式的消息,并定义了两种相应的处理函数,其各函数功能如下: GPZDA()函数:提出UTC日期和时间。 GPRMC()函数:提出UTC日期、时间、经度和纬度信息。 通过GPS数据处理,误码的判断,刷新数据显示,其GPS处理流程如图4所示。 2.3 CDMA模块接收方案 CDMA模块MC323通信采用串口通信2,数据处理主要是CDMA接收数据的解码、存储和数据刷新等。 CDMA接收打开,CDMA模块进行初始化。MSP430F5xx打开串口2向CDMA模块MC323发出查询指令“AT^TIME”,若查询时间超过10 min,则自动退出查询。CDMA模块MC323收到“AT^TIME”查询指令后,向单片机返回时间信息,而单片机将对时间信息进行分析处理并将处理后的时间信息进行存储和更新,CDMA处理流程如图5所示。 3 结束语 根据GPS和CDMA的不同特点,采用两种接收模式联合定时,不仅在GPS接收正常时,能保证时间的高精度、一致性,且在GPS失效或室内GPS信号接收困难时,通过CDMA接收,同样保障了时间的精确性和一致性,且还具有可靠性高、环境适应性强的特点。本单片机采用MSP430,其不仅功耗低,且处理能力强,模拟技术性能高及片上外围技术丰富,故满足了低功耗高性能的要求。此外,性能还可满足高精度计时系统对时间精度性和实时性的要求,本设计不论在室外或室内均具有良好的接收、自动智能授时能力。其既可满足精度要求较高的天文、航空航天等系统,又可满足普通民用使用,还可应变特殊情况下的使用需求,因此拥有良好的应用前景。

    基础知识科普站 CDMA GPS 单片机 计时系统

  • 基于MSP430单片机的称重式液位仪的设计

    基于MSP430单片机的称重式液位仪的设计

    1 引言 液位测控仪是属于智能化仪器仪表的一种(指采用了微处理器的仪器仪表),其发展始于70年代[1]。它是一种集测量与控制于一体的智能化产品,适用于石油化工、冶金、电力、制药、环保等行业中各种介质的液位测量。本仪器主要针对罐体内液体进行测量并能计算其重量,适用于对各种液态物质进行静态和动态测量与监控,并具有超限报警和主-从站模式联网功能。 2 系统设计方案 2.1 液位传感器的选择 一般情况下在液位测量中所采用的传感器有:压力传感器、超声波传感器、浮子式传感器等,由于系统设计中要求在测量液位的同时还要实现液体重量的检测。在液罐内,液体重量P的检测可直接利用计算得到,即P=H*S*ρ(H为液体高度CM;S为圆面积M2;ρ为液体比重),因此只有提高液位测试的分辨率才能保证液体重量测试的精度,本系统中液位测试分辨率为1cm。另外,考虑到压力传感器接口电路相对采用超声波传感器的接口电路要简单,因此确定采用压力传感器。 2.2 MSP430单片机 MSP430单片机为低功耗16位单片机,具有典型的SOC特点,集成大量外设。尤其是其内部集成的波特率微调器,可以使MCU在不低于32768HZ的任意晶振(但不能超过MCU对晶振要求的上限)下工作时,其通信波特率的选择可不受波特率因子不能带有小数的限制,即:在波特率的允许范围内可使用任意频率的晶振[2] [3]。另外,由于MSP430 MCU内部集成了温度传感器,可以很方便的实现对测液位所用的压力传感器的温度补偿。而且MSP430系列单片机针对不同的应用而由各种不同的模块组成,这些微控制器被设计为可用电池工作,并且可以使用很长时间。 2.3 模拟信号转换技术 由于系统的执行部件为电磁阀,易产生电磁干扰,因此为能够可靠的工作必须要使系统具有较高的抗干扰性。 一种方法是直接利用MCU内部的A/D转换器,其特点是:无须外围电路,采样速度快,但抗干扰能力较差[4]。 另一种方法是使用V/F变换器来实现A/D转换。由于V/F变换是利用积分电容的电荷平衡原理实现电压频率转换,因此该方式稳定性好,分辨率高,信号线少,便于实现光电隔离以提高系统的抗干扰性,但转换速度相对较慢。 考虑到压力信号是一个缓变信号,一般无须快速采样,为使系统具有较高的抗干扰性,根据分析对比,选择采用V/F变换器来实现对压力信号的处理,计算处理较简单,在测量精度方面也能达到使用要求,并且易于做到实时控制。 3 系统总体组成结构及工作原理 如图1所示,整个系统由单片机主机系统、传感器信号处理电路、液位控制电路、声光报警、键盘、液晶显示、电源模块和通信等模块组成。P1口作为系统的数据线,V/F转换电路的输出信号作为中断请求信号接至MCU的P2.4脚,P2.6和P2.7为执行部件电磁阀的控制信号,分别控制进液、出液电磁阀。声光报警电路的控制信号为P2.5。键盘接口电路通过P3.0,P3.1和P3.2接入MCU用来控制系统的6个按键。系统通过P3.0和P3.3输出信号给74HC245用做LCD汉字液晶显示器的数据接口,P3.0和P3.3用做LCD的控制信号。P3.4和P3.5为MCU的串行通信数据线,经由通信电路与从机连接,用来进行主站、从站之间的串行通信。系统的电源模块产生3.3V、+5V和-5V电压,分别为主机系统和传感器接口电路提供稳定的工作电压。 图1 系统总体构成图 本系统通过压力传感器进行液体压力的数据采集,经过V/F转换模块进行液位高度和液体重量的标定,实现高精度的测量。当容器内的液位值超过了设定值或警戒值时,系统自动启动报警电路进行声光提示报警。用户可以通过键盘设定液位的上、下限值和进液、出液量等参数,以便使容器内液位保持设定的液位值。系统采用大屏幕液晶汉字显示,可以显示出当前液位值、设定的液位上下限值、容器内当前液体重量和进液、出液阀门的状态等。主站控制8个从站中的任意一个,并完成主站和从站的同步通信,主站具有该系统的所有功能,并且可以对从站中的液位上下限值等进行设置,主站在巡回检测时,可以任意设定要查询的从站数目、从站号和从站容器中的液位高度。当主站、从站中的液位超过警戒限时,主站可以进行声光报警并能显示报警的从站号。同时从站也可以依据通信协议通过通讯模块将从站号、液位值和报警信号传送给主站,并且从站可以接受主站的控制信息并能自动执行,还可以自动报警和解除报警。系统中从站号可以任意设定。同时该系统还可以实时显示工作环境的温度和时间。 4 系统的主要硬件电路设计 4.1 V/F转换电路设计 如图2所示,输入电压经射随器UD1A从LM331的7脚输入,电阻RD7 可以抵消6脚的偏流影响,从而减小频率误差,为了减少LM331的增益误差和由RD10、RD11、CD2引起的偏差,RD13选用51K电阻CD1为滤波电容。当6脚和7脚的RC时间常数相匹配时,输入电压的阶跃变化将引起输出频率的阶跃变化,如果CD3比CD1大的多那么输入电压的阶跃变化可引起输出频率的瞬间停止,6脚的电阻和电容可以差生滞后效应,以获得良好的线性度。 图2 V/F转换电路原理图 4.2液位检测及控制电路 系统通过压力传感器进行数据信号采集,采集到的信号经过运算放大器进行信号放大。放大后的信号送入V/F进行压频转换,将其输出的频率信号作为中断请求信号接至MCU的P2.4脚,由MCU对其进行处理后,将其转换成液位值,并根据液位设定值和上、下限值控制相应的电磁阀,使容器内液位高度与设定值保持一致。为便于电路的调试和观察,每个电磁阀都设有工作状态指示灯,表明当前是出液阀还是进液阀正在工作。其控制电路见图3。 图3 液位测量及控制电路 4.3 声光报警电路设计 声光报警电路由三极管、发光二极管、电阻、电容、蜂鸣器等组成,当所测到的液位值超过所设定的警戒值时,单片机发出报警信号,当收到报警信号后发光二极管OUT被点亮、蜂鸣器发出声音,产生声光报警。 5 系统软件设计 系统的软件采用模块化结构设计,分为六大块即:系统初始化模块、LCD显示模块、按键识别及处理模块、液位检测及控制模块、主从站通信模块。时间、工作环境温度检测模块。 系统通过初始化模块设置显示缓冲区、堆栈指针、操作标志和工作寄存器、各I/O端口的方向、系统定时器模块、通信模块、以及系统中断设置等。键盘模块负责按键的识别和按键处理,当有按键动作时调用相应的按键处理子程序进行处理。可实现对进出的液体量和上、下报警限进行设置,也可利用按键对各电磁阀进行手动控制。当液位超过警戒限时,调用液位检测及控制模块进行相应的控制,以使相应的电磁阀动作。在自动检测和自动控制的同时,将相关数据和控制参数,通过通信模块发送给主站。各从站在进行检测和控制的同时也在不断的侦听主站是否有命令或数据发送过来,如果有则立即处理。 6 结论 本仪器可广泛应用于测量水、油、酸类、酒类、饮料等的液位高度。可根据设定的上下两个极限液位,自动控制进液和排液,并具有多台联网功能。本仪器工作性能稳定可靠,体积小,测量及控制准确灵敏,安装使用方便,功耗低。目前已在一家食品企业中投入使用。 创新点 采用的16位单片机MSP430具有高性能低功耗的特点,是取代8位51系列单片机的较好选择。而且测量方法非常简洁且精度高、测试范围较广,具备称重功能和主-从站模式联网功能。

    基础知识科普站 单片机 MSP430 称重式液位仪

  • 基于MSP430的超低功耗空间定向测试仪设计

    基于MSP430的超低功耗空间定向测试仪设计

    0 引言 空间定向测试仪是一种应用非常广泛的电子测量仪器,尤其是伴随着微电子技术的发展,空间定向测试仪在车辆、舰船、飞行器等导航领域中的应用日趋成熟。本文所研究的空间定向测试技术主要是以MSP430单片机为基础的。因为MSP430系列单片机是一种16 位超低功耗、具有精简指令集(RISC)的混合信号处理器,它能针对实际应用需求,将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上。因此,笔者研究了如何用MSP430单片机控制各模块的接口电路,并且能够很好地应用于实际测量当中。 1 空间定向测试各硬件接口的设计 本文主要研究的是基于MSP430 单片机的空间定向测试仪,该仪器的工作原理是将方位信息接收器接收到的数据传输给MSP430 单片机的可读存储器中,然后在经过输出端显示到液晶屏上。在这一过程中,我们需要设计一个硬件接口电路,连接信息接收器和液晶显示器,而MSP430 单片机的读写控制则需要通过语言编程来完成。 基于MSP430 单片机的空间定向测试仪设计的基本思想是利用MSP430 单片机操控方便、接口简单、体积小、低能耗以及低成本等优点,将其作为嵌入式系统以便扩展空间定向测试仪的功能。由于空间定向测试仪的信息接收模块接口电路较少,但是应用范围非常广泛,因此需要设计多接口电路联接显示器、单片机等。此外,为了提高空间定向测试仪的数据处理和应用能力,需要实现PC 机与空间定向测试仪的串行通信。实现良好的人机对话,操作简单以及友好界面,有人性化的输入能力和显示能力。因此,其硬件接口模块设计如图1 所示。 MSP430 单片机是空间定向测试仪的核心部位,它不仅可以对整个仪器的内部软件模块进行协调处理,而且还能够对收集到的各种数据信息进行分类整理,计算出相应的数值。加速传感器主要使用的是ADXL203,ADXL203 是完整的高精度、低功耗、单轴/ 双轴加速度计,提供经过信号调理的电压输出,所有功能均集成于一个单芯片IC 中。这些器件的满量程加速度测量范围为±1.7 g,既可以测量动态加速度,也可以测量静态加速度。基于MSP430 单片机的空间定向测试仪的整个信号电路是对传感器的输出信号进行放大和滤波,电路的晶振频率是411.0592MHz,波特率是4800,此时设波特率的初始值为FFFAH.标定数据库主要是由AT24C16 存储器构成,其低压和标准电压为Vcc=1.8V-5.5V,拥有2048×8(4k)的存储空间,2 线串行总线,斯密特触发,噪声抑制滤波输入。Bi 方向传输协议,100kHz(1.8V,2.5V,2.7V)和400kHz(5V)兼容传输速率。硬件数据写保护引脚,8 位页写模式,允许局部页写操作,器件内部写周期最大10ms,高可靠性,1 万次的写周期,100 年的保存时间。在LCD 显示屏方面主要根据LCD 的串/ 并行数据接收模式,如果是低电平采用的是串行模式,如果是高电平则采用并行模式,此外,液晶显示屏设计为中心对称可以正反显示,方便读取数值。键盘部分采用的则是16 键盘,4×4 阵列,从PB 口低4 位引出列线,PC 低四位引出行线,然后通过电阻接+5V 电压。键盘的电源键负责开关机的控制,显示模式选择键则是控制测试仪的空间定向信息,测量方式选择键用于不同情况下方位测量的相互切换。保持按键则是将测量结果保持在显示器上方面读取。为了降低空间定向测试仪的功耗,MSP430 单片机可以根据实际情况增加高电平,发出键盘扫描信号,其他情况则可以采用能耗较低的低电平。 基于MSP430 单片机的空间定向测试仪的串行输入口和串行输出口分别与MSP430 单片机相连,主要负责接收方位信息接收器传输的各种信息。基于MSP430 单片机的空间定向测试仪供电电压范围是1.8 ~ 3.0V,该测试仪的硬件平台需要使用三种电压,内核的工作电压为1.8V,存储器和外部I/O 设备的工作电压为3.3V,系统平台的工作电压则为4.2V.该仪器所使用的是宽电平输出,通过转换器进行多电平输出,并且可以通过LM317 稳压器得到稳定电压。此外,复位电路的设计也是相当重要的一个环节,复位电路主要完成测试仪的上电复位和测试仪在运行过程中用户的按键复位功能。复位电路主要由简单的RC 复位电路组成,拥有可靠的逻辑复位功能。为了保证测试仪能够有效复位,需要选择合适的参数,调整复位状态的时间。对于S3C2410X,在测试仪上电后nRESET 端必须保持低电平至少有4 个MCLK 周期,两级非门电路用于按钮去抖动和波形整形;nRESET 端的输出状态与Reset 端相反,用于高电平复位。 2 空间定向测试各接口的软件设计 基于MSP430 单片机的空间定向测试仪的软件工作平台主要有内嵌式编辑器、编译器、汇编器、连接器、调试器以及函数库管理器。基于MSP430 单片机的空间定向测试仪的编程主要可以分为方位信息接收器数据输入的传统通信程序设计、LCD 数据显示输出的程序设计、下位机串口通信模块程序三大部分。 2.1 接收方位信息流程设计 接收方位信息的流程如下图2 所示。首先需要设置一个串口中断,串行控制寄存器RI 表示接收中断的标志位,当RI=1 时,说明空间定向测试仪接收到数据。然后将RI 至零,判断下一组数据的信息状态。将路径字母输入缓冲区中,判断该语句是否为A(电流数据),如果判断为A 就将所需要的语句输出到LCD 显示屏上,如果为V(电压数据),则不进行显示。 2.2 液晶显示流程设计 MSP430单片机通过中断接收主通信控制器发来的数据,并将接收到的数据送给LCD 显示。通信参数设置为波特率为1200bps,8 个数据位,CRC 校验。对接收到的数据汉字采用16*16 的点阵、字母和数字母采用8*16 的点阵显示。由于需要显示的汉字、字母和数字是固定的,所以采用直接固化显示字模到FLASH 中的方法。这种方法占用空间少,程序实现简单,显示速度快,适合字模数据库不大的情况。液晶显示程序流程如图4 所示。 2.3 下位机串口通信流程设计 首先调用初始化函数进行系统初始化,串口通信结构图如图5 所示。初始化完毕后,程序进入主循环。每次循环时,程序首先调用DoUart 处理串行通信接收缓冲区中的数据。处理完毕后,如果有需要发送给PC 机的数据,就调用SendUart 函数发送数据。如果串行通信模块收到数据,则CPU 退出低功耗模式,而进入串行接收中断程序。退出中断程序后,CPU 不再进入低功耗模式,并执行跳转语句,进行下一轮循环,再次调用DoUart 和SendUart 函数。若没收到数据,则CPU 会一直处于低功耗模式。 3 调试 IAR C-SPY 高级调试器与IAR Embedded Workbench的工作环节能够很好的匹配在一起,可以形成一个拥有较强功能的高级语言交互调试器,可以对汇编语言或者C 语言进修调试。能够设置断点,进修单步运行,并且支持如Stepin,Step over 等多种单步运行方式,可以观察寄存器以及内存的数值,查看变量。 在这里,笔者使用硬件仿真调试Flash EmulationTool 模式。主要通过JTAG 接口与MSP430单片机的硬件系统相连接,然后下载程序。MSP430单片机接外围电路并且模拟硬件系统的真实环境进行调试,验证应用程序是否有错误,同时检验目标系统的硬件设计是否足够完善。 4 结束语 综上所述,单片机是将计算机、微电子以及现代通讯融合在一起的高新技术,在工业控制以及测量领域的应用非常广泛。本文研究的MSP430 单片机的主要特点是可靠性高、操作简单、维护方便。基于MSP430 单片机的空间定向测试仪有超低的功耗,而且在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。因此在车辆、舰船、飞行器等导航领域中有着非常广泛的发展和应用前景。本文主要介绍了基于MSP430 单片机的空间定向测试仪的结构设计,对其硬件结构设计以及软件结构设计进行了细致的分析研究,从而能够满足实际应用对基于MSP430 单片机的空间定向测试仪在性能以及可靠性方面的需求,为基于MSP430 单片机的空间定向测试仪未来的发展提供更加广阔的空间。

    基础知识科普站 超低功耗 MSP430 空间定向测试仪

  • 意法半导体推出新款MasterGaN4器件,实现高达200瓦的高能效功率变换

    意法半导体推出新款MasterGaN4器件,实现高达200瓦的高能效功率变换

    中国,2021年4月15日——意法半导体的MasterGaN4*功率封装集成了两个对称的225mΩ RDS(on)、650V氮化镓(GaN)功率晶体管,以及优化的栅极驱动器和电路保护功能,可以简化高达200W的高能效电源变换应用的设计。 作为意法半导体MasterGaN系列的最新产品,MasterGaN4解决了复杂的栅极控制和电路布局难题,简化了宽带隙GaN功率半导体的应用设计。MasterGaN4的输入容许电压为3.3V-15V,可以直接连接到控制器,例如,霍尔效应传感器或微控制器、DSP处理器、FPGA可编程器件等CMOS芯片。 GaN晶体管开关性能出色,工作频率更高,能效更高,散热发热更少,设计人员可以选用尺寸更小的磁性组件和散热器,设计更小、更轻的电源、充电器和适配器。MasterGaN4非常适用于对称半桥拓扑以及软开关拓扑,例如,有源钳位反激式和有源钳位正激式变换器。 4.75V-9.5V的宽电源电压方便MasterGaN4连接到现有电源轨。内置保护功能包括栅极驱动器互锁、高低边欠压锁定(UVLO)以及过热保护,可进一步简化应用设计。还有一个专用的关断引脚。 作为这次产品发布的一部分,意法半导体还推出一个MasterGaN4原型开发板(EVALMASTERGAN4)。这块评估板提供使用单一或互补信号驱动MasterGaN4的全部功能,以及一个可调的死区时间发生器。用户可以灵活地施加一个单独输入信号或PWM信号,插入一个外部自举二极管,隔离逻辑器件和栅极驱动器电源轨,以及使用一个低边电流采样电阻设计峰值电流模式拓扑。 MasterGaN4现已投产,采用9mm x 9mm x 1mm GQFN封装,超过2mm的爬电距离确保在高压应用中的使用安全。

    意法半导体 意法半导体 功率变换 MasterGaN4

  • SEMI:中国大陆首次成为全球最大的半导体设备市场

    SEMI:中国大陆首次成为全球最大的半导体设备市场

    4月13日,国际半导体产业协会(SEMI)发布了《全球半导体设备市场统计(WWSEMS)报告》。该报告指出,2020年全球半导体设备销售额相比2019年的598亿美元激增19%,达到712亿美元,创历史新高。 从国家/地区的排名来看,中国大陆首次成为全球最大的半导体设备市场,销售额同比大增39%,达到187.2亿美元;中国台湾地区排名第二,销售额为171.5亿美元;排名第三的是韩国,其保持了61%的增长,达到160.8亿美元;而排名第四的日本,年度支出也增加了21%;再往下则是欧洲和北美。 各地区的年度账单(以十亿美元计),同比变化率(数据源自SEMI) 从细分市场来看,2020年全球晶圆加工设备的销售额增长了19%,而其他前端细分市场的销售额增长了4%。封装在所有地区均显示强劲增长,2020年市场增长34%,测试设备总销售额增长20%。 根据SEMI和日本半导体设备协会(SEAJ)成员提交的数据,该报告总结了全球半导体设备行业每月的帐单数字。设备类别包括晶圆加工、封装、测试,以及其他前端设备,包括掩模/标线片制造、晶圆制造和fab设施。

    芯鲜事 半导体 晶圆

  • 智能高效地检测、管理和响应安全威胁,亚马逊云科技中国区域上新云安全服务

    Amazon GuardDuty威胁检测服务和Amazon Security Hub安全事件统一管理平台近日在亚马逊云科技中国(宁夏)区域(由西云数据运营)和亚马逊云科技中国(北京)区域(由光环新网运营)正式上线,进一步完善了亚马逊云科技中国区域的云安全工具组合。Amazon GuardDuty可持续监控恶意活动或未经授权的行为,例如加密货币挖掘、从异常位置访问 Amazon Simple Storage Service (Amazon S3) 中存储的数据,或者在从未使用过的区域中进行基础设施部署等,帮助亚马逊云科技的客户保护其云上资源,包括账户、访问密钥、工作负载和存储在 Amazon S3 中的数据。Amazon Security Hub 可让客户统一管理安全事件并自动执行合规性检查。客户可以设置单个位置,对来自亚马逊云科技的服务(如 Amazon GuardDuty、Amazon Inspector 和 Amazon Macie),以及来自亚马逊云科技合作伙伴网络成员解决方案的安全警报或检测结果进行聚合、组织和设置优先级。 至此,亚马逊云科技中国区域进一步丰富了其安全工具组合,包括:身份认证及访问控制(如Amazon Identity & Access Management,Amazon Directory Service等),检测(如Amazon Security Hub 、Amazon GuardDuty等) ,数据保护(如Amazon Key Management Service)等。安全合规是亚马逊云科技在中国提供安全服务的第一考虑因素。亚马逊云科技中国区域已经通过了公安部信息安全等级保护三级认证,Amazon GuardDuty服务获得了计算机信息系统安全专用产品销售许可。 亚马逊云科技大中华区云服务产品管理总经理顾凡表示,“亚马逊云科技本着安全责任共担的原则,确保我们的云基础设施以及我们所提供的云服务本身的安全,同时帮助客户掌控云中安全,让他们拥有和控制自己的系统与数据。安全措施与安全威胁是一个不断赛跑的过程。希望Amazon GuardDuty、Amazon Security Hub在中国区域的上线,能帮助客户全面识别威胁、集中管理安全警报并做到快速响应。同时,我们也将不断努力,把更多亚马逊云科技全球领先的安全产品组合落地中国区域,让企业和机构无论规模大小都能够拥有一致的、比本地基础设施更加安全的云安全体验。” 为应对不断发展的安全威胁,Amazon GuardDuty为客户提供了经济高效的智能选项,可持续检测在亚马逊云科技中发生的威胁。此服务借助机器学习、异常检测和集成威胁情报等手段,识别潜在的威胁并确定优先级别。Amazon GuardDuty对来自多个亚马逊云科技数据源(例如 Amazon CloudTrail 事件日志、Amazon VPC 流日志, 域名系统服务(DNS) 日志和Amazon S3 数据事件日志)的数百亿事件进行分析,目前可以检测74种安全威胁,且这一数字还在不断增加中。Amazon GuardDuty只需在亚马逊云科技管理控制台中点击几下,就可以启用,而无需部署或维护任何软件或硬件。此外,通过集成Amazon Organizations 提供多账户支持,客户可以跨所有现有账户和新账户启用Amazon GuardDuty,将组织中各账户的发现结果聚合到一个 Amazon GuardDuty 管理员账户中,方便进行管理。 Amazon Security Hub安全事件统一管理平台让客户针对威胁及时响应,并自动执行合规性检查,同时不会影响用户的应用性能。借助 Amazon Security Hub,客户可以设置单个位置,对来自多个亚马逊云科技的服务(如 Amazon GuardDuty、Amazon Inspector 和 Amazon Macie),以及来自亚马逊云科技合作伙伴解决方案(包括防火墙、漏洞检测、端点安全、合规、MSSP等方面)的安全警报或检测结果进行聚合、组织和设置优先级。检测结果可在具有可操作图形和表格的集成控制面板上进行直观汇总。此外,Amazon Security Hub还可以进行合规检测,根据行业标准和最佳实践,如互联网安全中心 (CIS) 、Amazon Foundations Benchmark以及PCI-DSS等,运行自动化、持续的账户级配置与合规性检查。 FireEye 是一家领先的网络安全公司,将一流技术自动化与前沿的人员专业知识(包括业界公认的服务和国家级威胁情报)相结合,保护客户远离网络威胁。Fire Eye中国区销售总监Terry Tian 表示:“亚马逊云科技的Amazon GuardDuty通过内置的危胁情报可以检测多种危胁事件和活动,Mandiant Threat Intelligence产品也可集成到 Amazon GuardDuty中,客户通过简单的操作即可实现。“ 深圳市风林火山电脑技术有限公司(简称“风林火山”)专注于在线棋牌类游戏,集研发、运营于一体,产品在国内在线棋牌游戏中位居前列。传统威胁探测服务对海量日志数据进行分析耗时耗力,持续性合规以及不同安全时间的汇聚管理带来很大的挑战,风林火山利用Amazon GuardDuty与Amazon Security Hub全面提升安全效率。风林火山游戏运维工程师许华杰表示:“在人员不足的情况下,亚马逊云科技为我们安全赋能,实现高效的安全监测,及时协助我们安全响应,降低了安全风险,可以从更高视角去看我们整个架构的安全事件。”

    AWS 云安全 安全服务 亚马逊云科技

  • 日本巨头被微信、支付宝整凉凉了

    日本巨头被微信、支付宝整凉凉了

    随着银行线上业务的加速发展,ATM正在逐渐“失宠”。这一问题主要反映在两个方面:一是价格卖不上去,二是需求量不断下降。 在专家看来,ATM跌落神坛的主要原因是支付宝、微信等电子支付的流行。“ATM没撤,但交易量明显下滑。”这是银行员工的直观感受。 业内人士表示,现金只是在零售支付中的“存在感”减弱了,但刚需仍在,边远地区的人民、难以适应电子支付的老年人等仍需要使用现金。 与此同时,ATM行业的龙头们也在加快转型,比如开发智能综合柜台、远程视频柜员机、支持数字人民币等,努力搭上银行智慧网点转型的“快车”。 (资料图) 从30万元降到5万元上下,为何ATM价格在十年间有如此大幅度下滑?受访银行人士称,科技进步改变生产生活,十年前ATM还算高科技,还信用卡都要用它,但现在使用率明显降低了。 “ATM价格比十年前要低很多,有硬件成本整体下降的原因,而最根本原因其实还是供需两端的变化。”苏宁金融研究院研究员黄大智对记者分析称,七八年前是ATM的高光时刻,因为那时银行讲电子化、便利化,ATM的采购需求非常大,但风潮过后,尤其是2016年移动支付基本成熟后,减少了对现金的需求,ATM数量就开始走下坡路了。 2016年是ATM需求量出现萎缩的转折点。根据银行财报显示,从2016年底至2020年底,工农中建四大行ATM每年均减少超万台,其中农行缩减规模最大,其现金类自助设备数从12.98万台减至7.57万台,缩减幅度达40%。工行在2016年底时ATM机规模也曾超过10万台,至2020年末减至7.31万台,缩减幅度约27%。近五年,四大行ATM合计减少超8万台。 值得一提的是,日本OKI也于去年12月22日宣布,年内停止在中国销售ATM机,甚至制造业务也一并关闭。未来,其ATM机将在日本和越南两家工厂生产。 退出中国市场后,OKI将维护业务也交给了中国当地企业。按照官方说法,此举旨在缩减生产规模、降低成本。 根据公开资料显示,OKI中国工厂位于深圳,关闭ATM业务将遣散200多名员工。其于2002年进入中国市场,2014年产量达到峰值的5.6万台,然而去年在华销量暴跌至1000台。

    芯鲜事 支付宝 微信 电子支付 ATM OKI

  • 如何提高太阳能电池效率?太阳能电池电级材料有哪些?

    如何提高太阳能电池效率?太阳能电池电级材料有哪些?

    太阳能电池作为常用电池类型,在现代社会得到了进一步发展。同时,太阳能电池为我们的生活带来了诸多便利,如美团单车上面的太阳能电池,为定位续航提供了支持。为增进大家对太阳能电池的认识,本文将介绍提高太阳能电池效率的技术以及太阳能电池的电级材料。如果你对太阳能电池具有兴趣,不妨继续往下阅读哦。 一、如何提高太阳能电池效率 太阳能电池,是一种利用太阳光直接发电的光电半导体薄片,又称为“太阳能芯片”或“光电池”,它只要被满足一定照度条件的光照度,瞬间就可输出电压及在有回路的情况下产生电流。在物理学上称为太阳能光伏(Photovoltaic,缩写为PV),简称光伏。 太阳能电池是通过光电效应或者光化学效应直接把光能转化成电能的装置。以光伏效应工作的晶硅太阳能电池为主流,而以光化学效应工作的薄膜电池实施太阳能电池则还处于萌芽阶段。 我们所说的太阳能电池效率是什么意思?我们使用的每个设备都具有一定的效率。考虑一台每小时可生产10个气球的机器。在这十个气球中,有两个气球有孔或其他类型的缺陷。这意味着该机器的效率为80%,因为该机器吸收了生产10个气球所需的原材料,但仅将其中的80%转换为有用的输出。因此,设备的效率代表了提供给它的每单位输入所产生的有用输出量。 晶体硅太阳能电池的理论效率为25%(AMO1.0光谱条件下)。太阳能电池的理论效率与入射光能转变成电流之前的各种可能损耗的因素有关。其中,有些因素由太阳能电池的基本物理决定的,有些则与材料和工艺相关。从提高太阳能电池效率的原理上讲,应从以下几方面着手: 1、 减少太阳能电池薄膜光反射的损失 2、 降低PN结的正向电池(俗称太阳能电池暗电流) 3、 PN结的空间电荷区宽度减少,幷减少空间电荷区的复合中心。 4、 提高硅晶体中少数载流子寿命,即减少重金属杂质含量和其他可作为复合中心的杂质,晶体结构缺陷等。 5、 当采取太阳能电池硅晶体各区厚度和其他结构参数。 目前提高太阳能电池效率的主要措施如下,而各项措施的采用往往引导出相应的新的工艺技术。 (1) 选择长载流子寿命的高性能衬底硅晶体。 (2) 太阳能电池芯片表面制造绒面或倒金字塔多坑表面结构。电池芯片背面制作背面镜,以降低表面反射和构成良好的隔光机制。 (3) 合理设计发射结结构,以收集尽可能多的光生载流子。 (4) 采用高性能表面钝化膜,以降低表面复合速率。 (5) 采用深结结构,幷在金属接触处加强钝化。 (6) 合理的电极接触设计以达到低串联电阻等。 二、太阳能电池的电极材料有哪些 太阳能电池是通过光电效应或者光化学效应直接把光能转化成电能的装置。以光电效应工作 的菁膜式太阳能电池为主流,而以光化学效应工作的式太阳能民池则还处于萌芽阶段。太阳光照在半导体p-n结上,形成新的空穴由-电子对。在p-n结电场的作用下,空穴由n区流向p区,电子由p区流向n区,接通电路后就形成电流。这就是光电效应太阳能电池的工作原理。 太阳能电池按结晶状态可分为结晶系薄式和非结晶系膜式(以下表示为a-)两大类,而前者又分为单结晶形和多结晶形。 按材料可分类硅薄膜形、化合物半导体薄膜形和有机薄膜形,百化合物半导体薄膜形又分为 非结晶形(a-Si:H,a-Si:H:F,a-SixGel-x:H等)、ⅢV族(GaAs,InP)、ⅡⅥ族(cds系)和磷化锌(Zn3P2)等。插表列出了各类太阳能电池的分类和用途。 以上便是此次小编带来的“太阳能电池”相关内容,通过本文,希望大家对如何提高太阳能电池效率和太阳能电池电级材料具备一定的了解。如果你喜欢本文,不妨持续关注我们网站哦,小编将于后期带来更多精彩内容。最后,十分感谢大家的阅读,have a nice day!

    热点文章推荐(一) 太阳能电池 指数 电极材料

首页  上一页  1 2 3 4 5 6 7 8 9 10 下一页 尾页
发布文章