当前位置:首页 > 技术学院 > 技术前线
[导读]DSP28335与AD7606通过SPI的串行数据交互

弄了三天的DSP28335与AD7606的通信终于实现了。最终的方案是通过DSP28335控制AD7606的采样,采集的数据通过SPI串口发送给28335,然后28335通过串口发送给上位机显示。

其实程序第一天就写好了,但是一直读不出AD7606采集到的数据,所以后两天主要是调试。

对于程序员来说,调试是最重要的能力,也还最考验人的耐心的,因为很小的细节出错就可能导致意想不到的结果,而且明明感觉是对的东西,有时确是错误的。

下面就说下这个调试过程。

首先程序是一部分一部分的实现的,这样的话容易定位出错的模块,首先实现的是DSP与上位机的串口通信,这个在上篇的博客中有说明。

另一个模块即是DSP控制AD7606的采样与通信。AD7606购买的是一个模块,外围的电路已经设计好,各功能引脚已经引出,而且给出了STM32与AD7606的控制程序,但这个程序只是用于STM32,而且中间的设置及寄存器配置都是根据STM32来的,所以说要用到28335上需要大量的修改。所以还是相当于从头来写,因为程序的框架可以按照给的程序来写,所以还是节省了许多的工作。不过写好之后发现上位机什么也没有显示。之后漫长的调试过程就来了。

既然读不到数据,首先想到的是SPI的控制是不是有问题,利用DSP28335自有的SPI回环测试功能测试了一下,又修改了下SPI的配置,但是还是没有数据。之后想确认下是否执行了SPI中断程序,发现SPI的中断程序没有执行,但是可以进入外部中断程序,这个外部中断程序是由AD7606的BUSY引脚产生的,当启动转换的时候BUSY会变成高电平,转换完成后又变成低电平。这个过程中间有个下降沿,利用此下降沿产生中断然后开始读取转换后的数据。说明AD7606工作了,且完成了转换。但是通过观察DSP的SPI接收寄存器中一直没有数据。

之后跟着程序,参照数据手册走了一遍程序,确定程序逻辑上是没有问题的。怀疑SPI的时钟有没有输出,一些引脚的电平是否输出正确,因此用示波器观察了各引脚的电平(某一时间内电平固定的引脚),都是期望的电平。想观察下AD7606的数据引脚有数据输出没,奈何没有逻辑分析仪,用示波器观察不了(频率太快,也不是一直都有输出,示波器的干扰又大),而作罢。

上网查找AD7606与DSP28335的相关资料,看了一些别人的资料没有找到需要的。其实上网查找的过程中还是发现了许多的资料,包括ADI公司完整的包括AD7606的应用、控制程序、外围电路的设计资料等,不要小看无意间的一句话,也许某句话也就点醒了你,所以遇到问题的时候可以多看别人遇到了什么问题、怎么解决的。这可以节省大量的时间。但是不能一味的求助别人,要自己多想。

数据手册是一个重要的资料,关键点一定要明确。

控制芯片的时候要多注意这些关键点,因为有一个地方不对,结果就出现不了。(要特别注意),对照自己的程序,根据时序图看一下,是否满足各方面的要求,包括延时、信号的先后顺序等。

在不同的时钟频率下,同一个延时函数,延时是不一样的,所以移植程序的时候也要注意这点。

在我的这个程序中,其实读不出数据的最主要的一个问题还是SPI配置的问题,因为控制发送功能的寄存器中有一位是开启增强功能模式,就是可以使用FIFO,而默认情况下是不能使用FIFO的,因为想着不使用DSP的发送功能,所以直接把发送功能的配置给删除了,而忘记了这位,所以读取不出。而在回环测试的时候是对的,是因为回环测试的时候要开启发送功能。

这个问题的发现是想着重新写下代码,看书核对配置的时候偶然在发送寄存器中看到有一位是控制开启增强模式的。所以理不清的时候,不妨重新来过。(下策)

(也曾怀疑过硬件的问题,如果没有解决的话,下步应该是在STM32上跑下。不过硬件因为是买的现成的模块,出问题的概率不大)

此次调试总结

首先核对硬件连接是否正确,包括供电,接地,参考电平,时钟等,然后需要检查寄存器配置是否正确,再逐渐调试软件(首先跟着程序的流程走一遍,确认是否有明显的失误。然后可设置断点、标志位、观察某一变量的值、内存的值等),仔细研究时序图,这才是正确方法。另外就需要耐心与细心。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: 驱动电源

在工业自动化蓬勃发展的当下,工业电机作为核心动力设备,其驱动电源的性能直接关系到整个系统的稳定性和可靠性。其中,反电动势抑制与过流保护是驱动电源设计中至关重要的两个环节,集成化方案的设计成为提升电机驱动性能的关键。

关键字: 工业电机 驱动电源

LED 驱动电源作为 LED 照明系统的 “心脏”,其稳定性直接决定了整个照明设备的使用寿命。然而,在实际应用中,LED 驱动电源易损坏的问题却十分常见,不仅增加了维护成本,还影响了用户体验。要解决这一问题,需从设计、生...

关键字: 驱动电源 照明系统 散热

根据LED驱动电源的公式,电感内电流波动大小和电感值成反比,输出纹波和输出电容值成反比。所以加大电感值和输出电容值可以减小纹波。

关键字: LED 设计 驱动电源

电动汽车(EV)作为新能源汽车的重要代表,正逐渐成为全球汽车产业的重要发展方向。电动汽车的核心技术之一是电机驱动控制系统,而绝缘栅双极型晶体管(IGBT)作为电机驱动系统中的关键元件,其性能直接影响到电动汽车的动力性能和...

关键字: 电动汽车 新能源 驱动电源

在现代城市建设中,街道及停车场照明作为基础设施的重要组成部分,其质量和效率直接关系到城市的公共安全、居民生活质量和能源利用效率。随着科技的进步,高亮度白光发光二极管(LED)因其独特的优势逐渐取代传统光源,成为大功率区域...

关键字: 发光二极管 驱动电源 LED

LED通用照明设计工程师会遇到许多挑战,如功率密度、功率因数校正(PFC)、空间受限和可靠性等。

关键字: LED 驱动电源 功率因数校正

在LED照明技术日益普及的今天,LED驱动电源的电磁干扰(EMI)问题成为了一个不可忽视的挑战。电磁干扰不仅会影响LED灯具的正常工作,还可能对周围电子设备造成不利影响,甚至引发系统故障。因此,采取有效的硬件措施来解决L...

关键字: LED照明技术 电磁干扰 驱动电源

开关电源具有效率高的特性,而且开关电源的变压器体积比串联稳压型电源的要小得多,电源电路比较整洁,整机重量也有所下降,所以,现在的LED驱动电源

关键字: LED 驱动电源 开关电源

LED驱动电源是把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

关键字: LED 隧道灯 驱动电源
关闭