最近在调试CMC Demo板上的SPI接口,由于需要调试芯片以及板子上的外围电路等是否有问题,又加上对相关知识不是太熟悉,所以也调试了大概两周时间,特将调试过程记录下来。
1、关于SPI
SPI用的是查询的方式进行发送和接收数据,关于CMC上SPI 的配置主要是相位、极性、位宽、发送/接收FIFO的深度、波特率等的设置。另外比较重要的是驱动程序尤其是发送接收函数的编写。
2、关于ADS1158
CMC没有设计ADC的控制器,关于AD、DA转换采用的是通过SPI接口与ADS1158和LTC1660通信。关于ADS1158我调试的时间最久,原因是本身对这款芯片不熟悉,对其工作方式和操作方法都不太了解。首先是用最简单的方法去读取ADS1158中寄存器的值,通过串口打印出来。意料之中的事没有顺利的实现预期效果。然后就是用示波器去测相关的引脚的波形,主要是SCLK、CS、MOSI这几个引脚。发现这几个信号都是正常的,但MISO上无波形,这种情况下基本排除CMC上SPI的故障,所有原因应该在ADS1158及其外围电路上,首先去量这款芯片的晶振的波形,发现根本就没有起振,后来查看板子的电路图和ADS1158的用户手册发现时晶振电路连错了,后来经过飞线后依然不能正常工作。仔细查看电路图也找不到原因。后来无奈还了一片ADS1158后竟然能够正常工作,可能是在测试中示波器探针同时连着了两个管脚,使芯片烧毁了。
3、关于LTC1660
这款芯片较为简单,另外有前面的调试基础,很快就搞定了。主要是通过MOSI往LTC1660写数字量,通过测量输出脚的电压,在跟由公式计算得到的结果进行比对。
总结:
由于本次调试涉及到了硬件,之前基本上没有这方面的经验,所以进展的不是很顺利,不管怎样,都要做到专心、思路清晰、不放弃。