WIZnet2012

W7100例程学习之ADC应用

0
阅读(2400)

 

W7100没有内置的ADC。这篇文章将简单介绍一下,如何用W7100控制一个串行接口的12-bit分辨率的ADC (MCP3202).
 
    (一)电路图:

    

 

这里贴出了W7100与ADC的电路图。电路图中的其他链接可参考iMCU7100EVB Schematic materials

 

(二) 代码:
 
//---------------------------------------
// read analog from ADC
// Single end MSB first mode(2 channel)
//---------------------------------------
unsigned int ReadADC(unsigned char channel)
{
   unsigned char i;
   unsigned int AdcResult;  // 12 bit
 
   AI_CS=0;   // Active chip select
   AIO_CLK=0;  // make clock low first   
  
 
   channel = channel? 0xF0 : 0xD0;   // It means:
                                      // if (channel==true) channel=0xF0;
           // else channel=0xD0;
 
 
   //--- write command 4 bit ----------
   for(i=0; i< 4;i++) 
   {
    AIO_DI = (channel & 0x80) != 0;
 wait_1us(1);
 channel<<=1;
 AIO_CLK=1;
 wait_1us(1);
    AIO_CLK=0;
   }
 
wait_1us(1);
 
   AIO_CLK=1;
wait_1us(1);
 
   AIO_CLK=0;
 
   //--- read ADC result 12 bit --------
   AdcResult=0;
   for(i=0;i<12;i++) 
   {      
      AIO_CLK=1;
 wait_1us(1);
 
      AdcResult<<=1;
      AdcResult=AdcResult | (AI_DO & 0x01);         
      AIO_CLK=0;
 wait_1us(1);
 
   }
   AI_CS=1;
   
   wait_1us(1);
   return(AdcResult); 
}
 
(三)MCP3202应用指导
 
1. 引脚分布:

 

 

2. 控制信号与数据输出

 

 

 
如果您有什么疑问请直接留言也可以登录我们的官网:http://www.wiznet.co.kr/ (英文主页)
 
 
或者来信:wiznetbj@wiznettechnology.com ,Tel: 86-10-84539974(转166),QQ:2464237212,谢谢!