sail-imx6q ad7606模块调试记录
AD7606

N0AD DB7 AD DB7 N0AD DB8 AD DB8
V3
N0V4IN V4IN
P0R51201 P0R51202
R512 1k
N0V4 V4
C
N0AGND AGND
R513 1k
P0R51301 P0R51302
C516 470pF N0V4GND V4GND
N0V5
N0V6
N0V5IN V5IN N0REGCAP C502 P0C50201 REGCAP 1uF P0C50202
P0U5048 48 AVCC P0U5047 47 AGND P0U5046 46 REFGND P0U5045 45 REFCAPB P0U5044 44 REFCAPA P0U5043 43 REFGND P0U5042 42 REFIN/REFOUT P0U5041 41 AGND P0U5040 40 AGND P0U5039 39 REGCAP P0U5038 38 AVCC P0U5037 37 AVCC P0U5036 36 REGCAP P0U5035 35 AGND P0U5034 34 REF SELECT P0U5033 33 DB15/ByteSEL
1 P0U501 AVCC 2 P0U502 AGND 3P0U503 OS0 4P0U504 OS1 5P0U505 OS2 6 P0U506 PAR/SER/BYTE SEL 7 P0U507 STBY 8 P0U508 RANGE ADN0AD CONVA CONVA 9 P0U509 CONVSTA ADN0AD CONVB CONVB 10 P0U5010 CONVSTB R501 10k AD RESET P0U5011 N0AD RESET 11 P0R50101P0R50102 RESET R502 10k AD nRD12 P0U5012 N0AD NRD P0R50201P0R50202 RD/SCLK R503 10k AD nCS 13 N0AD NCS P0U5013 P0R50301P0R50302 CS R504 10k AD BUSY P0U5014 N0AD BUSY 14 P0R50401P0R50402 BUSY 15 P0U5015 FRSTDATA N0AD DB0 AD DB016 P0U5016 DB0
AD7606调试过程与源码

