首先完成AD7606的接线,GPIO配置,初始化、复位、启动转换等函数。

将SER接地,设置为并行模式,使用串口显示,显示结果不对,开始漫长的调试过程。

1.首先考虑时序是否有问题,对照数据手册,AD7606是在COA和COB触发上升沿后,开始进行转换,BUSY标志位置1,转换完成后标志位置0,而后开始读数,标志位置1后程序有循环语句,检测转换是否进行。

     READ_BUSY = GpioDataRegs.GPBDAT.bit.GPIO49;while(READ_BUSY == 1){
//          UARTa_SendString("a");delay_time_ns(15);READ_BUSY = GpioDataRegs.GPBDAT.bit.GPIO49;}

在循环中加入了判断语句:如果标志位置1了,则在串口发送a字母。结果串口一直没有接收到a,而且观察寄存器里的值,BUSY位始终是0,当时认为BUSY一直没有置1,转换没有进行,认为是时序存在问题。对程序单步调试,通过示波器观察每一个口的值,STBY、CS、RD、REST、OSI0、1、2等,按照逻辑顺了一遍,没有问题,但其中COB置为高电平时只有1.几V,COA是标准3.3V,初步判断是COB电平不够,可能不算上升沿,对COB换了一个IO口重新进行配置,电平变正常,但显示仍然不对。

(后来意识到没有发送a字母可能是BUSY转换最长只有几us,可能在判断时候BUSY已经置0了,也就是while循环只是一个为了防止数据还没有传完而设置的循环,其实已经完成转换了。)

另外,dsp自带的延时函数只有DELAY_US,us级,AD7606很多时序是在ns级,因此,创建了一个自减函数作为ns级延时,但跟设置的系统主频和指令执行速率有关,不是精确的,只是为了让延时在ns级。

2.不是时序问题后,对数据的读取进行检查。一开始使用GPIO0-9,12-17完成DB0-15的数据读取(IO10、11配置成其他功能了),IO口不连续,使用按位与和移位完成数据的读取,但读取值偏小,猜测可能是移位转换有问题,重新配置,将原本10、11的功能改用其他IO口,使用连续的GPIO0-15进行读取,读取数据比输入电压值小,而且小的没有规律,有时候小一半,有时候小0.2V左右,有时候又正常了。又猜测是否有接触不灵,对杜邦线通断检测也没问题。

     CS_RESET;delay_time_ns(35);     for(i=0;i<8;i++){RD_RESET;delay_time_ns(38);RD_SET;delay_time_ns(38);DB_data[i]=(GpioDataRegs.GPADAT.all) & 0x7fff;DB_vol[i]=DB_data[i]*10000.0/32768;if(((GpioDataRegs.GPADAT.all) & 0x8000) >> 15 == 1)//判断最高位是否为1{DB_symbol[i]=1;}}CS_SET;

3.AD7606供电刚开始使用28335上的A5V和AGND,但数据显示不对,比如通道输入直接接地,显示读取数据是C992、C988等等,反正不是零,改为GND后数据就对了,基本在0001,0002,虽然芯片原理图上显示要接AGND,但实际用GND才对了,这一点很奇妙。(不知为何)

4.后来偶然有一次同时接两通道,分别用电压源的两通道提供输入3V和4.5V,接3V的读取只有2V左右,4.5V基本正确,而将接3V的口断开,也接到4.5V上,发现也对了,所以并不是采集的问题,可能是提供的输入就不对,利用万用表对电压源输出的电压检测,与串口得到的值比较,是一样的,也就是采集是正确的,只是稳压源电压输出衰减了。。。

调试完再回头捋一下,当时在确定好时序后,一直将问题锁定在读取数的转换上,没想过读取的数可能就是不对的。。。

DSP-F28335与AD7606的并行模式调试问题相关推荐

  1. FPGA Verilog AD7606驱动代码,包含SPI模式读取和并行模式读取两种

    FPGA Verilog AD7606驱动代码,包含SPI模式读取和并行模式读取两种,代码注释详细 编号:7428665912784264白衫如初oh

  2. 在ADSP21489下外挂S29AL016J并行FLASH调试记录

    我哭,调试了5天 总结下在ADSP21489下挂S29AL016J并行flash调试记录 S29AL016J:2M*8bit 21489EZ-Kite M29W320EB: 4M*8Bit 在修改fl ...

  3. Simulink嵌入式自动代码DSP F28335(2)——SCI通信

    Simulink嵌入式自动代码DSP F28335(2)--SCI通信 简述 1.文件模型建立 1.1 自动代码文件 1.2 上位机文件Host 2.环境配置 2.1 Simulink配置 2.2 电 ...

  4. 设置Eclipse可以Debug模式调试JDK源码,并显示局部变量的值

    最近突然萌发了研究JDK源码的想法,所以就想到了在自己常用的Eclipse上可以调试JDK源码. 整个设置过程也很简单: 首先你要安装好JDK(我的JDK安装路径根目录是D:\Java\jdk-8u9 ...

  5. 并行程序调试、测试与模型检测

    并行程序调试.测试与模型检测 并行程序调试的挑战: 1.由于不能确定不同线程的执行顺序,导致可能的执行路径发生组合爆炸: 2.使用模型检验程序正确性能以应用到分布式系统上. 名词解释 确定性重放:通过 ...

  6. NVIDIA CUDA 高度并行处理器编程(九):并行模式:稀疏矩阵-向量乘法

    并行模式:稀疏矩阵-向量乘法 背景 使用 CSR 格式的并行 SpMV 填充与转置 使用混合方法来控制填充 通过排序和划分来规则化 介绍并行算法中的压缩与规格化 背景 稀疏矩阵是很多元素是 0 的矩阵 ...

  7. 学会使用debug模式调试代码

    在企业开发中,质量和效率显得尤为重要.学会通过debug模式调试代码是每一个开发的必修课.下面我通过一个案例来描述一下如何来调试.跟踪代码. 步骤:在接口或方法的入口打上调试端点,如下所示. 通过&q ...

  8. 并行模式与算法(一)

    一.高性能生产者-消费者:无锁实现 BlockigQueue使用锁和阻塞等待来实现线程间的同步,而ConcureentLinkedQueue使用大量的无锁CAS操作,相比BlockigQueue的性能 ...

  9. NVIDIA CUDA 高度并行处理器编程(七):并行模式:前缀和

    并行模式:前缀和 背景 简单并行扫描 效率 高效的并行扫描 更大长度的并行扫描 背景 前缀和(prefix sum)也叫扫描(scan),闭扫描(inclusive scan)操作对 n 元数组[x0 ...

  10. OpenMP和MPI并行模式的区别?

    1.OpenMP OpenMP是一种用于共享内存并行系统的多线程程序设计的库(Compiler Directive),特别适合于多核CPU上的并行程序开发设计.它支持的语言包括:C语言.C++.For ...

最新文章

  1. linux单步跟踪命令,dbx调试跟踪的常用子命令
  2. 16进制/10进制数转化为浮点型案例
  3. 盘点国内互联网圈中程序员出身的商业大佬,看谁主沉浮!
  4. oc知识点 类的扩展
  5. java并发练习之快乐影院
  6. 2021浙江高考首考成绩查询,浙江2021选考成绩什么时候出成绩?附2021浙江学考成绩查询时间...
  7. 直播APP系统源码,直播系统源码 直播系统源码
  8. 佛山科学技术学院计算机科学与技术李欣华,第七届国务院学位委员会中文学科评议组2019年度 扩大会议在佛山科学技术学院召开...
  9. linux 服务器远程开机,详解使用Ubuntu系统中实现远程开机的方法
  10. VBS教程--摘自百度百科
  11. 062:vue+openlayers绘制正方形、矩形、六芒星( 代码示例 )
  12. 线性电路中DAC和ADC的校准
  13. iQOO Z3、OPPOK9和小米11青春版的区别 哪个好
  14. 计算机论文指导记录范本,论文指导内容记录怎么写 3篇 论文指导记录20篇
  15. sqlserver2000安装程序以及补丁下载
  16. 日语在线学习网站简介
  17. 中国软件:10个人 , 20年坎坷路!
  18. 记录一次服务器CPU负载高,利用率正常的处理方法
  19. php工程导致系统蓝屏,win10莫名其妙蓝屏怎么解决
  20. 中国石油大学《机械设计课程设计》在线考试

热门文章

  1. (三)进程各种id:pid、pgid、sid、全局pid、局部pid
  2. 千图成像!祝可爱的小伙伴们圣诞快乐!给女朋友一个惊喜吧!
  3. IEC104 规约详细解读(一) 协议结构
  4. 盘古开源:中央网信办发布“十四五”国家信息化规划,数字化春风吹遍全国
  5. 如何生成白底一寸照?怎么制作白底证件照?
  6. N、NP、NPC问题分析总结
  7. 最新2020版IDEA下载安装教程
  8. get 和 post 区别
  9. Java - HuTool 使用 PhoneUtil、ReUtil等工具类(三)
  10. 新人Unity下载安装