![《嵌入式Linux开发入门》课件第3章_第1页](http://file4.renrendoc.com/view12/M02/01/2B/wKhkGWaSMgqAGERIAAC8sei6Eq8825.jpg)
![《嵌入式Linux开发入门》课件第3章_第2页](http://file4.renrendoc.com/view12/M02/01/2B/wKhkGWaSMgqAGERIAAC8sei6Eq88252.jpg)
![《嵌入式Linux开发入门》课件第3章_第3页](http://file4.renrendoc.com/view12/M02/01/2B/wKhkGWaSMgqAGERIAAC8sei6Eq88253.jpg)
![《嵌入式Linux开发入门》课件第3章_第4页](http://file4.renrendoc.com/view12/M02/01/2B/wKhkGWaSMgqAGERIAAC8sei6Eq88254.jpg)
![《嵌入式Linux开发入门》课件第3章_第5页](http://file4.renrendoc.com/view12/M02/01/2B/wKhkGWaSMgqAGERIAAC8sei6Eq88255.jpg)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第3章ADS下的硬件电路调试
3.1概述3.2嵌入式系统的开发步骤及方法3.3测试内容清单及各部分实现功能3.1概述
ADS测试程序部分主要功能是:●在裸板上(未加载操作系统)利用编程手段测试各功能模块的电气连接是否正确;●通过这一工作中的源程序,交代EP9315各片内外设的寄存器设置方式,为后继开发者提供切实有用的参考资料。
ADS下的测试程序已在本开发板上实际运行过,其基本思路是:在对系统总体配置后,通过程序控制开发板上各外部硬件资源完成相应动作。同时在监控终端上显示测试过程中的输入、输出信息,以此了解开发平台硬件电路的实际运行情况。3.2嵌入式系统的开发步骤及方法为向用户全面系统地阐述ADS下的测试程序,本节先概要地介绍嵌入式系统开发的典型过程和所使用的软、硬件工具。运行此测试程序所需要的设备及软件工具如下:● PC机(Windows超级终端软件及机身COM口可用);● ARMJTAG接口仿真器一台及相对应的控制台驱动程序;● EP9315嵌入式开发板一块;●串口线(连接开发板与PC机),并口线(连接仿真器与PC机);● ADS1.2开发套件。以上提及的硬件设备的连接情况见图3.1。图3.1开发环境的搭建在路径[开始]-[所有程序]-[附件]-[通信]中打开PC机上的超级终端,建立测试监控端。将超级终端配置为波特率为115200,数据位为8,奇偶校验为无,停止位为1,数据流控制为无,见图3.2。图3.2超级终端的配置打开开发板电源,在仿真器控制台软件中完成开发板与PC机的连接,见图3.3。图3.3控制台检测处理器内核至此,开发板已与PC主机建立了硬件上的连接。用户此时需要在ADS环境下完成实验工程的建立,以便进行源程序的编写、编译以及链接,继而产生ARM可执行文件。首先建立实验平台,打开ADS开发套件中的CodeWarriorforARMDeveloperSuite。平台可将所有的源码文件组织在一起,并能够决定最终生成文件存放的路径及输出的格式等。然后在CodeWarrior中新建一个工程,新建工程的方法有两种,一是在工具栏中单击“New”按钮,是在“File”菜单中选择“New…”菜单。这样就会打开一个如图3.4所示的对话框。图3.4建立工程●在这个对话框中为用户提供了7种可选择的工程类型。● ARMExecutableImage:用于由ARM指令的代码生成一个ELF格式的可执行映像文件;● ARMObjectLibrary:用于由ARM指令的代码生成一个armar格式的目标文件库;● EmptyProject:用于创建一个不包含任何库或源文件的工程;● MakefileImporterWizard:用于将VisualC的nmake或GNUmake文件转入到CodeWarriorIDE工程文件;● ThumbARMInterworkingImage: 用于由ARM指令和Thumb指令的混和代码生成一个可执行的ELF格式的映像文件;● ThumbExecutableImage:用于由Thumb指令创建一个可执行的ELF格式的映像文件;● ThumbObjectLibrary: 用于由Thumb指令的代码生成一个armar格式的目标文件库。在对话框中选择ARMExecutableImage,在“Projectname”中输入工程文件名。点击“Location”文本框的“Set…”按钮,浏览选择想要将该工程保存的路径。将这些设置好后,点击“确定”,即可建立一个新的工程。在工程窗口中点击右键添加工程所需的源程序。当选中要添加的文件时,会出现一个对话框,如图3.5所示,询问用户把文件添加到何类目标中。在这里,选择DebugRel目标。图3.5添加工程文件图3.5所示的3类target解释如下:● DebugRel:使用该目标,在生成目标的时候,会为每一个源文件生成调试信息;● Debug:使用该目标为每一个源文件生成最完全的调试信息;● Release:使用该目标不会生成任何调试信息。依次向工程中添加所需的全部源程序,最终如图3.6所示。图3.6测试程序工程源程序清单当建立工程完毕后,需要对工程进行一些基本配置。点击工程窗口中的“DebugRelSettings”。出现如图3.7所示的对话框。图3.7工程配置窗口首先,对左面的[TargetSettings]作如图3.8所示的选择。图3.8工程配置选项(1)接着,对[LanguageSettings]-[ThumbCCompiler]的各项均作如图3.9所示的设置,即选择ARM920T内核,小端模式。图3.9工程配置选项(2)最后对[Linker]-[ARMLinker]项中的Output页作如图3.10所示的设置,图3.10的设置主要是指定了程序在内存中加载的地址。图3.10工程配置选项(3)需要说明的是,图3.10和图3.11中所填入的0x00000000都为程序在开发板上加载运行的地址及程序入口。本处设为内存首地址。用户也可根据需要和程序实际情况自行更改。以上配置选项中的其他内容用户如需深入了解,可参阅ADS开发套件的帮助文档。图3.11工程配置选项(4)如此设置完毕后,即可编译、链接,在仿真器下进行应用程序的调试。找到测试程序工程的路径,打开测试程序工程EP9315board_adstest.mcp(建立好工程后,会在指定的目录下自动生成该文件),如图3.12所示。图3.12打开工程文件这样就可以看到工程中的各个程序文档,用户可以根据以后工作的具体需要,在其中进行测试程序的更改和添加。调试更改源程序工作窗口如图3.13所示。图3.13工程中源程序截图当用户完成自己的更改后,可重新编译工程,以产生ARM可执行文件。通过点击make图标进行编译、链接,如图3.14所示。图3.14工程的编译、链接编译、链接完成后,打开ADS1.2中的AXDDebugger加载ARM可执行映像文件。其中,映像文件一般生成于工程目录的DebugRel文件夹中,如图3.15与图3.16所示。图3.15ARM可执行映像文件的加载(1)图3.16ARM可执行映像文件的加载(2)加载成功后可点击“GO”图标运行测试程序。此时该程序将在开发板上运行,如图3.17所示。在工程程序运行的过程中,用户可以根据需要执行暂停程序、设置断点以及卸载映像文件等操作。至此,ADS下嵌入式系统的开发步骤及方法介绍完毕。此项目的硬件电路调试工作就是通过在ADS下建立工程的方法进行的。以下将详细讲解各功能模块的调试。图3.17工程程序的运行3.3测试内容清单及各部分实现功能
ADS下的测试程序包括以下测试内容:●RS232串口测试;●LED灯,即GPIO功能测试;●内存读/写测试;●8×8小键盘测试;●触摸屏测试;●脉宽调制(PWM)测试;●USB接口测试;●8255端口测试;●LCD显示测试;●看门狗定时器(WDT)测试;●Flash擦写测试;●CAN总线测试;●IIC总线读/写RTC芯片测试;●IDE硬盘测试;●MAX1261测试;●MAX5821测试;●PS/2测试;●SPI测试;●RS488测试;●网口测试。3.3.1前10项内容的统一测试测试任务中,测试内容的前10项在超级终端监控下一次性完成,因此将其整合为一个工程。这部分测试对各个硬件外设的控制情况介绍如下:
(1) RS232串口与PC机通信。测试过程中所有的测试信息都通过RS232串口实现,测试中的控制字符也由其传递至开发板。
(2) LED灯,即GPIO功能。通过控制板上EP9315旁的两盏LED灯,达到测试EP9315片内GPIO端口的作用。另外,在SDRAM的测试中,还可以用该组LED灯指示内存读/写状态。
(3)内存读/写。开发板上SDRAM的大小为128MB,其地址范围为0x00000000~0x08000000。测试过程中对除过加载程序映像以外的地址进行读/写校验。为防止破坏程序运行时的数据和堆栈,校验顺序为:保存该地址(32位)原来的数据→写入数据0xaa或0x55→读出校验→将原始数据回写。当校验正常完成并且内存无错误后,开发板上绿色的LED灯会点亮。
(4) 8×8小键盘。该部分主要测试在按键后,键码读取是否正确。键码范围为0x00~0x3F。测试程序中此键码会回显在超级终端中。当EP9315片内控制器检测到有两键同时按下时,程序从键盘子函数跳出,结束该部分测试。
(5)触摸屏。当触笔点击触摸屏时,系统会接收模/数转换后的二维坐标值,以此确定点击位置。为验证此部分的电路连接正常,测试程序将把点击的对应坐标回显到超级终端中。触摸屏子函数允许用户进行15次点击测试,完成后自动跳出该函数。
(6)脉宽调制(PWM)。该部分开始测试时,程序将提示用户从4个波形中选择其一,而后开发板上对应端口就会输出该波形,可用示波器进行定量观察,也可外接蜂鸣器。不同频率和占空比的波形会驱动蜂鸣器以不同声调鸣响。
(7) USB接口。USB测试程序主要验证开发板上USB总线的连接是否正确。该子程序循环运行中,当有USB设备插入时,超级终端会显示有设备接入以及对应的USB端口号。拔除该设备后,也会显示设备移除。
(8) 8255端口。测试中将8255A、B端口设置为输出,外接一排8盏LED灯。以跑马灯的形式验证8255芯片输出功能是否正确。将C端口设置为输入端,外接8键开关,通过开关向C端口输入高、低电平。由子程序读取输入值,回显到超级终端中。
(9) LCD显示。当进入LCD测试子程序后,外接LCD屏会以红、绿、蓝3色循环刷屏。
(10)看门狗定时器(WDT)。这是此部分测试程序的最后一项工作,验证开发板的看门狗复位功能。在板上两盏LED灯交替闪烁时,系统正常“喂狗”,而后停止,清零WDT定时器,超级终端提示此部分测试结束,ADS显示开发板复位。此部分测试程序流程如图3.18所示。图3.18前10项测试程序流程此部分测试的控制界面如图3.19所示。图3.19控制界面在进行这部分测试工作时,必须注意以下问题:●须将开发板设置为串口启动方式,断开跳线J4;●在SDRAM测试中,因为需要保存并回写原始数据,所以此测试比单独写内存运行时间要长;●本工程提供的测试程序中的参数,如串口波特率,PWM波频率、占空比等,用户均可在程序中根据需要自行改动,但需要参考EP9315数据手册的相关说明;● 8路并行I/O口外接8255芯片,关于此芯片内部寄存器的详细内容请参考8255驱动说明文档以及8255数据手册;●测试结束后,开发板处于复位状态,若需再次加载程序映像文件,则需要断电再开机后在AXD中重新配置;●当用户将工程文件夹转移路径或移至其他PC机上时,再次编译会报错,以本测试程序为例,此时须作如下处理:退出ADS测试环境→删除工程文件夹中的生成文件(其路径为:EP9315board_adstest/EP9315board_adstestData/DebugRel)→重新进入ADS测试环境,进行编译、链接,以生成新的ARM可执行文件;●最好将源程序文件放在工程目录下,以便在调试产品时统一管理。3.3.2Flash测试
28F256J3C125属于Intel的StrataFlash®memory系列,容量为256Mb,即32MB;包含有256个128KB大小的擦除块;可以有8位或者16位两种访问宽度;遵循CFI接口标准。对Flash芯片的所有操作都是通过芯片的命令用户接口(CUI)来实现的,命令用户接口是微处理器或微控制器与芯片内部操作之间的界面。当通过CUI写入不同的控制命令时,Flash从一个工作状态转移到另一个工作状态,其常见的工作状态分为以下几种。
1.读存储单元状态在Flash芯片上电以后,或者从深度低功耗状态返回以后,芯片就处于读存储单元状态。可通过写入复位命令进入读存储单元状态。此时可以读取Flash芯片存储单元的内容。
2.擦除状态对Flash芯片进行擦除操作时,由于Flash采用模块分区的阵列结构,使得各个存储模块可以被独立地擦除。当给出的地址是在模块地址范围之内且向命令用户接口写入模块擦除命令时,相应的模块就被擦除。在执行擦除操作时需要注意:28F256J3C的擦除块大小为128KB。
3.编程状态
Flash的编程操作是字节编程或buffer编程,可以是顺序写入,也可以是指定地址写入。向用户命令接口写入字节编程命令时,芯片自动进行字节编程和编程校验。在执行编程操作时有两个问题需要注意:buffer的大小范围为0x00~0x1F。除了以上所提到的常见的3种工作状态外,Flash还有芯片复位、读标识码、擦除挂起和擦除恢复等工作状态,只不过这几种工作状态在程序设计时几乎不需要考虑什么问题,只要输入正确的命令字即可,但是不同公司的Flash命令控制字是不同的。前面所遇到的问题都可以通过CFI来解决,但首先要保证待操作的Flash是一个CFI使能的器件。本ADS测试下Flash的测试流程如图3.20和图3.21所示。擦除后,块中数据全为0xFF。测试流程为:首先读出Flash中的数据,然后擦除,再读出数据,若全为0xFF则擦除成功;再向Flash中写入数据,读出验证。由此可证明Flash可操作。图3.20块擦除流程图图3.21buffer编程流程图3.3.3CAN总线测试
CAN总线是国际上应用最广泛的现场总线之一,最早是由德国Bosch公司推出,用于汽车内部测量与执行部件之间的数据通信协议。CAN总线的应用范围遍及从高速网络到低成本的多线路网络,广泛应用于控制系统中的各检测和执行机构之间的数据通信。现场总线领域中,CAN总线得到了计算机芯片商的广泛支持,他们纷纷推出直接带有CAN接口的微处理器(MCU)芯片。CAN是一种多主方式的串行通信总线,基本设计规范要求有高的位速率,高的抗电磁干扰性,而且能够检测出产生的任何错误。
CAN网络具有如下特点:●网络上任意一个节点均可在任意时刻主动向网络上的其他节点发送信息,而不分主、从;●采用非破坏性总线仲裁技术,当两个节点同时向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据;●具有点对点,一点对多点及全局广播传送接收数据的功能。通信距离最远可达10km(5kb/s),通信速率最高可达1Mb/s(40m),网络节点数实际可达110个,每一帧的有效字节数最多为8个,这样传输时间短,受干扰的概率低;●通信介质采用廉价的双绞线即可,无特殊要求;●每帧信息都有CRC校验及其他检错措施,数据出错率极低,可靠性极高,在传输信息出错严重时,节点可自动切断它与总线的联系,以使总线上的其他操作不受影响。目前广泛流行的CAN总线器件有两大类:一类是独立的CAN控制器,如82C200、SJA1000及Intel82526/
82527等;另一类是带有在片CAN的微控制器,如P8XC58216位微控制87C196CA/CB等。这里选用PHILIPS公司的SJA1000CAN控制器以及82C250总线收发器,主要是因为EP9315没有CAN控制器,而且SJA1000支持CAN2.OA/B规范,82C250可以支待110个CAN节点,并且国内市场上PHILIPS的产品型号比较多,购买比较方便。
PHILIPS公司的SJA1000是符合CAN2.0B协议的总线控制器,它是应用于汽车和一般工业环境的独立CAN总线控制器。由于硬件和软件的兼容,它将会替代PCA82C200,它与PCA82C200相比具有更先进的特征,因此特别适合于轿车内的电子模块传感器、制动器的连接和通用工业应用中特别是系统优化、系统诊断和系统维护。SJA1000具有完成CAN通信协议所要求的全部特性。经过简单总线连接的SJA1000可完成CAN总线的物理层和数据链路层的所有功能。其硬件与软件设计可兼容基本CAN模式(BasicCAN)和新增加的增强CAN模式(PeliCAN)CAN 2.0B协议。这一部分用户可参照SJA1000的数据手册。开发板上CAN总线的硬件连接如图3.22、图3.23和图3.24所示。图3.22CAN总线硬件连接图(1)图3.23CAN总线硬件连接图(2)图3.24CAN总线硬件连接图(3)
ADS下测试包含ebdtest_can和looptest_can两个工程,其中looptest_can是回环测试,而ebdtest_can是两个can口通信的测试。测试步骤如下:
(1)运行程序显示如下:
SMCBCR2=0X20001C61
SMCBCR2=0X1C61
SJA1000_MOD_000X21
SJA1000_MOD_010X21
--------------------------------------
(2)输入help命令,了解可支持的命令如下:
myshell>help,
read
write
getfrmsendfrm help
exitquit
(3)发送数据:
myshell>sendfrm,
pleaseinputcommand.formatis:
8addr0addr1d0d1d2d3d4d5d6d7
xx--xx--xx--xx--xx--xx
BUF[0]=8BUF[1]=4BUF[2]=5BUF[3]=254BUF[4]=255BUF[5]=3BUF[6]=4BUF[7]=5BUF[8]=88BUF[9]=75BUF[10]=155BUF[11]=8BUF[12]=0BUF[13]=0BUF[14]=0BUF[15]=1BUF[16]=1BUF[17]=1BUF[18]=1BUF[19]=1BUF[20]=1BUF[21]=1BUF[22]=8BUF[23]=0BUF[24]=0BUF[25]=0BUF[26]=0BUF[27]=0BUF[28]=0BUF[29]=0BUF[30]=0BUF[31]=0BUF[32]=0[0]=8[1]=4[2]=5[3]=254[4]=255[5]=3[6]=4[7]=5[8]=88[9]=75[10]=155
xxxxxxxxxxxx
TXdata[0]=8TXdata[1]=4TXdata[2]=5TXdata[3]=254TXdata[4]=255TXdata[5]=3TXdata[6]=4TXdata[7]=5TXdata[8]=88TXdata[9]=75TXdata[10]=155xxxxxxxxxxxx
TXdata[0]=8TXdata[1]=0TXdata[2]=0TXdata[3]=0TXdata[4]=1TXdata[5]=1TXdata[6]=1TXdata[7]=1TXdata[8]=1TXdata[9]=1TXdata[10]=1xxxxxxxxxxxx
TXdata[0]=8TXdata[1]=0TXdata[2]=0TXdata[3]=0TXdata[4]=0TXdata[5]=0TXdata[6]=0TXdata[7]=0TXdata[8]=0TXdata[9]=0TXdata[10]=0
(4)接收数据:
myshell>getfrm,
readin3frames
8402542553458875155
80001111111
80000000000
myshell>3.3.4IIC总线读取RTC芯片测试
DS1337串行实时时钟芯片是一种低功耗,全部采用BCD码的时钟日历芯片,它带有两个可编程的定时闹钟和一个可编程的方波输出。其地址和数据可通过IIC总线串行传输,能提供秒、分、时、日、星期、月和年等信息。在月天数小于31天的情况下,它也能自动调整月份,包括对闰年的校正。时钟可以以24小时模式工作,也可以以12小时模式工作。芯片的工业温度范围为-40~+80℃,提供有8引脚的DIP和SOIC封装,引脚如图3.25所示。图3.25DS1337引脚图引脚功能介绍如下:
(1) VCC,GND:直流电源和接地端,VCC的输入范围为1.8~5.5 V。
(2) X1、X2:标准的32.768 kHz的石英晶振接入端,内部晶振电路设计要求晶振特定电容负载为6 pF。另外,这两个引脚还可以有其他接法,即:X1脚连接外部振荡信号源,而将X2脚悬空。
(3) SCL:串行时钟输入,用来在总线上进行同步数据传输。
(4) SDA:串行数据输入/输出,SDA是IIC总线接口的数据输入/输出引脚,开漏输出,使用时要求接一个上拉电阻。
(5) SQW/:方波/中断输出,可通过对DS1337的内部控制寄存器进行编程来控制这个引脚是输出方波还是输出中断信号。该引脚是开漏输出,使用时要接一个外部的上拉电阻。
(6):中断输出端,使能时,如果闹钟寄存器的设定值与当前时间匹配,该脚会输出一个低电平。该引脚也是开漏输出,使用时要接上拉电阻。
DS1337的内部寄存器地址分配方式如图3.26所示。在多字节存取过程中,当地址指针到达0FH,即寄存器空间的最后一个单元时,下一个操作地址将翻卷到00H。在IIC总线的开始、停止或在地址指针增加到00H位置时,当前时间会传送给一组二级寄存器,在这期间,时钟照常运转。这样就不必在读取当前时间期间和主寄存器更新的情况下再次读取主寄存器中的数据,从而防止发生错误。在开发板上的硬件连接图如图3.27所示。图3.26DS1337寄存器地址分配图3.27DS1337硬件原理图在ADS下的测试ebdtest_iic工程包含有iic.c、iic.h、main.c和9315addr.h4个文件。Loadimage后,运行程序,出现命令提示行Begintotestiicdrivers并显示时间信息为:1分钟后测试结束。3.3.5IDE硬盘测试
IDE(IntegatedDriverElectronics)硬盘是Linux系统中最常用的硬盘。由于IDE硬盘比较便宜,大多数现代PC在主板上都有一个或更多的IDE控制器。每个IDE控制器可以支持两个硬盘,一个是主盘(master),另一个是从盘(slave)。主、从的区别可通过硬盘上的跳线设置。随着技术的发展,产品对数据传输速度要求的提高,IDE接口硬盘的数据传输模式经历了3个不同的技术变化,由最初的PIO模式到DMA模式,再到UltraDMA模式。
1. PIO模式
PIO的英文拼写是“ProgrammingInput/OutputModel”,PIO模式是一种通过CPU执行I/O端口指令来进行数据的读/写的数据交换模式,是最早的硬盘数据传输模式。此种模式的数据传输速率低,CPU占有率也很高,大量传输数据时会因为占用过多的CPU资源而导致系统停顿,无法进行其他的操作。PIO数据传输模式又分为PIOmode0、PIOmode1、PIOmode2、PIOmode3、PIOmode4几种模式,数据传输速率从3.3MB/s到16.6MB/s不等。受限于传输速率低下和极高的CPU占有率,这种数据传输模式很快就被淘汰。
2. DMA模式
DMA的英文拼写是“DirectMemoryAccess”,意思就是直接内存访问,是一种不经过CPU而直接从内存里存取数据的数据交换模式。PIO模式下硬盘和内存之间的数据传输是由CPU来控制的,而在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU的资源占有率。DMA模式与PIO模式的区别就在于,DMA模式不过分依赖CPU,可以大大节省系统资源,二者在传输速度上的差异并不十分明显。DMA模式又可以分为Single-WordDMA(单字节DMA)和Multi-WordDMA(多字节DMA)两种,其中所能达到的最大传输速率也只有16.6 MB/s。
3. UltraDMA模式
UltraDMA的英文拼写为“UltraDirectMemoryAccess”,一般简写为UDMA,含义是高级直接内存访问。UDMA模式采用16bitMulti-WordDMA(16位多字节DMA)模式为基准,可以理解为DMA模式的增强版本,它在包含了DMA模式的优点的基础上,又增加了CRC(CyclicRedundancyCheck,循环冗余码校验)技术,提高了数据传输过程中的准确性,安全性也得到了保障。在以往的硬盘数据传输模式下,一个时钟周期只传输一次数据,而在UDMA模式中逐渐应用了DoubleDataRate(双倍数据传输)技术,因此数据传输速度有了极大的提高。此技术就是在时钟的上升期和下降期各自进行一次数据传输,可以使数据传输速度成倍地增长。在UDMA模式发展到UDMA133之后,受限于IDE接口的技术规范,无论是连接器、连接电缆、信号协议都表现出了很大的技术瓶颈,而且其支持的最高数据传输率也有限。同时随着IDE接口传输率的提高,也就是工作频率的提高,IDE接口交叉干扰、地线增多、信号混乱等缺陷也给其发展带来了很大的制约,被新一代的SATA接口取代也就在所难免了。
IDE的测试包括写、读两部分。注意:IDE硬盘应该工作在主模式(master)下,否则不能正确读出硬盘中的内容。
(1) IDE的传输方式选择了PIO4。
(2)向硬盘的第一个扇区(1磁头、0磁道、1扇区)写入数据0~511,为512个字节,再读出第一个扇区内容,读出数据为0~511,验证正确。测试程序流程如图3.28和图3.29所示。图3.28IDE写操作测试流程(1)图3.29IDE读操作测试流程(2)测试步骤如下:
(1)先读出硬盘第一个分区的内容,并打印出来;
(2)将读出的内容写入硬盘第一个分区;
(3)将硬盘第一分区的内容读出来,若操作正确,就打印出来,以此来验证对硬盘操作是否正常,IDE口能否正常工作。3.3.6A/D转换测试
MAX1261是一款低功耗,12位模数转换器(ADC),采用逐次逼近型ADC结构,具有自动关断、快速唤醒(2 µs)、片上时钟、+2.5 V内部基准和高速单字节宽度等的并行接口。它工作于+3 V单模拟电压,并且具有一个VLOGIC引脚,允许芯片直接和+1.8~+5.5 V的数字电源接口。在最大采样速率250kb/s下,芯片功耗仅为5.7mW(VDD=VLOGIC)。两种软件可选择的关断模式允许在两次数据转换之间关闭MAX1261/MAX1263,通过访问并口可将其返回至正常工作状态。转换之间的关断模式能在更低的采样速率下将电源电流减小至10µA以下。这款芯片提供软件可配置的模拟输入,用于选择单极性/双极性和单端/伪差分工作模式。在单端模式下,MAX1261有8个输入通道(在伪差分模式下有4个输入通道)。出色的动态特性和低功耗特性结合,及其易使用性和小尺寸封装,使得这些转换器成为电池供电、数据采集系统及其他对功耗、尺寸要求苛刻的电路的理想选择。MAX1261采用28引脚QSOP封装,如图3.30所示。图3.30MAX1261管脚图引脚功能如下所述:
(1) VDD、GND:直流电源和接地端,VDD为+3V单模拟电源。
(2) HBEN:高字节使能端,用于得到12位的转换结果。置位时,读取高四位的数据;清零时,读取低八位的数据。
(3) CLK:时钟输入端,采用外部时钟模式时,接TLL或COMS兼容的时钟;采用内部时钟模式时,CLK与VCC或GND连接。
(4):中断输出端,当转换完成和数据准备好之后,信号变低。
(5),:读/写信号输入端。
(6):片选信号输入端,信号为低电平时,选中芯片;高电平时,数据(D7~D0)输出为高阻抗。
(7) D0~D7:模拟信号输入通道。
(8) COM:模拟输入时的参考地。
(9) VLOGIC:数字电源端,为数据转换的数字输出供电,范围为1.8 V~(VDD+0.3 V)。
(10) REFADJ端:使用外部参考模式时,把REFADJ端与VDD连接,这样就禁用了内部参考模式。
(11) REF端:使用内部参考模式时,用4.7μF的电容接地。开发板上硬件连接图如图3.31所示。图3.31MAX1261连接图
MAX1261接在nCS3上,物理地址为0x31000000。test_ad工程下包含有ad_test.c、max1261.c和9315addr.h3个文件。● 9315addr.h:所用地址头文件。● max1261.c:主要包括对MAX1261的读max1261_read(void)、写max1261_write(unsignedcharcmd)操作。● ad_test.c:包括具体对MAX1261的配置和测试。
Loadimage后,等待输入命令:
myshell>● config1:用于配置MAX1261工作的模式。
0:完全掉电模式,时钟模式无影响;
1:备用掉电模式,时钟模式无影响;
2:正常工作模式,内部时钟模式;
3:正常工作模式,外部时钟模式。● config2:用于配置MAX1261的模拟输入模式。
0:伪差分模拟输入模式;
1:单端模拟输入模式。● config3:用于配置MAX1261的极性。
0:双极性;
1:单极性。● config4:用于配置MAX1261的通道。
0:第0通道被选通;
1:第1通道被选通;
2:第2通道被选通;
3:第3通道被选通;
4:第4通道被选通;
5:第5通道被选通;
6:第6通道被选通;
7:第7通道被选通。● startin:用于使MAX1261开始转换的命令,且采用内部捕捉模式。● startex:用于使MAX1261开始转换的命令,且采用外部捕捉模式。● exitadc:用于退出测试程序。举例:
myshell>config4
0
channel0isselected.
myshell>startin
AD_data=0x401
AD_data=0x405每通道转换300次,单端输入电压值为0.625 V,即为0x400,记录所有转换值,舍弃最大值与最小值,取平均值,所得数据如表3.1所示。表3.1MAX1261转换值记录3.3.7D/A转换测试
MAX5821是双路、10位、电压输出的数模转换器(DAC),具有兼容I2C的2线接口,工作时钟频率可达400 kHz。该器件工作于2.7~5.5 V单电源,在VDD=3.6 V时,仅消耗115 µA的电源电流。低功耗关断模式将电源电流消耗降低至1 µA以下。MAX5821具有软件选择的3种关断阻抗:100 kΩ,1 kΩ和高阻抗。其他特性包括内部精密满摆幅输出缓冲器和上电复位(POR)电路,该电路使DAC上电时处于100 kΩ的关断模式。管脚图如图3.32所示。图3.32MAX5821管脚图
开发板上硬件连接图如图3.33所示。图3.33MAX5821硬件连接图
ADS下的测试过程:test_da工程可用来转换0~1023的任意数值,在转换之前需要有唤醒命令,在此可调用唤醒函数。
intwritecommand(void)
//唤醒函数
{
unsignedcharcommand1=0xf0;
//扩展命令模式
unsignedcharcommand2=0x0c;
//唤醒A、B寄存器命令(0x04唤醒A寄存器,0x08唤醒B寄存器)
Start(); /*写地址和发出写命令(A6...A0R/W)*/
writebyte(0x70); /*发出扩展命令0xf0*/
writebyte(command1); /*写数据*/
writebyte(command2);
Stop();
return1;
}操作步骤如下:
(1) LoadImage后,运行程序,有命令提示inputcommand(12):输入0:DAC的输入端A和DAC寄存器被载入新的数据,DAC的输入端B中的内容被传送到DAC寄存器,所有的输出更新。输入1:DAC的输入端B和DAC寄存器被载入新的数据,DAC的输入端A中的内容被传送到DAC寄存器,所有的输出更新。输入4:DAC的输入端A被载入新的数据,DAC的输出保持不变。输入5:DAC的输入端B被载入新的数据,DAC的输出保持不变。输入8:所有输入端中的内容被传送到各自的DAC寄存器,所有DAC的输出也被同时更新,DAC的输入端A被载入新的数据。输入9:所有输入端中的内容被传送到各自的DAC寄存器,所有DAC的输出也被同时更新,DAC的输入端B被载入新的数据。输入12:所有的DACs被载入新的数据,所有的DAC输出也同时被更新,所有的输入端和DAC寄存器也被更新为新的数据。输入13:所有的输入端被载入新的数据,DAC的输出保持不变。
(2)命令提示inputnumberis0~1023。输入准备转换的数据,用示波器测量电压值,例如:
test_da1工程从0~1023依次转换,再由1023~1依次转换,通过示波器可看到波形是一个三角波。显示信息如下:
BegintotestDAC
1100:LoadallDACswithnewdataandupdateallDACoutputs
simultaneously.BothinputandDACregistersareupdated
withnewdata.
inputcommand:
123.3.8PS/2测试
1. ADS下测试程序程序开始运行后,等待接收PS/2键盘输入的按键值。当检测到有按键按下时,从寄存器SSPDR中读取按键值,进行判断。如果不是ESC按键,则将对应的扫描码转换为对应的字符,并输出;如果按下按键ESC,则退出程序。
2.调试中需要注意的事项●通信当中,PC机配置成SPI的从模式,PS/2键盘默认为主模式,提供通信时钟。●务必连接跳线J17、J18的2.3管脚和跳线J19、J20。●如果系统复位模块不稳定,会造成按键无反应的情况,此时需检查复位电路部分。3.3.9SPI测试
SPI总线系统是Motorola公司提出的一种同步串行外设接口,一般采用串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS等四根线,完成CPU与各种外围器件的同步串行通信。
SPI总线接口可以通过软件配置,如一个主机和几个从机、几个从机相互连接构成多主机系统(分布式系统)、一个主机和一个或几个从I/O设备所构成的各种系统等。其数据传输以字节为单位,高位(MSB)在前,低位(LSB)在后。本系统中,默认配置为单主单从模式。串行数据的发送和接收通过内部移位寄存器来实现。在发送时向SPI数据寄存器写入数据,数据寄存器和内部移位寄存器之间没有缓冲区,写数据寄存器会使数据直接进入内部移位寄存器。主机通过提供移位时钟和从使能信号来控制信息的流动,时钟信号SCK的一次作用对应于一位数据的发送(MISO)和另一位数据的接收(MOSI)。在主机中数据从移位寄存器自左向右发送到主机(MOSI),同时从机中的数据自右向左发送到主机(MISO),经过8个时钟周期完成一个字节的发送。当传输结束时,接收到的数据转移到一个单字节的数据缓冲区,下次传输时,将其读出。读SPI数据寄存器将返回读数据缓冲区的值,工作方式如图3.34所示。图3.34SPI工作方式本系统中,SPI接口通过跳线J17和J18与PS2复用,进行测试时需要连接这两个跳线的1、2管脚选通SPI模块,如图3.35所示。图3.35SPI跳线设置
1. ADS下测试程序在SPI测试程序中,发送线和接收线通过跳线冒连接起来。通过对比加、不加跳线两种情况,验证SPI硬件电路性能。首先不连通跳线J29的1脚、3脚,循环发送任意一个数组(本程序中发送次数为5次),当SPI缓冲区为空时,将要发送的数据放入SPI缓冲区中,通过发送线发送出去。经过适当延时后,读取接收缓冲区的内容,因为发送线和接收线没有连通,故接收缓冲区中数据为0。其次,连通跳线J29的1脚、3脚。此时,SPI的发送线和接收线连通,经过8 bit的延时后,读取缓冲区里的内容为前第8个已发送的数据。程序流程如图3.36所示。图3.36SPI测试程序流程
2.调试中需要注意的事项
(1)必须连接跳线J17和J18的1、2管脚,否则SPI接口被PS2选通,不作为SPI端口输出。
(2)在连接J29的1、3管脚后,如果接收数据与发送数据之间不满足8bit的延时,可以适当调整程序中的延时函数,确保数据按照正常速率传输。
(3)在连接J29的1、3管脚时,一定要将开发板处于断电模式,以免造成线路损坏。3.3.10RS488测试
RS488是一种广泛应用于工业控制领域的总线,采用平衡发送和差分接收方式,具有抑制共模干扰的能力,传输信号能在千米以外得到恢复。RS488采用两根发送信号线、两根接收信号线完成信号传输。
RS488标准规定:当两路信号差值在+2~+6 V之间时,认为是逻辑1;当两路信号差值在-2~-6 V之间时,认为是逻辑0;RS488采用全双工工作方式,收、发可以同时进行。EP9315内部集成了三个UART,UART1可配置为串口232,UART2可配置为红外接口,UART3可配置为串口488,外围芯片为MAX488。在RS488测试时,需要利用测试板辅助测试,这里提供488到232的转换电路以方便调试。调试连接图如图3.37所示。图3.37RS488调试连接图本系统中采用的芯片是MAX488转换芯片,其中TXD2与EP9315相连,发送数据通过该芯片由5、6管脚发出;接收到的数据通过7、8管脚输入芯片,由RXD2传至EP9315开发板。开发板上硬件连接图如图3.38所示。图3.38MAX488硬件连接图测试程序由发送和接收两部分组成,首先从488端口发送字符串“testrs488,Input:”,通过488-232转换电路,在PC机超级终端显示出来,等待接收数据。用户从超级终端中键入任意字符,通过488-232转换电路传递到开发板的488端口,此时读取488的寄存器内容,送回终端回显出来,按ESC键结束测试。测试流程如图3.39所示。图3.39MAX488测试流程图调试中注意事项:
(1)在系统配置寄存器Devicecfg中,默认使能的是uart1。在修改该寄存器的值之前,必须先对其进行解锁,方法是先向该寄存器中写入0xaa,然后再赋值。
(2)在配置控制寄存器uart3linctrl时,high寄存器必须放在最后配置才能生效。配置顺序可以是low→mid→high或者是mid→low→high。3.3.11网口测试
EP9315内嵌有一个以太网控制器,支持媒体独立接口(MediaIndependentInterface,MII)和带缓冲DMA接口(BufferedDMAInterface,BDI),可在半双工或全双工模式下提供10M/100M的以太网接入。虽然EP9315内部包含了以太网MAC控制,但并未提供物理层接口,因此,需外接一片物理层芯片以提供以太网的接入通道。常用的单口10M/100M高速以太网物理层接口器件主要有RTL8201、DM9161等,均可提供MII接口和传统7线制网络接口,可方便地与EP9315接口。本系统采用的是RTL8201芯片。以太网控制器工作流程主要由六个重要队列完成:发送/接收描述符队列,发送/接收状态队列,发送/接收数据队列。这里以接收描述符队列为例。接收描述符队列用来在主机和MAC控制器之间传递接收描述符,该队列的地址和大小通过初始化RDQBA、RDCA、RDQBL三个地址寄存器获得,基地址(QBA)与内存地址字对齐,当前地址(CA)设置为第一个可用的QBA时,描述符队列的长度是2的次方,否则,描述符处理器会工作异常,使接收数据帧出错。每一个描述符定义一个接收数据缓冲区,其由两个字组成。第一个字包括数据缓冲区的地址(RxBufAdr);第二个字由缓冲区长度(BufferLength)、缓冲区索引号(BufferIndex)、缓冲区帧结束符(NotSOF)组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州省黔西南兴仁市黔龙校2025年初三二轮检测试题(二模)数学试题试卷含解析
- 贵州省黔南州长顺县2023-2024学年英语八下期末联考试题含答案
- 贵州省黔南布依族苗族自治州平塘县2023-2024学年小升初总复习数学测试卷含解析
- 开闭幕词之学校颁奖典礼开幕词
- DB5119T 35-2024 巴山肉牛 屠宰技术规程
- 2024-2034年全球及中国护舷板行业市场发展分析及前景趋势与投资发展研究报告
- 《财务实训教程-智能财务共享》 课件 重大 认知课程及财务共享服务;资金结算共享
- 成品油快速检测移动实验室技术规范-地方标准草案报批稿
- 2024年版物流仓储管理与运输服务合同书
- 四年级数学三位数除以两位数单元作业训练题
- 初中八年级英语课件形容词比较级
- 影像学检查护理课件
- 过度换气急诊护理课件
- 绝缘技术监督培训课件
- 《口腔镇静和全麻》课件
- 儿童常见疾病的预防与护理
- 渗透“课程思政”的中学数学教学策略探究以《高中数学必修一第一册》教材为例
- 典型地铁突发事件应急管理案例分析上海地铁碰撞事故
- 《早餐的重要性》课件
- 安全生产法律法规汇编
- 全国优质课一等奖中职《就业与创业指导》课件
评论
0/150
提交评论