打印

新手。串行A/D转换器TLC1549的驱动程序的问题。。

[复制链接]
2362|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
史高飞尔得|  楼主 | 2010-2-26 00:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我看书上的,驱动TLC1549程序的问题
。。。头文件略
#define uchar unsigned char
#define uint  unsigned int
sbit AD_CS=P1^0;
sbit AD_INCLOCK=P1^1;
sbit AD_DATAOUT=p1^2;
unit ad-convert(void);
void main(void)
{ unit ad-data-10bit;
  AD_CS=1;
   AD_IOCLOCK=0;
while(1)
ad-data-10bit=ad-convert()
  dalay (50)
}
########以下是AD 转换函数 功能是驱动芯片完成一次a/d采样,返回值为AD 转换结果,使用16bit的uint数据表示 ,低10位有效 这段程序我几乎看不懂,不太清楚其实现何种功能,哪位大虾能帮小弟看下 谢啦!!!!######
uint ad-convert(void)
{ uchar i;
  uint AD_DATA=0;
AD_CS=0
for(i=0;i<=09;i++)
  {AD_IOCLOCK=0;
     if(AD_DATAOUT==1)
    {AD_DATA=AD_DATA*2+1;
}
   else
{AD_DATA=DA_DATA*2;
}
AD_IOCLOCK=0;}
AD_IOCLOCK=0;
AD_CS=0;
return(AD_DATA):
}
延时电路略

相关帖子

沙发
c4fantasy| | 2010-2-26 14:53 | 只看该作者
好久不用51单片机了,尝试解释下,TLC1549也不太了解,不过直接看程序都大同小异,建议先看看TLC1549串行通讯协议的时序,这里先转下时序说明

当片选CS由低电平变为高时,I/O CLOCK禁止且A/D转换结果的三态串行输出DATA OUT处于高阻状态;当串行接口将CS拉至有效时,即CS由高变为低时,CS复位内部时钟,控制并使能DA-TA OUT和I/O CLOCK,允许I/O CLOCK工作并使DATA OUT脱离高阻状态。串行接口把输入/输出时钟序列供给I/O CLOCK并接收上一次转换结果。首先移出上一次转换结果数字量对应的最高位,下一个I/O CLOCK的下降沿驱动DATA OUT输出上一次转换结果数字量对应的次高位,第9个I/OCLOCK的下降沿将按次序驱动DATA OUT输出上一次转换结果数字量的最低位,第10个I/OCLOCK的下降沿,DATA OUT输出一个低电平,以便串行接口传输超过10个时钟;I/O CLOCK从主机串行接口接收长度在10~16个时钟的输入序列。

CS的下降沿,上一次转换的MSB出现在DATA OUT端。10位数字量通过DATA OUT发送到主机串行接口。为了开始传输,最少需要10个时钟脉冲,如果I/OCLOCK传送大于10个时钟,那么在第10个时钟的下降沿,内部逻辑把 DATA OUT拉至低电平以确保其余位清零。在正常转换周期内,即规定的时间内CS端由高电平至低电平的跳变可以终止该周期,器件返回初始状态(输出数据寄存器的内容保持为上一次转换结果)。由于可能破坏输出数据,所以在接近转换完成时要小心防止CS拉至低电平。

uint ad-convert(void)
{ uchar i;[color=Red]
  uint AD_DATA=0;[color=Red]定义一个UINT类型变量,初始化为0,用于存储接受的AD转换结果
AD_CS=0[color=Red]
for(i=0;i<=09;i++)[color=Red]这里开始是重点,FOR循环中接收串行数据
  {AD_IOCLOCK=0;下拉时钟总线
     if(AD_DATAOUT==1)判断数据总线是否为1,不是1当然是0了,呵呵
    {AD_DATA=AD_DATA*2+1;}AD_DATA*2就是整体左移一位并+1,
   else
{AD_DATA=DA_DATA*2;只左移,不+1,因为数据总线不等于1,就为0了~
}
AD_IOCLOCK=0;}
AD_IOCLOCK=0;
AD_CS=0;
return(AD_DATA):将AD_DATA值作为函数返回值
}
延时电路略

使用特权

评论回复
板凳
史高飞尔得|  楼主 | 2010-2-26 16:39 | 只看该作者
好久不用51单片机了,尝试解释下,TLC1549也不太了解,不过直接看程序都大同小异,建议先看看TLC1549串行通讯协议的时序,这里先转下时序说明

当片选CS由低电平变为高时,I/O CLOCK禁止且A/D转换结果的三态串行输 ...
c4fantasy 发表于 2010-2-26 14:53

谢谢咯~~~~!!!有劳了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

4

帖子

1

粉丝