您的位置 首页 汽车

A/D TLC1543 使用

首先了解下串行A/D芯片TLC1543的参数有6种工作模式:本程序使用了2种工作模式来编程,具体看时序图:源程序:uintRead_AD(ucharAD_Chan…

首要了解下串行A/D芯片TLC1543的参数

有6种作业形式:
本程序使用了2种作业形式来编程,详细看时序图:

源程序:

uint Read_AD(uchar AD_Channel) //从TLC1543读取采样值,形参AD_Channel是采样的通道号
{
uint i;
uint AD_data; //界说AD数据贮存地址
uchar AD_data_l=0,AD_data_h=0; //界说AD数据贮存地址凹凸位

// Page13 of TLC1543_datasheet
AD_CLOCK=0;
AD_CS=0;

AD_Channel<<=4;

for (i=0;i<4;i++) //把通道号打入1543
{
AD_D_IN=(bit)(AD_Channel&0x80);
AD_CLOCK=1;
AD_CLOCK=0;
AD_Channel<<=1;
}

for (i=0;i<6;i++) //填充6个AD_CLOCK
{
AD_CLOCK=1;
AD_CLOCK=0;
}

//AD 转化有6种形式,详细时序图见数据手册,这儿举例2种转化形式

//1)Fast Modes=>Mode1: Hight between conversion cycles ; 10 I/O CLOCKS; MSB AT DATA OUT CS falling edge

/*AD_CS=1;
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
_nop_();_nop_();_nop_();
AD_CS=0; // AD转化完毕
*/

// 2)Fast Modes=>Mode2: Low conversion cycles ; 10 I/O CLOCKS; MSB AT DATA EOC rising edge
while(!AD_EOC); //等候AD转化

_nop_();_nop_();_nop_(); //延时

for (i=0;i<2;i++) //读取高2位:D9,D8
{
AD_D_OUT=1;//读取数据曾经,数据口先置高
AD_CLOCK=1;
AD_data_h<<=1;
//数据凹凸判别

if (AD_D_OUT==1) //(1)简单了解的写法
{AD_data_h=AD_data_h+0x01;}
else
{AD_data_h=AD_data_h+0x00;}
//if (AD_D_OUT) AD_data_l +=0x01; //(1)精简写法
AD_CLOCK=0;
}

for (i=0;i<8;i++) //读取低8位:D7--D0
{
AD_D_OUT=1; //读取数据曾经,数据口先置高
AD_CLOCK=1;
AD_data_l <<= 1; //数据凹凸判别
if (AD_D_OUT==1) //(1)简单了解的写法
{AD_data_l=AD_data_l+0x01;}
else
{AD_data_l=AD_data_l+0x00;}

//if (AD_D_OUT) AD_data_l +=0x01; //(2)精简写法
AD_CLOCK=0;
}

AD_CS=1; //不使能AD

//AD转化成果计算公式:AD_data= AD_data_h*256+AD_data_l
AD_data = (uint)AD_data_h;
AD_data <<= 8;
AD_data=AD_data+(uint)AD_data_l; //得到AD值
return(AD_data);
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qiche/267279.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部