Only U is in my heart!
I will be right here waiting for you.

TMS320F28335外扩接口扩展ADC实例

前面对外部扩展接口XINTF一通讲,基本上被认定为大忽悠了。其实上面也算一个专题吧。外扩接口有用的东西都说了。该说的说了,不该说的也说了。今天来个实例,也是我最近弄得,TI的竞赛要用到的一个模块:用外部扩展扩展ADC。

话说28335是具有ADC的片上外设资源的,可是由于采样频率的愿意,还是放弃片上的,用外部扩展接口扩展一个。采用TI公司ADS805。该芯片是12位并行接口的高速流水线型AD转换芯片。采样频率可以达到20MHz。

硬件原理图如下图所示:

wps_clip_image-12973

基本思路:

通过28335的DMA读取高速AD转换器ADS805的数据。

这样做的好处:

1. 避免使用FIFO或者FPGA,降低了成本;

2. 结合DMA的同步信号能够高速准确的读取数据,同时避免了使用中断的压栈和出栈耗时。

3. 使用DMA读取AD转换数据,能够有效降低CPU资源消耗。

硬件电路说明:

1. 模拟输入信号范围由OPA842调整为0-5V,将SEL引脚接地。

2. 基准电压为2.5V,由VREF引脚产生,并将该引脚和IN-引脚相连。

3. B1-B12分别和28335的D11-D0相连。VDRV引脚与3.3V电源相连,提供输出参考电平。

4. 以0V为参考的前端信号经过OPA842放大1倍后,通过隔直抬起电路变换为以2.5V为参考的信号。这样做的好处是可以使OPA842工作在较低的电压,保证其低失真度,同时留有足够的电源裕量。

时钟同步信号说明:

1. AD时钟信号CLK由DSP的ePWM产生。测试中28335工作在150MHz,通过ePWM1A产生占空比为50%且频率约为19MHz(18.75MHz)的时钟作为ADC的采样频率。同时通过EPWM1SOCA产生与AD时钟信号反相的触发源,作为DMA转换的同步信号。19MHz的时钟信号勉强能够满足ADS805时钟信号的特征要求。但是这个信号最好添加驱动芯片以改善波形。

2. 输出使能信号OEn由GPIO6输出得到。这样造成一个问题就是当进行AD转换的时候,AD将始终占用总线,直到AD转换完成释放总线。

DSP测试程序说明:

1. 系统时钟设置为150Mhz。

2. Xinf的读时序中的建立时间设为2个CPU时钟,选通时间设为2个CPU时钟,跟踪周期设为1个CPU时钟。

3. 使用DMA1通道读取地址0x200000(Zone7)的内容,存储在数组ADC_Result中。触发源设置为EPWM1的EPWM1SOCA,总线配置为16位传输方式。DMA传输完毕后触发中断,对读取的数据进行处理。

4. 调试时,通过图形窗口观察读取到的波形。可直接load工程里的.wks文件,即可调出调试界面。

遇到的问题总结:

1. DMA配置时,需要将BURSTSIZE配置为0,也就是每次传输一个字,因为转换的数据需要实时读取。而且每次只读取一个字的数据。如果此值设置过大,会造成周期性的数据读取错误。而且相邻两点可能产生数据重复现象。

2. Xinf读取周期配置中,建立时间要大一点,不然会出现意外的数据错误。

3. 由于没有CPLD支持,ADS805使能信号使用GPIO6输出,这样造成在AD转换期间,Xintf总线会一直占用,直到数据转换完成。

最后小结:这只是一个初步的调试,以后肯定还会在修改。由于竞赛还没有完成,源代码暂时不放出了就。DMA也是重要的内容,接下来将重点分解一下28335的DMA模块。

赞(0) 打赏
未经允许不得转载:Onlyisu » TMS320F28335外扩接口扩展ADC实例

相关推荐

  • 暂无文章

评论 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