AD7606调试过程与源码展开全文公司有一个项目用到了AD7606,控制器用的STM32,使用的模式是并行16位模式,程序刷好之后发现读取的AD数据乱码,结果发现是因为AD7606的接地不对,当然这个问题是我师傅找出来的,查找的过程如下:用示波器看了BUSY线,转换线等各种线的波形,目的是确定芯片是否正常工作。
师傅又测量了V1通道两端的波形,在没有给输入的情况下发现存在波形。
后面师傅又去看了下手册,发现V1通道需要接AGND,基准电压接地脚同样要接AGND,但是在电路中,V1与V8通道与基准电压接地脚的地线都分开了,通道接到了24V地,基准接到了3V3,所以导致读取的数据乱码。
原因就是地线分开了。
#include "delay.h" //.C文件#include "ad7606.h"#include "dac.h"void AD7606_reset(void);void AD7606_startConv(void);u16 AD7606_readFirstData(void);/************************************************函数名称: AD7606_config功能:初始化AD7606引脚参数:无返回值:无*************************************************/void AD7606_config(void){GPIO_InitTypeDef GPIO_initStructure;RCC_APB2PeriphClockCmd(AD7606_PORT_RCC,ENABLE);//开启AD7606引脚时钟GPIO_initStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//16位数据端输入GPIO_initStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_initStructure.GPIO_Pin = AD7606_DATA_PORT;GPIO_Init(AD7606_DATA_GPIOx,&GPIO_initStructure);GPIO_initStructure.GPIO_Pin = AD7606_FRST_PORT; //FRST引脚配置,浮空输入GPIO_Init(AD7606_FRST_GPIOx,&GPIO_initStructure);GPIO_initStructure.GPIO_Pin = AD7606_BUSY_PORT; //BUSY 引脚,浮空输入GPIO_Init(AD7606_BUSY_GPIOx,&GPIO_initStructure);GPIO_initStructure.GPIO_Mode = GPIO_Mode_Out_PP ; //推挽输出方式GPIO_initStructure.GPIO_Pin = AD7606_RANGE_PORT; //RANGE配置GPIO_Init(AD7606_RANGE_GPIOx,&GPIO_initStructure);GPIO_initStructure.GPIO_Pin = AD7606_OS0_PORT; //过采样引脚配置GPIO_Init(AD7606_OS0_GPIOx,&GPIO_initStructure);GPIO_initStructure.GPIO_Pin = AD7606_OS1_PORT;GPIO_Init(AD7606_OS1_GPIOx,&GPIO_initStructure);GPIO_initStructure.GPIO_Pin = AD7606_OS2_PORT;GPIO_Init(AD7606_OS2_GPIOx,&GPIO_initStructure);GPIO_initStructure.GPIO_Pin = AD7606_CONAB_PORT; //转换配置GPIO_Init(AD7606_CONAB_GPIOx,&GPIO_initStructure);GPIO_initStructure.GPIO_Pin = AD7606_RST_PORT; //复位GPIO_Init(AD7606_RST_GPIOx,&GPIO_initStructure);GPIO_initStructure.GPIO_Pin = AD7606_RD_PORT; //RDGPIO_Init(AD7606_RD_GPIOx,&GPIO_initStructure);GPIO_initStructure.GPIO_Pin = AD7606_CS_PORT; //CSGPIO_Init(AD7606_CS_GPIOx,&GPIO_initStructure);AD7606_RANGE_10V();AD7606_CS_HIGH();AD7606_RST_LOW();AD7606_RD_HIGH();AD7606_CONAB_HIGH();AD7606_SampleRate(AD7606_SAMPLE_200K);}/**@brief 设置AD7606采样频率@param -sampleRate- AD7606_SAMPLE_200K: 采样频率200kHz \nAD7606_SAMPLE_100K: 采样频率100kHz \nAD7606_SAMPLE_50K: 采样频率50kHz \nAD7606_SAMPLE_25K: 采样频率25kHz \nAD7606_SAMPLE_12K5: 采样频率12.5kHz \nAD7606_SAMPLE_6K25: 采样频率6.25kHz \nAD7606_SAMPLE_3K125:采样频率3.125kHz \n*/void AD7606_SampleRate(u8 sampleRate){switch(sampleRate){case AD7606_SAMPLE_200K: //采样频率200kHzAD7606_OS0_LOW();AD7606_OS2_LOW();break;case AD7606_SAMPLE_100K: //采样频率100kHz AD7606_OS0_HIGH();AD7606_OS1_LOW();AD7606_OS2_LOW();break;case AD7606_SAMPLE_50K: //采样频率50kHz AD7606_OS0_LOW();AD7606_OS1_HIGH();AD7606_OS2_LOW();break;case AD7606_SAMPLE_25K: //采样频率25kHz AD7606_OS0_HIGH();AD7606_OS1_HIGH();AD7606_OS2_LOW();break;case AD7606_SAMPLE_12K5: //采样频率12.5kHz AD7606_OS0_LOW();AD7606_OS1_LOW();AD7606_OS2_HIGH();break;case AD7606_SAMPLE_6K25: //采样频率6.25kHz AD7606_OS0_HIGH();AD7606_OS2_HIGH();break;case AD7606_SAMPLE_3K125: //采样频率3.125kHzAD7606_OS0_LOW();AD7606_OS1_HIGH();AD7606_OS2_HIGH();break;default:AD7606_OS0_LOW(); //采样频率200kHzAD7606_OS1_LOW();AD7606_OS2_LOW();break;}}/**@brief AD7606读取转换值@param -data- 8个16位元素的数组,用来存储8通道转换值。
基于STM32及AD7606的16通道同步数据采集系统设计

