多通道模/数转换器AD7890与DSP的接口设计

网友投稿 314 2022-11-05

多通道模/数转换器AD7890与DSP的接口设计

确定DSP的低速外设时钟LSPCLK后,通过波特率控制寄存器SPIBRR,确定波特率SCLK。波特率具体计算方法是:当SPIBRR=3~127时,SCLK=LSPCLK/(SPIBRR+1);当SPIBRR=0,1,2时,SCLK=LSPCLK/4,因此共具有125种可编程波特率。文中,DSP的工作频率为120 MHz,低速时钟LSPCLK为30 MHz,故可编程波特率范围为234.375 kb/s~7.5 Mb/s。通过提高系统低速时钟,可以提高可编程波特率范围;通过选较高的波特率,能提高数据传输速率,即提高A/D的转换效率。AD7890-10与TMS320一F2812的SPI接口硬件连接框图如图3所示。

4 软件读写实现    对于SPI接口而言,数据与串行时钟脉冲是同时产生的,即只有数据线上有数据传送时才产生时钟脉冲。所以发送控制数据结束后,DSP收到的数据并不是真实的A/D转换结果,但需要读取接收缓冲寄存器数据使SPI复位。多次实验表明,对于单次A/D转换,在转换结束后需要再向AD7890发送2次空控制数据0x0000,之后DSP的SPI接收缓冲寄存器中的数据才是正确的A/D转换结果,即每次A/D采样循环需要进行三次数据交换才能得到有效A/D转换数据。采用查询方式判断数据是否发送结束,即SPI状态寄存器SPIINT FLAG位为1时表示已完成数据发送。软件实现A/D转换的流程框图如图4所示。

对于AD7890-10,A/D转换结果数据为二进制补码格式,且包含通道数据,因此读取结果后应根据需要对数据进行适当处理,包括屏蔽通道选择数据和进行码制转换等,以便换算成系统所需要的数字量。为便于处理,将-10~+10 V电压对应的码值转换为0~4 096。文中处理方法为:将转换结果高四位通道数据屏蔽后,若A/D输入为正电压,则获取低12位结果与0x0800相加得到处理后的数据;若A/D输入为负电压,则将补码转换成原码后与0xF800作差获取处理结果。    经多次测试,得到A/D转换子程序运行时间(即一次A/D转换总耗时)与波特率对应关系如表1所示。

从表1中可以看出,为提高转换效率,应在可承受范围内选择尽可能高的波特率,但不应超过AD7890-10的上限值10 Mb/s。对文中SPI接口的实际应用表明,A/D转换性能非常稳定,效率较高,转换精度高,误差仅为±1码,约4.88 mV。

5 结 语    用DSP的串行外设接口SPI与串行多通道A/D转换器AD7890组成数字伺服系统A/D转换功能实现模块,能完成8个通道模拟量到数字量的转换,效率较高,接口简单,性能稳定。通过选择较高的波特率可以缩短数据传输时间,提高A/D转换效率。当DSP提供的外部时钟SCLK为AD7890所能承受的最高值10 MHz时,单个通道彻底完成一次A/D转换仅需12.4μs。本文所做的接口设计为多轴数字控制系统的A/D转换模块提供了一种实用的选择与参考。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Linux DNS反向解析
下一篇:LINUX网络设置基础命令
相关文章

 发表评论

暂时没有评论,来抢沙发吧~