基于ARM平台的RFID系统设计与实现
3.2 充电电路设计
充电电路可以为用户提供很大的方便。一般情况充电电路需要达到的要求是:必须保证电池充电时不过充;充电时间不能太短,但同时也要保证充电电流不能太大;有充电指示。根据上面以上要求,该电路的工作原理是:LM7812是一个稳压模块,为系统提供稳定的9V电压。LM555是一个触发器,管腿二和管腿六是触发端,管腿五是参考电压,当管腿二的电压小于管腿五和管腿六的三分之一电压小于管腿五的时候,管腿三输出0V;当管腿二的电压小于管腿五但管腿五的电压大于管腿六的三分之一电压的时候,管腿三输出VCC;当管腿二的电压大于管腿五时候,管腿三输出0V。当该系统上电但没有放充电电池的时候,满足上述条件一,所以管腿三输出0V,二极管不亮;当把待充电池接在VCC端的时候,通过C45滤波(防止干扰脉冲)的采集电压传送到管腿二和管腿六,因为电池本身有电压,所以这个时候满足上述条件二,管腿三输出9V开始充电,发光二极管变亮;当充电完毕,电池达到指定电压时,满足上述条件三,管腿三输出0V,充电结束,发光二极管熄灭。综上所述,只要参考电压足够精确,就不会造成电池过充现象。同时充电电压能够达到9V,所以调节R52完全可以在充电电流和充电时间上进行权衡。所以此电路可以达到上述要求。
3.3 PROTEL 电路设计和电路板布线的基本流程
原理图部分:建立自己的元件库。因为并不是所有的元件在PROTEL的元件库中都存在,一般要根据自己实际所用的芯片建立自己的元件库。绘制原理图。当器件比较多的时候,可以采用层次设的方法。分模块对系统进行设计,这样可以使系统更加清晰,降低错误的可能性。原理图画好后,利用其自动编号功能对器件进行编号。PCB板部分.建立自己的封装库,同元件库一样,有时候必须建立自己的封装库,在画封装的时候,要严格按照芯片公司的资料绘制。为每一个元件设置封装。用向导产生PCB文件,定义好电路板的层数和边界。利用设计同步器将器件导入到PCB中。根据具体的工艺设计好规则,如过孔大小,最小线宽。按照易于布线的原则对元件进行布局布线,在布线的时候要遵循一些原则。检查错误。
4. 系统软件设计
4.1 LINUX 在AT91RM9200 上的移植
AT91RM9200两种启动方式:1.其内部存储器地址为0x00100000-0x001FFFFF的部分存在一段启动程序,如果选择这种启动模式在启动时,0x00100000-0x001FFFFF部分的地址被映射到0x00000000,CPU运行这段程序,这段程序会往CPU的调试串口(或者是USB口)不停的发字符"C",同时提供小于12K程序的串口(利用XMODEM协议)下载功能。2.可以直接从外部存储器启动,主要是连接在SPI(串行外部设备接口)和NCS0(CPU上的一个管腿,是EBI即外部总线接口的一部分,用于外部存储器的寻址)上的SPI DataFlash,Two-wire EEPROM和连接在NCS0上的8比特并行存储器。
根据CPU的启动方式,我们可以这样设计移植过程及系统的启动方式。在系统移植阶段,我们应用启动方式
1,通过其下载功能下载一个小于12K的程序(实际使用的程序为Loader,是开放源码的软件,可以在网上下载到)到SDRAM并运行,该程序可以提供大于12K的串口下载功能,用这个程序下载一个更大的程序到SDRAM中,而这个程序可以提供类似于PC机上BIOS的功能(实际使用的是U-BOOT,是开放源码的软件,可以在网上下载到),其功能主要有:LINUX系统引导,网卡驱动,TFTP下载功能,SDRAM和FLASH之间的读写功能。
通过其TFTP下载功能下载内核到SDRAM,引导操作系统并进行测试。如果操作系统测试工作无误后,可以应用U-BOOT的写FLASH功能把U-BOOT和LINUX内核写到FLASH中,在应用程序开发阶段应用CPU的启动方式2,直接从FLASH启动。这种方法的优势是:在内核下载的时候,提供了TFTP下载功能,加快了速度。在应用程序开发阶段,因为内核(还有后面的RAMDISK)都是固化在FLASH中,可以省去其下载过程,同样也可以节省时间[3]。
移植过程大致可分为以下几个步骤:配置用户环境及交叉编译环境;编译Loader和UBoot,其中要在UBoot中修改网卡驱动;3.配置Linux内核;4.制作ramdisk文件系统,并根据实际系统进行修改;5.移植Busybox;6.JFFS2文件系统的移植。在Linux内核中已经包含了MTD和JFFS2文件系统的驱动程序,但是必须针对具体的系统编写驱动程序。具体步骤如下:1)由于ROM设备和MTDBlock设备的主设备号(major)都是31,所以如果你不想把JFFS2作为根文件系统的话,必须修改他们之一的major。2)编写驱动程序:编写读,写,复制接口(这些接口将被MTD驱动程序调用,提供给上层软件的读写复制功能),定义map_info结构体,以便MTD能够从这个结构体中得到读写函数的指针,最后还要定义FLASH的分区表。根据系统的设计,我们把4M的FLASH分成四个区,第一个分区用来保存UBOOT及其参数;第二个分区用来保存LINUX内核;第三个分区用来保存RAMDISK;最后一个分区用来保存系统参数和用户数据和测试数据。3)修改LINUX的配置文件,把驱动程序加入到内核[4]。
关键词: ARM平台 RFID系统 AT91RM9200
加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码