资源描述:
《华科串行接口AD转换实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、专业:电子信息工程姓名:班级:201401班学号:U201413278日期:年月日微机原理●实验●测试串行接口AD转换实验专业电子信息与通信学院班级电信1401班日期2016/05/12第4次试验姓名组别15指导老师成绩实验课题串行接口AD转换实验一.实验目的1.理解RS232串行通信协议以及接口设计2.理解SPI串行通信协议3.掌握RS232串行接口设计4.掌握SPI串行接口设计5.掌握串行AD/DA接口设计二.实验任务•SPI接口AD转换三个电平数据,打印结果到console,要求采用中断方式。三.实验原理DAC121S101中断控制方式接口电
2、路四.实验步骤1.硬件平台建立1)参照11章使用XPS创建一个基于AXI总线的最小计算机系统。1)添加AXIInterruptControllerIP核:a.在IPCatalog标签中,双击下面图标创建INTCIP核:b.将microblaze_0实例的INTERRUPT引脚选择axi_intc_0_INTERRUPT,如图:2)加入AXISPI接口控制器:a.如图所示,选择AXISPI。b.配置SPI接口参数如图所示。这是由于该SPI接口仅需要输出数据,而且一次传输需要16位数据,一个从设备,且D/A转换芯片要求SCLK最高速率30MHz,由于A
3、XI总线频率为100MHz,一次分频比为8,此时SCLK的频率仅为12.5MHz。c.设置端口连接配置,如图:1)为AXIINTC添加中断源,如图:2)配置UCF文件:在UCF文件中修改如图所示配置,此时是通过PMODJA上排插针进行连接:NET"CLK"TNM_NET=sys_clk_pin;TIMESPECTS_sys_clk_pin=PERIODsys_clk_pin100000kHz;NET"CLK"LOC="E3"
4、IOSTANDARD="LVCMOS33";NET"RESET"LOC="E16"
5、IOSTANDARD="LVCMOS33
6、";NET"RsRx"LOC="C4"
7、IOSTANDARD="LVCMOS33";NET"RsTx"LOC="D4"
8、IOSTANDARD="LVCMOS33";NET"axi_spi_0_SS_pin"LOC="B13"
9、IOSTANDARD="LVCMOS33";NET"axi_spi_0_MOSI_pin"LOC="F14"
10、IOSTANDARD="LVCMOS33";NET"axi_spi_0_MISO_pin"LOC="D17"
11、IOSTANDARD="LVCMOS33";NET"axi_spi_0_SCK_pin"LOC="E17"
12、
13、IOSTANDARD="LVCMOS33";3)创建工程过程完成后,a.在主界面下选择Hardware->GenerateNetlist;b.在主界面下选择Hardware->GenerateBitstream;c.单击GraphicalDesignView,可以看到系统的连接图,如下:1.软件平台建立(1)SDK提供的外设驱动以及应用程序1.点击project->ExpertHardwareDesigntoSDK…,点击Export&LaunchSDK:2.在SDK中,建一个空的c文件,输入源代码(2)源代码:#include"xparamete
14、rs.h"#include"xspi.h"#include"xintc.h"#include"xil_exception.h"#defineBUFFER_SIZE2voidSpiIntrandler(void*CallBackRef,u32Statusevent,u32Bytecount);staticXIntcIntcInstance;staticXSpiSpiInstance;volatileintTransferInProgress;intError;u8ReadBuffer[BUFFER_SIZE];u8WriteBuffer[BUFFER
15、_SIZE];intmain(void){intStatus;Status=XSpi_Initialize(&SpiInstance,XPAR_SPI_0_DEVICE_ID);Status=XIntc_Initialize(&IntcInstance,XPAR_INTC_0_DEVICE_ID);Status=XIntc_Connect(&IntcInstance,XPAR_INTC_0_SPI_0_VEC_ID,(XInterruptHandler)XSpi_InterruptHandler,(void*)&SpiInstance);Statu
16、s=XIntc_Start(&IntcInstance,XIN_REAL_MODE);XIntc_Enable(&Intc