利用I2C总线实现模拟信号的数字传输就是这么简单!
I2C是同步串行数据通信总线,其工作原理是由主器件发起通信,从器件以寻址的机制进行控制。I2C总线连接开漏形式的信号线即可连接节点。限制传输速率和节点距离的关键在于电容。要想实现模拟信号的数字传输,必须通过长距离I2C总线实现。
PCA9605是一种单片CMOS集成电路,可在包括I2C总线的应用中实现总线缓冲功能。该缓冲器可以通过缓冲驱动SCL和SDA线来扩展总线负载,缓冲器两侧可达到最大允许的总线电容。在其最基本的实现中,该缓冲器允许扩展数量的从器件连接到一个主器件。在本例设计中,主器件是PIC的微控制器,从器件是两个数据转换器,其中一个是模数转换器,另一个是数模转换器。PCA9605的方向引脚(DIR)固定接地,因为时钟由主器件提供(单向时钟模式)。图1给出了总的原理图。
U2 ADC捕获来自信号发生器的模拟信号并转换成数字信号,然后发送给缓冲器U3,由U3驱动后上电缆传输,并经U4中继后继续传输。SDA数据线需要双向驱动,从U3到U4以及U4到U3。最终由U5 ADC产生数字化后的信号。如果需要经过更长距离的电缆传输,可以在电路中间插入另一个缓冲器进行扩展。这种方法可以覆盖长达数百米的有线传输距离。
图1:用扩展I2C总线连接两个节点的电路原理图。
图2显示了通过电缆总线以125kHz速率传输DAC地址(0xC0)。通道1连接的是总线侧SDA线(U4的引脚6),该信号通过缓冲器驱动后可消除毛刺和来自时钟线的容性干扰以及由于使用上拉电阻的开路集成极和走线电容引起的RC效应。通道2显示的是经过缓冲器驱动后的SDA数据信号(U4的引脚7),通道4(U4的引脚2)是经过驱动后的时钟SCL。电缆上的时钟信号(U4的引脚3)示于通道3,通道4是经过缓冲器驱动后的信号(U4的引脚2)。
如果系统测试时给ADC U2发送一个电压幅度为满输入刻度的单极性模拟信号,在DAC U5的输出负载上就可以得到图3所示的波形。本设计充分利用了ADC和DAC电路的特性,允许它们处理轨到轨信号。这种低频信号可以通过在DAC输出端增加一个低通滤波器加以改进,因为低通滤波器可以降低采样和重构噪声。
图2:缓冲器前后的从节点信号。
图3:通过I2C发送的满刻度输入正弦信号。