OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4359|回复: 8

求助:ADC模块TLC2543如何使用?

[复制链接]

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-9-20
在线时间
31 小时
发表于 2016-9-21 14:47:20 | 显示全部楼层 |阅读模式
1金钱
打算用TLC2543来做为外接的AD采样,不过不是很清楚到底应该怎样设置,有没有用过这块芯片的呀?过来指点一二

最佳答案

查看完整内容[请看2#楼]

终于找到我原来调通的代码了: //定义TLC2543C各接口引脚 sbit SCLK=P1^3; sbit DIN=P1^4; sbit DOUT=P1^5; //NOKIA 5110 LCD "DC" sbit SCS=P1^6; //TLC2543C 片选 /*===============================================*/ //从TLC2543读取采样值,形参Port是采样的通道号 //================================================ unsigned int AD2543(unsigned char Port) { unsigned int Data=0; unsigned ch ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

42

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2015-2-24
在线时间
42 小时
发表于 2016-9-21 14:47:21 | 显示全部楼层
本帖最后由 HenryYam 于 2016-9-22 19:55 编辑

终于找到我原来调通的代码了:


//定义TLC2543C各接口引脚
sbit SCLK=P1^3;
sbit DIN=P1^4;
sbit DOUT=P1^5; //NOKIA 5110 LCD "DC"
sbit SCS=P1^6;  //TLC2543C 片选

/*===============================================*/
//从TLC2543读取采样值,形参Port是采样的通道号
//================================================
unsigned int AD2543(unsigned char Port)
{
  unsigned int Data=0;
  unsigned char i;
  SCLK=0;
  SCS=0;
  Port<<=4;
  for(i=0;i<12;i++)
  {
    if(DOUT) Data|=0x01;      //读取AD转换数值
    DIN=(bit)(Port&0x80);     //输出通道号
    SCLK=1;   
    SCLK=0;   
    Port<<=1;
    Data<<=1;
  }
  SCS=1;

  Delay(300);                 //10US转换时间

  SCS=0;
  Data=0;
  for(i=0;i<12;i++)
  {
    if(DOUT) Data|=0x01;      //读取AD转换数值
    DIN=(bit)(Port&0x80);     //输出通道号
    SCLK=1;   
    SCLK=0;   
    Port<<=1;
    Data<<=1;
  }
  SCS=1;
  Data>>=1;                  //多移的一位移回来
  return (Data);
}
//差不多100个机器周期,55微秒左右。
回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-9-20
在线时间
31 小时
 楼主| 发表于 2016-9-21 15:08:09 | 显示全部楼层
难道没有人知道这块芯片么?
回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-9-20
在线时间
31 小时
 楼主| 发表于 2016-9-21 15:47:55 | 显示全部楼层
有人吗?
回复

使用道具 举报

42

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2015-2-24
在线时间
42 小时
发表于 2016-9-22 19:31:15 | 显示全部楼层
以下是多年前用TLC2543C时参考的别人的代码(我的代码暂时没有找到):

/*我用KEILC调试2543的程序,
单步step into执行能够得到正确的结果,
但是step over执行时结果却总是0fff,
但根据执行时间来看,应该进入了子程序,为什么结果出不来呢?
在坛子上搜索时,发现madswan也遇到过这种情况,恳求各位大侠解惑
(2543控制口与MCU都接了反相器以增强驱动)
源程序如下:        */
#include <reg52.h>
#include <intrins.h>
#include <stdio.h>
//2543控制脚定义
sbit CLOCK=P1^4; //2543时钟
sbit D_IN=P1^5; //2543输入
sbit D_OUT=P1^7; //2543输出
sbit D_CS=P1^6; //2543片选

#define uint unsigned int
#define uchar unsigned char

/***************************
名称:delay
功能:延时模块
输入参数:n要延时的周期数
输出参数:无
****************************/

void delay(uchar n)
{
   uchar k;
   for(k=0;k<n;k++)
    {
          _nop_();
        }
}
/************************
名称:read2543
功能:TLC2543驱动模块
输入参数:port通道号
输出参数:AD转换值
************************/

uint read2543(uchar port)
{uchar data i;
uint ad_data;
ad_data=0;
port<<=4;
CLOCK=0;
D_CS=0;
D_IN=1;
D_OUT=1;
D_CS=1;
delay(5);  //延迟20us
for(i=0;i<12;i++)
{
  if((port&0x80)!=0)
    {D_IN=0;}
  else
    {D_IN=1;}
CLOCK=0;
port<<=1;
CLOCK=1;
}
D_CS=0;
delay(5);
D_CS=1;
delay(5);
for(i=0;i<12;i++)
{
  if(D_OUT==0){ad_data|=0x01;}
CLOCK=0;
CLOCK=1;
ad_data=ad_data<<1;
}
ad_data=ad_data>>1;
return(ad_data);
}

你参考一下吧。
回复

使用道具 举报

42

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2015-2-24
在线时间
42 小时
发表于 2016-9-22 19:35:39 | 显示全部楼层
这里还有一个:

/***************************************************************
;软 件 说 明:从TLC2543读取采样值,形参port是采样的通道号
***************************************************************/
/*==================================================================*/
uint ad_2543(uchar port) //从TLC2543读取采样值,形参port是采样的通道号
{
uint ad=0,i;
SCLK=0;
SCS=0;
port<<=4;
for(i=0;i<12;i++)
{
  if(DOUT) ad|=0x01;
  DIN=(bit)(port&0x80);
  SCLK=1;
  delay(30);
  SCLK=0;
  delay(30);
  port<<=1;
  ad<<=1;
}
SCS=1;
ad>>=1;
return (ad);
}
/*======================================================================*/
回复

使用道具 举报

9

主题

63

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2016-9-20
在线时间
31 小时
 楼主| 发表于 2016-9-22 21:34:09 | 显示全部楼层
HenryYam 发表于 2016-9-22 19:53
终于找到我原来调通的代码了:

哇哇,还真有!先谢谢啦!我等下回去再仔细研究!!!
回复

使用道具 举报

42

主题

90

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
313
金钱
313
注册时间
2015-2-24
在线时间
42 小时
发表于 2016-9-22 21:42:36 | 显示全部楼层
airlovelj 发表于 2016-9-22 21:34
哇哇,还真有!先谢谢啦!我等下回去再仔细研究!!!

不用客气。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-5-31
在线时间
3 小时
发表于 2019-12-25 22:30:31 | 显示全部楼层
用STM32怎样写
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-12 10:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表