基于STM32及AD7606的16通道同步数据采集系统设计摘要: 介绍了基于STM32及AD7606的同步数据采集系统的软硬件设计。
主控芯片采用基于ARM Cortex-M4内核的STM32F407IGT6,实现对AD 采集数据的实时计算并通过以太网络进行数据传输。
A7606为16位、8通道同步采样模数数据采集系统[],利用两片AD7606,可以实现对16路通道的实时同步采样。
经过测试,该系统可以实现较高精度的实时数据采集。
0 引言[此处找书介绍STM32],该芯片主频可达168MHz,具有丰富的片内外设,并且与前代相比增加了浮点运算单元(Floating Point Unit,FPU),使其可以满足数据采集系统中的 [介绍AD7606]1 系统总体方案设计整个系统由传感器模块、信号调理模块、数据采集模块、处理器STM32、及通信模块及上位机系统组成。
系统整体结构框图如图1所示。
本系统是为液态金属电池性能测试设计,需要测量电池的充放电电压、电流以及交流加热系统的电压、电流,并以此计算出整个液态金属电池储能系统的效率。
因此两片AD7606的16个通道分为两组,每组8个通道,这两组分别测量4路直流、交流的电压和电流信号。
AD7606通过并行接口与STM32连接,STM32读取AD 采样数据后进行计算,并将数据通过网络芯片DP83848通过UDP 协议发送给上位机。
上位机负责显示各通道采集信息、绘制波形以及保存数据等。
STM32F407IGT6霍尔直流传感器上位机软件DP83848直流信号交流信号交流互感器调理电路调理电路AD7606AD7606图1 系统整体结构框图2 系统硬件设计2.1 模拟信号采集电路设计 模拟信号的采集包含直流电压、电流,交流电压、电流四部分。
直流信号的采集分别使用霍尔电压传感器HNV025A 和霍尔电流传感器HNC100B ,两种传感器的电路原理图类似,仅以霍尔电压传感器电路原理图为例说明,如图2-1所示。
SylixOS-EVB-iMX6Q使用手册-翼辉信息

目录目录 (1)第1章SylixOS-EVB-i.MX6Q 验证平台介绍 (1)1.1SylixOS-EVB-i.MX6Q 验证平台简介 (1)1.2SylixOS-EVB-i.MX6Q 验证平台实物图 (2)1.3SylixOS-EVB-i.MX6Q 验证平台硬件配置 (3)第2章SylixOS-EVB-i.MX6Q 验证平台快速体验 (4)2.1验证平台上电及启动项选择 (4)2.1.1验证平台系统IP地址修改 (6)2.1.2验证平台系统升级 (7)第3章SylixOS系统调试及uboot配置 (9)3.1基于u-boot的文件传输 (9)3.2u-boot下存储介质操作和系统固化 (12)3.3u-boot启动命令与Cache操作 (12)第1章SylixOS-EVB-i.MX6Q 验证平台介绍1.1 SylixOS-EVB-i.MX6Q 验证平台简介SylixOS-EVB-i.MX6Q验证平台是北京翼辉信息技术有限公司为方便SylixOS用户充分评估SylixOS功能和性能推出的高端ARM-SMP验证平台。
该验证平台基于使用i.MX6Q工业级CPU设计,可以直接进行多种软硬件的性能评估和测试。
SylixOS-EVB-i.MX6Q是北京翼辉信息技术有限公司推出的第一代ARM-SMP验证平台,采用i.MX6Q Cortex-A9处理器,可以测试常见的嵌入式通信接口如RS232、CAN、USB、PCIE、SATA、SDIO、以太网、I2C、LVDS、LCD、HDMI等。
SylixOS-EVB-i.MX6Q还包含3个扩展接口,可以测试自定义的I2C、SPI、UART模块或外扩设备。
i.MX6Q 是一款适用于消费电子、工业以及汽车车载娱乐系统等众多领域的新一代应用处理器。
基于ARM Cortex-A9架构,40nm工艺制程,最高运行频率可达1.2GHz,支持ARMv7TM、Neon、VFPV3和Trustzone 。
思美760教程

