在深入了解Flash存储器的基础上,采用单片机自动检测存储器无效块。主要通过读取每一块的第1、第2页内容,判断该块的好坏,并给出具体的实现过程,以及部分关键的电路原理图和C语言程序代码。该设计最终实现单片机自动检测Flash坏块的功能,并通过读取ID号检测Flash的性能,同时该设计能够存储和读取1GB数据。 Abstract: On the basis of in-depth understanding the Flash chips,this paper designs a new program which using the SCM to detect the invalid block.Mainly through reading the data of the first and second page to detect the invalid block.Specific implementation procedure was given,and the key circuit schematic diagram and C language program code was introduced.This design achieved the function of using the MCU checks the invalid block finally,and increased the function by reading the ID number of Flash to get the performance of the memory.And the design also can write and read1GB data
上传时间: 2013-10-25
上传用户:taozhihua1314
前言 自从盛群半导体公司成立以来,即致力于单片机产品的设计与开发。虽然盛群半导体提供给客户各式各样的半导体器件,但其中单片机仍是盛群的主要关键产品,未来盛群半导体仍将继续扩展单片机产品系列完整性与功能性。通过长期累积的单片机研发经验与技术,盛群半导体能为各式各样的应用范围开发出高性能且低价位的单片机芯片。许多连接到外部感应器的重要应用需要处理模拟信号,所有的这些应用,在它们可以被单片机处理之前需要通过一个A/D转换器做模数信号的转换。为了满足这些需求,盛群开发出A/D系列的单片机,除了拥有I/O系列的所有特性和功能外,还含有集成的多通道A/D转换器,它的解析度和通道个数可调。而PWM功能和I2C接口,则进一步增加了A/D系列单片机的功能和应用的可行性。
上传时间: 2013-12-05
上传用户:waitingfy
自动转换开关电器(ATSE)是电源切换系统中出现的一种新型产品。它由1个(或几个)转换开关和其它电器组成,用于监测电源电路,在出现故障时,将负载电路从主电源自动转至备用电源的开关电器。它代表着电源切换系统发展的方向。近几年,我国的自动转换开关电器生产企业迅速增加,并制定了相应的国家标准。本文从CB级ATSE设计出发,以单片机为核心,从硬件和软件两方面详细论述了ATSE控制器的设计过程。
上传时间: 2013-11-01
上传用户:ydd3625
ICCAVR简介ICCAVR 是一种使用ANSI 标准C 语言来开发微控制器(MCU)程序的一个工具,它是一个综合了编辑器和工程管理器的集成工作环境(IDE)。源文件全部被组织到工程之中,文件的编辑和工程(project)的构筑也在IDE 的环境中完成。编译错误在状态窗口中显示,用鼠标单击编译错误时,光标会自动跳转到出错行。这个工程管理器还能直接产生INTEL HEX格式的烧写文件和可以在AVR Studio 中调试的COFF 格式的调试文件。这里特别要提一下ICCAVR 中的应用构筑向导,可以在Tools 栏中选择“ApplicationBiulder”或者直接点击快捷工具栏中的“Application Biulder”图标,就可以打开应用构筑向导对话框,可以根据需要设定芯片种类,各个端口初始值,是否使用定时器,中断,UART等,选好以后单击“OK”就可以得到所需的硬件初始化程序段,非常可靠而且方便。图1给出了初始化UART 的一个例子:下面介绍一下创建并编译一个工程文件的简要步骤:1.新建一个源文件从file 菜单中选择new,创建一个新文件,在改文件中输入源程序并进行编辑和修改,然后存盘,在存盘时必须指定文件类型,如命名为:try.c 。写一个新文件的步骤:首先用Biulder 初始化需要用到的硬件资源,生成初始化程序,然后再写需要的代码实现所要的功能。2.新建一个project从projrct 菜单中选择new 命令,IDE 会弹出一个对话框,在对话框中用户可以指定工程存放的文件夹和工程的名称。在建立一个新工程之后,在工程管理器的窗口会出现三个子目录,Files, Headers, Documents,这时就可以将要编译的文件添加到project 中了。3.把文件添加到工程中可以在project-files 里单击右键,选择需要添加的文件;也可以在编辑窗口中单击右键选择弹出窗口的“Add To Project”命令。4.编译源文件在编译之前特别要注意在Project Options 中选择与硬件相应的芯片。如本次实验就选择ATMEGA8515,如图2 所示。在project 中选择make project,也可以直接单击快捷键F9,这时要是有错则会弹出出错信息,修改调试正确以后单击快捷键ISP 就可以烧写到硬件中去了。
标签: ICCAVR
上传时间: 2013-10-25
上传用户:569342831
at91rm9200启动过程教程 系统上电,检测BMS,选择系统的启动方式,如果BMS为高电平,则系统从片内ROM启动。AT91RM9200的ROM上电后被映射到了0x0和0x100000处,在这两个地址处都可以访问到ROM。由于9200的ROM中固化了一个BOOTLOAER程序。所以PC从0X0处开始执行这个BOOTLOAER(准确的说应该是一级BOOTLOADER)。这个BOOTLOER依次完成以下步骤: 1、PLL SETUP,设置PLLB产生48M时钟频率提供给USB DEVICE。同时DEBUG USART也被初始化为48M的时钟频率; 2、相应模式下的堆栈设置; 3、检测主时钟源(Main oscillator); 4、中断控制器(AIC)的设置; 5、C 变量的初始化; 6、跳到主函数。 完成以上步骤后,我们可以认为BOOT过程结束,接下来的就是LOADER的过程,或者也可以认为是装载二级BOOTLOER。AT91RM9200按照DATAFLASH、EEPROM、连接在外部总线上的8位并行FLASH的顺序依次来找合法的BOOT程序。所谓合法的指的是在这些存储设备的开始地址处连续的存放的32个字节,也就是8条指令必须是跳转指令或者装载PC的指令,其实这样规定就是把这8条指令当作是异常向量表来处理。必须注意的是第6条指令要包含将要装载的映像的大小。关于如何计算和写这条指令可以参考用户手册。一旦合法的映像找到之后,则BOOT程序会把找到的映像搬到SRAM中去,所以映像的大小是非常有限的,不能超过16K-3K的大小。当BOOT程序完成了把合法的映像搬到SRAM的任务以后,接下来就进行存储器的REMAP,经过REMAP之后,SRAM从映设前的0X200000地址处被映设到了0X0地址并且程序从0X0处开始执行。而ROM这时只能在0X100000这个地址处看到了。至此9200就算完成了一种形式的启动过程。如果BOOT程序在以上所列的几种存储设备中找到合法的映像,则自动初始化DEBUG USART口和USB DEVICE口以准备从外部载入映像。对DEBUG口的初始化包括设置参数115200 8 N 1以及运行XMODEM协议。对USB DEVICE进行初始化以及运行DFU协议。现在用户可以从外部(假定为PC平台)载入你的映像了。在PC平台下,以WIN2000为例,你可以用超级终端来完成这个功能,但是还是要注意你的映像的大小不能超过13K。一旦正确从外部装载了映像,接下来的过程就是和前面一样重映设然后执行映像了。我们上面讲了BMS为高电平,AT91RM9200选择从片内的ROM启动的一个过程。如果BMS为低电平,则AT91RM9200会从片外的FLASH启动,这时片外的FLASH的起始地址就是0X0了,接下来的过程和片内启动的过程是一样的,只不过这时就需要自己写启动代码了,至于怎么写,大致的内容和ROM的BOOT差不多,不同的硬件设计可能有不一样的地方,但基本的都是一样的。由于片外FLASH可以设计的大,所以这里编写的BOOTLOADER可以一步到位,也就是说不用像片内启动可能需要BOOT好几级了,目前AT91RM9200上使用较多的bootloer是u-boot,这是一个开放源代码的软件,用户可以自由下载并根据自己的应用配置。总的说来,笔者以为AT91RM9200的启动过程比较简单,ATMEL的服务也不错,不但提供了片内启动的功能,还提供了UBOOT可供下载。笔者写了一个BOOTLODER从片外的FLASHA启动,效果还可以。 uboot结构与使用uboot是一个庞大的公开源码的软件。他支持一些系列的arm体系,包含常见的外设的驱动,是一个功能强大的板极支持包。其代码可以 http://sourceforge.net/projects/u-boot下载 在9200上,为了启动uboot,还有两个boot软件包,分别是loader和boot。分别完成从sram和flash中的一级boot。其源码可以从atmel的官方网站下载。 我们知道,当9200系统上电后,如果bms为高电平,则系统从片内rom启动,这时rom中固化的boot程序初始化了debug口并向其发送'c',这时我们打开超级终端会看到ccccc...。这说明系统已经启动,同时xmodem协议已经启动,用户可以通过超级终端下载用户的bootloader。作为第一步,我们下载loader.bin.loader.bin将被下载到片内的sram中。这个loder完成的功能主要是初始化时钟,sdram和xmodem协议,为下载和启动uboot做准备。当下载了loader.bin后,超级终端会继续打印:ccccc....。这时我们就可以下在uboot了。uboot将被下载到sdram中的一个地址后并把pc指针调到此处开始执行uboot。接着我们就可以在终端上看到uboot的shell启动了,提示符uboot>,用户可以uboot>help 看到命令列表和大概的功能。uboot的命令包含了对内存、flash、网络、系统启动等一些命令。 如果系统上电时bms为低电平,则系统从片外的flash启动。为了从片外的flash启动uboot,我们必须把boot.bin放到0x0地址出,使得从flash启动后首先执行boot.bin,而要少些boot.bin,就要先完成上面我们讲的那些步骤,首先开始从片内rom启动uboot。然后再利用uboot的功能完成把boot.bin和uboot.gz烧写到flash中的目的,假如我们已经启动了uboot,可以这样操作: uboot>protect off all uboot>erase all uboot>loadb 20000000 uboot>cp.b 20000000 10000000 5fff uboot>loadb 21000000 uboot>cp.b 210000000 10010000 ffff 然后系统复位,就可以看到系统先启动boot,然后解压缩uboot.gz,然后启动uboot。注意,这里uboot必须压缩成.gz文件,否则会出错。 怎么编译这三个源码包呢,首先要建立一个arm的交叉编译环境,关于如何建立,此处不予说明。建立好了以后,分别解压源码包,然后修改Makefile中的编译器项目,正确填写你的编译器的所在路径。 对loader和boot,直接make。对uboot,第一步:make_at91rm9200dk,第二步:make。这样就会在当前目录下分别生成*.bin文件,对于uboot.bin,我们还要压缩成.gz文件。 也许有的人对loader和boot搞不清楚为什么要两个,有什么区别吗?首先有区别,boot主要完成从flash中启动uboot的功能,他要对uboot的压缩文件进行解压,除此之外,他和loader并无大的区别,你可以把boot理解为在loader的基础上加入了解压缩.gz的功能而已。所以这两个并无多大的本质不同,只是他们的使命不同而已。 特别说名的是这三个软件包都是开放源码的,所以用户可以根据自己的系统的情况修改和配置以及裁减,打造属于自己系统的bootloder。
上传时间: 2013-10-27
上传用户:wsf950131
自动检测80C51串行通讯中的波特率:本文介绍一种在80C51 串行通讯应用中自动检测波特率的方法。按照经验,程序起动后所接收到的第1 个字符用于测量波特率。这种方法可以不用设定难于记忆的开关,还可以免去在有关应用中使用多种不同波特率的烦恼。人们可以设想:一种可靠地实现自动波特检测的方法是可能的,它无须严格限制可被确认的字符。问题是:在各种的条件下,如何可以在大量允许出现的字符中找出波特率定时间隔。显然,最快捷的方法是检测一个单独位时间(single bit time),以确定接收波特率应该是多少。可是,在RS-232 模式下,许多ASCII 字符并不能测量出一个单独位时间。对于大多数字符来说,只要波特率存在合理波动(这里的波特率是指标准波特率),从起始位到最后一位“可见”位的数据传输周期就会在一定范围内发生变化。此外,许多系统采用8 位数据、无奇偶校验的格式传输ASCII 字符。在这种格式里,普通ASCII 字节不会有MSB 设定,并且,UART总是先发送数据低位(LSB),后发送数据高位(MSB),我们总会看见数据的停止位。在下面的波特率检测程序中,先等待串行通讯输入管脚的起始信号(下降沿),然后起动定时器T0。在其后的串行数据的每一个上升沿,将定时器T0 的数值捕获并保存。当定时器T0溢出时,其最后一次捕获的数值即为从串行数据起始位到最后一个上升沿(我们假设是停止位)过程所持续的时间。
上传时间: 2014-08-22
上传用户:dajin
自动控制升降旗系统的设计:自动升尧降旗系统适应领域广泛,在许多政府部门尧学校尧广场和大型企业随处都可见到国旗的飘扬,随着信息时代的飞速发展,人们物质生活逐步提高,特别是伴随着自动控制和单片机测控技术发展,可以使用自动控制系统来完成国旗的升尧降控制,使升尧降旗速度与国歌演奏时间准确配合,从而避免了人为升尧降国旗与国歌演奏时间不协调而出现的尴尬场面发生,保证了国旗升尧降仪式的严肃性。
标签: 自动控制
上传时间: 2013-10-20
上传用户:defghi010
随着计算机技术的不断发展,使得现代教育教学思想发生了转变,在教学过程中对计算机的使用越来越多,计算机辅助教学系统也随之产生。对于考试而言,试题库自动组卷系统的产生使考试的发展适应了科学化、标准化的要求。试题库系统以计算机辅助教学平台为基础,逐步受到教育界的重视。在试题库系统的开发过程中,其主要功能之一就是自动组卷,实现教育的自动化。但由于试题库的建立没有一个标准,各高校独自研发自己的试题库,组卷的质量和效率存在较大差异,很难推广。为解决这一问题,本文主要基于SOA技术建立试题库自动组卷系统。
上传时间: 2013-10-15
上传用户:truth12
针对强化学习在连续状态连续动作空间中的维度灾难问题,利用BP神经网络算法作为值函数逼近策略,设计了自动驾驶仪。并引入动作池机制,有效避免飞行仿真中危险动作的发生。首先,建立了TD强化学习算法框架;然后根据经验将舵机动作合理分割为若干组,在不同的飞行状态时,调取不同组中的动作;其次,构建了BP神经网络,通过飞行过程中的立即奖赏,更新网络的值函数映射;最后,通过数字仿真验证了强化学习自动驾驶仪的性能,仿真结果表明,该算法具有良好的动态和稳态性能。
上传时间: 2013-11-09
上传用户:刘江林1420
设计了一种以红外传感器ST188、AT89S51为控制核心的自动循迹小车,系统采用单片机AT89S51产生PWM波调控小车速度,红外传感器ST188对路面黑色轨迹进行检测,并将检测到的信号反馈给微控系统AT89S51,AT89S51由采集到的信号发出指令,控制小车电机驱动电路以调整行驶方向,从而使小车能够沿着黑色轨迹自动行驶,实现小车自动循迹的目的。
上传时间: 2013-11-03
上传用户:wqq123456