六 个 分 区
Zone Mix760教程
输出均衡器模块
相位 控制
高频 带 切点 宽
开 关 率
斜
低 频带 切 点宽
开 关 率
斜 时
延
Zone Mix760教程
输出限幅器模块
启 动 电 平
恢复时间 电平监视器
定值衰减
Zone Mix760教程
输出控制
静音按扭
音量推子
Zone Mix760教程
寻呼模块
对在SOURCES中选择的 PROGRAM 2信号源调节
Zone Mix760教程
所 分 区 域 个 区 域 号 的 编 760 共 有 6
分区混合模块
注意: 如右图为 区域1的 总音源是 由第1路 到第10路 音源共同 混合所得。 其他各个 区域与此 区域调节 相同
Zone Mix760教程
STATION PRIORITY模块
AD7606中文电路描述

此电路中所用产品∙AD7606∙AD7606-4∙AD7606-6∙ADR421特点∙多通道同时采样数据采集系统∙实现16位性能的布局指南应用:∙可编程逻辑控制和分布式控制系统∙电子测试和测量添加到信号链设计器使用信号链设计器BETA设计资源设备驱动Software,such as C code and/or FPGA code,used to communicate with a component's digital interface.∙AD7606IIO Multi-Channel Simultaneous Sampling ADC Linux Driver(Wiki Site) FPGA HDL∙CED1Z FPGA Project for AD7606with Nios driver电路功能与优势在电力线路测量和保护系统中,需要对多相输配电网络的大量电流和电压通道进行同步采样。
这些应用中,通道数量从6个到64个以上不等。
AD76068通道数据采集系统(DAS)集成16位双极性同步采样SAR ADC 和片内过压保护功能,可大大简化信号调理电路,并减少器件数量、电路板面积和测量保护板的成本。
高集成度使得每个AD7606只需9个低值陶瓷去耦电容就能工作。
在测量和保护系统中,为了保持多相电力线网络的电流和电压通道之间的相位信息,必须具备同步采样能力。
AD7606具有宽动态范围,是捕获欠压/欠流和过压/过流状况的理想器件。
输入电压范围可以通过引脚编程设置为±5V或±10V。
此电路笔记详细介绍针对采用多个AD7606器件应用而推荐的印刷电路板(PCB)布局。
该布局在通道间匹配和器件间匹配方面进行了优化,有助于简化高通道数系统的校准程序。
当通道间匹配非常重要时,此电路可以使用2.5V内部基准电压源AD7606;而对于要求出色绝对精度的高通道数应用,此电路可以使用外部精密基准电压源ADR421,它具有高精度(B级:最大值±1mV)、低漂移(B级:最大值3ppm/°C)、低噪声(典型值1.75μV p-p,0.1Hz至10Hz)等特性。
基于自适应采样频率与AD7606的振动信号采集方法
基于自适应采样频率与AD7606的振动信号采集方法李驰;丛培田;段智敏;刘晓旭【摘要】针对工业上的高精度振动信号采集需求,提出了一种使用锁相环倍频电路自动控制AD7606采样频率的3 kHz超高速振动信号采集方法;实现了无论振动频率如何变化,采样频率都会因为锁相环的作用而始终保持为振动频率的固定倍数;STM32F407通过捕获机械设备的旋转光电脉冲信号计算振动频率并通过并口完成与AD7606的数据传输;信号采集完成后,STM32F407使用离散傅里叶变换计算振动信号的幅值和相角并通过串口将数据传输给上位机.实验表明,该方法可以实现超高速旋转设备振动信号的高精度采集.%In view of the demand of high precision vibration signal acquisition in the industrial, a new ultra high speed vibra-tion signal collection method for 3000Hz frequency using phase locked loop frequency multiplication circuit to automatically con-trol the AD7606 sampling frequency was put forward. No matter how the frequency of vibration is changed, the sampling frequen-cy was always kept as a fixed multiple of the vibration frequency because of the function of the phase locked loop. STM32F407 calculated the vibration frequency by capturing the rotating photoelectric pulse signal of mechanical equipment and data was transmitted with AD7606 through the parallel port. STM32F407 calculate the amplitude and phase of vibration signal using DFT after signal acquisition complete, and data was transmitted to the host computer through the serial port. Experimental results show that the method can achieve high precision acquisition of vibration signal of ultra high speed rotating equipment.【期刊名称】《仪表技术与传感器》【年(卷),期】2017(000)007【总页数】5页(P116-120)【关键词】数据采集;锁相环;频率跟踪;幅值相角;AD7606;STM32【作者】李驰;丛培田;段智敏;刘晓旭【作者单位】沈阳理工大学机械工程学院,辽宁沈阳 110159;沈阳理工大学机械工程学院,辽宁沈阳 110159;沈阳理工大学机械工程学院,辽宁沈阳 110159;沈阳理工大学机械工程学院,辽宁沈阳 110159【正文语种】中文【中图分类】TP27转子不平衡是旋转机械中的常见问题,也是诱发转子系统故障的主要原因之一[1]。
AD7606数据采集板使用ASCII码传递BINARY数据
AD7606数据采集板使⽤ASCII 码传递BINARY 数据■ 问题提出在 后⾯更新了不带板内缓冲区的C51程序。
采集板与计算机之间存在两种实时数据通道:通过USB-RS232转接串⼝,波特率为460800通过WiFi-UART模块,波特率为460800,但是实际传输速率要⼩于460800为了能够利⽤ 界⾯作为接受数据的缓冲界⾯,这样就需要能够利⽤ASCII码来⾼效传输⼆进制数据。
传统的⽅式通过C51的printf函数,将⼆进制转换成ASCII字符串通过串⼝发送出去,虽然这样有很强的可读性,但是存在着很⼤的转换效率低下:通常⼀个两字节(16bit)的⼆进制,最⼤需要6个字节(带有符号位)。
⽐如有符号整数 0xd8ef : -10000。
为了分割连续两个数字,其间还需增加⼀个空格(0x20)因此,最⼤需要是踹死7个字节来传输⼀个16bit的数据。
传输效率浪费了:▲ ISP下载软件界⾯■ Base64编码⽅式在⽹页 给出了Base64编码的具体⽅式。
它将连续三个字节(24bit)转换成四个6bit组,按照下⾯的表格找到对应的ASCII码。
这样的转换效率为通过Base64的转换⽐普通的ASCI字符效率提⾼了:在实际实现中,将原来的 “62”编码为$+$,修改为$*$,这样在下载程序界⾯可以避免换⾏的。
整个显⽰是铺满Mem0界⾯。
■ C51编码程序和Python 解码程序η=ascii 27▲ ISP 下载软件界⾯▲ Base64编码字符表格η=base 6434η=Δ=ηbase 64ηascii =4/37/2=8212.6251. C51的编码/***============================================================================== ** BASE64ASCII.C: -- by Dr. ZhuoQing, 2020-06-04****============================================================================== *///------------------------------------------------------------------------------#define BASE64ASCII_GLOBALS 1 // Define the global variables#include"BASE64ASCII.H"#include"c51basic.H"//------------------------------------------------------------------------------void Base64ASCIISendChar(unsigned char ucChar){SendChar(ucChar);}//------------------------------------------------------------------------------void Base64ASCIIInit(void){g_ucBase64ASCIIBufferPoint =0;}//------------------------------------------------------------------------------void Base64ASCIIPushByte(unsigned char ucByte){g_ucBase64ASCIIBuffer[g_ucBase64ASCIIBufferPoint ++]= ucByte;if(g_ucBase64ASCIIBufferPoint >=3){Base64ASCIIFlushBuffer();}}unsigned char Base64ASCII6BitChar(unsigned char ucBit){if(ucBit <26)return'A'+ ucBit;if(ucBit <52)return(ucBit -26)+'a';if(ucBit <62)return(ucBit -52)+'0';if(ucBit ==62)return'*';if(ucBit ==63)return'/';return'=';}//------------------------------------------------------------------------------void Base64ASCIIFlushBuffer(void){unsigned char ucDim[4];unsigned char ucChar, ucNibble;if(g_ucBase64ASCIIBufferPoint ==0)return;ucChar = g_ucBase64ASCIIBuffer[0];ucNibble = ucChar <<4;ucDim[0]=Base64ASCII6BitChar(ucChar >>2);ucChar = g_ucBase64ASCIIBuffer[1];ucDim[1]=Base64ASCII6BitChar((ucNibble &0x30)|(ucChar >>4));ucNibble =(ucChar &0xf)<<2;ucChar = g_ucBase64ASCIIBuffer[2];ucDim[2]=Base64ASCII6BitChar(ucNibble |(ucChar >>6));ucDim[3]=Base64ASCII6BitChar(ucChar &0x3f);if(g_ucBase64ASCIIBufferPoint ==1){ucDim[2]='=';ucDim[3]='=';}else if(g_ucBase64ASCIIBufferPoint ==2){ucDim[3]='=';}Base64ASCIISendChar(ucDim[0]);Base64ASCIISendChar(ucDim[1]);Base64ASCIISendChar(ucDim[2]);Base64ASCIISendChar(ucDim[3]);g_ucBase64ASCIIBufferPoint =0;}//============================================================================== // END OF THE FILE : BASE64ASCII.C//------------------------------------------------------------------------------/***============================================================================== ** BASE64ASCII.H: -- by Dr. ZhuoQing, 2020-06-04**** Description:****============================================================================== */#ifndef __BASE64ASCII__#define __BASE64ASCII__//------------------------------------------------------------------------------#ifdef BASE64ASCII_GLOBALS#define BASE64ASCII_EXT#else#define BASE64ASCII_EXT extern#endif// BASE64ASCII_GLOBALS//------------------------------------------------------------------------------//============================================================================== void Base64ASCIISendChar(unsigned char ucChar);//------------------------------------------------------------------------------void Base64ASCIIInit(void);BASE64ASCII_EXT unsigned char g_ucBase64ASCIIBuffer[3];BASE64ASCII_EXT unsigned char g_ucBase64ASCIIBufferPoint;void Base64ASCIIPushByte(unsigned char ucByte);void Base64ASCIIFlushBuffer(void);unsigned char Base64ASCII6BitChar(unsigned char ucbit);//============================================================================== // END OF THE FILE : BASE64ASCII.H//------------------------------------------------------------------------------#endif// __BASE64ASCII__2. Python解码程序def Base64Ascii2Bit(ascii):ascii=int(ascii)if ascii>=ord('A')and ascii<=ord('Z'):return ascii-ord('A')if ascii>=ord('a')and ascii<=ord('z'):return ascii-ord('a')+26if ascii>=ord('0')and ascii<=ord('9'):return ascii-ord('0')+52if ascii==ord('*'):return62if ascii==ord('/'):return63return0def Base64Ascii2Byte(fourb):data =bytearray()bits0 = Base64Ascii2Bit(fourb[0])bits1 = Base64Ascii2Bit(fourb[1])bits2 = Base64Ascii2Bit(fourb[2])bits3 = Base64Ascii2Bit(fourb[3])data.append(bits0 *4+int(bits1 /16))data.append((bits1 &0xf)*16+int(bits2 /4))data.append((bits2 &0x3)*64+ bits3)if fourb[2]==ord('=')and fourb[3]==ord('='):data = data[0:1]return dataif fourb[3]==ord('='):return data[0:2]return datadef Base64Ascii2Data(ascii):data =bytearray()length =len(ascii)for i in range(int(length /4)):bytedata = Base64Ascii2Byte(ascii[i*4:i*4+4])if len(bytedata)>0:data.extend(bytedata)valdim =[x*256+y for x,y in zip(data[0::2], data[1::2])]valdim =[(d &0x7fff)-(d &0x8000)for d in valdim]return valdim■ 最⼤采样速率测试结果经过测试,在 上,对⼋个通道进⾏周期为1毫秒的采集,实际上传速率为 16kByte/s。
ADC–AD7606
新一代16位8通道同步采样ADC–AD7606在智能电网中的应用于克泳1,孙建军2(1.亚德诺半导体技术(上海)有限公司,上海 2000212. 世健国际贸易(上海)有限公司南京办事处,南京 210005)摘要:AD7606是ADI公司推出的新一代16位、8通道、同步采样、双极性输入的模拟数字转换器ADC。
本文以国家智能电网的发展为契机,基于智能化变电站的解决方案,重点介绍AD7606系列ADC的设计要点和注意事项,为电力系统二次设备的开发提供有力的帮助。
关键词:ADC AD7606 智能电网智能化变电站Next Generation 16-Bit, 8-channels, Simultaneous Sampling ADC- AD7606 and its application in Smart GridAbstract:Growing as electricity demand increases, “smart grid” need for more efficient utility substations and management, monitor and control energy consumption, cost, and quality. Analog Devices, Inc. (ADI) introduced a 16bit, 8-channels, bipolar, simultaneous-sampling ADCs (analog-to-digital converters) in year 2010, this new ADCs provide the resolution and performance needed for next-generation utility substations designs that ensure the reliable power-line transmission and distribution in the world.Key Words: ADC; AD7606; Smart Grid; Digital Substation1引言低碳时代的到来,智能电网是当今世界电力系统发展变革的最新动向,也是一项庞大的系统工程。
ad7606教程.
一、前言学习NIOS的必备条件:具有一定的单片机基础;具有一定的C语言编程能力;了解Quartus II的开发流程;一块开发板。
二、建立工程首先,打开Quartus II 9.0 软件。
接下来,建立一个工程File->New Project Wizard第一行是工程的路径,你选择你放置的路径即可,第二,第三行都是工程名(注意:工程名不要用中文,路径中也不要含有中文字符,否则后面编译时会出错),写好以后如下,点击Next,点击后,如下图所示,这个不需要改动,接着点击Next,点击后,如下图所示,Family 里选择Cyclone II,在Available devices中选择EP2C8Q208C8(具体内容根据你的芯片所定)。
接着点击Next,不需要修改,点击Finish,显示如下图所示。
至此为止,工程已经建立完成。
接下来,需要建立一个Block Diagram/Schematic File,点击File->New,如下图所示:点击OK,完成建立,工程中出现了一个Block1.bdf 文件。
三、AD7606的工作原理1.工作原理AD7606是8通道16位逐次逼近型ADC,有2种接口模式:串行接口模式和高速的并行接口模式,并行接口模式又分为8位和16位传送方式。
在数据转换时,2个转换信号CONVSTA/B,用来控制每4个或每8个ADC同时采样。
如果将2个CONVST引脚连接在一起,就可对8个ADC同时进行采样。
在CONVSTX的上升沿,被选择的ADC对被置为保持模式,转换开始。
CONVSTX的上升沿过后,BUSY信号变为高电平表明转换正在进行,转换时间是2μs,BUSY信号返回低电平表明转换结束。
在BUSY信号的下降沿,ADC 回到跟踪模式,数据可以通过并行或串行接口从输出寄存器读出。
16位并行接口读取数据时可以用CS和RD信号通过并行数据总线从AD7606读取数据。
通过并行总线读取数据时,需将PAR/SER/BYTE SEL引脚和低电平相连。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SAIL-IMX6Q AD7606模块调试记录
1 本文总结了调试AD7606模块的过程,遇到的问题及解决方法。
主要问题出现在了硬件焊接上,包括焊接芯片,贴片元器件,焊接连接线出现虚焊,焊连等情况,最终导致了在调试时出现返回值不正确的问题。
2 驱动移植
(1)将AD7606驱动拷贝到
/sail-imx6q-linux-4.1.15/drivers/staging/iio/adc/目录下,包括ad7606.h、ad7606_core.c、ad7606_par.c、ad7606_ring.c、ad7606_spi.c;
将spi.c、imx-spi.c拷贝到/sail-imx6q-linux-4.1.15/drivers/spi/目录下。
(2)通过&ecspi2完善ecspi2节点信息
在/arch/arm/boot/dts/sail-imx6q.dts中通过使用&ecspi2访问ecspi2这个节点,该节点用来描述开发板上的spi信息。
在/arch/arm/boot/dts目录下使用gedit打开sail-imx6q.dts如下图:
完善后的节点信息如下图
(3)编写AD7606引脚信息
编写iomux信息,具体参考imx6q原理图,下图是根据原理图中的引脚连接方式编写的iomux信息,
配置内核,在~/sail-imx6q-linux-4.1.15目录下执行make menuconfig,
进行如下修改,
Device Drivers --->
[*] SPI support --->
-*- Utilities for Bitbanging SPI masters
<*> GPIO-based bitbanding SPI Master
<*> Freescale i.MX SPI controllers
<*> User mode SPI device driver support
Device Drivers --->
[*] Staging drivers --->
IIO staging drivers --->
Analog to digital converters --->
<*> Analog Devices AD7606 ADC driver
<*> spi interface support
<*> Industrial I/O support --->
---Industrial I/O support -*- Enable buffer support within IIO
[*] IIO callback buffer used for push in-kernel interfaces
-*- Industrial I/O buffering based on kfifo
-*- Enable triggered sampling support
修改完毕后,选择<Save>保存。
退出。
重新编译内核,执行
make -j8 zImage ZIMAGE_LOADADDR=0x10008000
编译时间较长,需等待几分钟。
编译结果如下图
将重新编译的zImage及sail-imx6q.dtb拷贝到指定位置,重新烧录linux 系统。
3 调试
下图是实物图的正面,图中绿色板子为IMX6Q主板,蓝色板子是AD7606模
块。
由于是测试,直接将AD模块的5V电源引出至模拟输入(图中杜邦线连线)。
下图是实物图的反面,因为在测试过程中发现直接用杜邦线连接会导致接触不实,故直接将连接相应管脚的线焊上。
后又发现线很容易断,用胶将焊接部分
粘起来。
将主板上的SW4拨码开关拨至01,SW3拨码开关拨至0111,选择eMMC启动模式。
在PC机打开超级终端,打开SAIL-IMX6Q主板电源,正常启动如下图
输入root,进入root用户。
输入 cd /sys/bus/iio/device/查看设备节点,如下图所示。
若不存在节点则证明驱动移植失败,需重新移植,若节点存在,则可进入节点测试AD模块是否能正常使用。
进入节点,执行cat in_voltage0_raw 查看转换结果
本次在模拟输入端接入5V输入,转换结果为32767,经过公式计算:
32767*10/(216-1)=4.9999≈5V
调试过程出现的问题
(1)返回值为空,
原因及解决办法:经过测量,AD模块的CS和CLK脚连接,模块损坏,重新焊一块AD模块;
(2)返回值有时正常,有时为0,
原因及解决办法:使用杜邦线连接,有的线很松,可能是线的问题,将AD模块与板卡的连接线直接焊到相应管脚上。
焊完后经测试能正常使用。
4 总结
这次调试AD7606,软件的移植工作是照着文档做的,所以并没有出现太大的问题,主要是焊接遇到的问题,包括焊接芯片和贴片元器件。
因为之前几乎没有焊接过贴片元器件,导致这次焊的良莠不齐,虚焊,芯片管脚锡连在一起经常发生。
其次就是开始测试时返回值不正确,感觉无从下手,不知道是软件问题还是硬件问题,对照了半天软件配置,没有发现错误,浪费了很多时间,也没有发现问题所在,然后着手测试硬件,但由于不知道哪里出问题,只能蒙着测,所幸找到问题,重新焊了一块能正常使用了。