专家
公告
财富商城
电子网
旗下网站
首页
问题库
专栏
标签库
话题
专家
NEW
门户
发布
提问题
发文章
STM32
求助:ADC模块TLC2543如何使用?
2019-07-20 19:53
发布
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
站内问答
/
STM32/STM8
13665
7
1303
打算用TLC2543来做为外接的AD采样,不过不是很清楚到底应该怎样设置,有没有用过这块芯片的呀?过来指点一二
友情提示:
此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
7条回答
HenryYam
2019-07-21 04:30
以下是多年前用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);
}
你参考一下吧。
加载中...
查看其它7个回答
一周热门
更多
>
相关问题
STM32F4上I2C(在PROTEUS中模拟)调试不通的问题
6 个回答
芯片供应紧张,准备换个MCU,MM32L系列替换STM32L系列的怎么样?
7 个回答
STM32同时使用两个串口进行数据收发时数据丢包的问题
5 个回答
STM32F103串口通信死机问题
4 个回答
STM32WLE5CC连接SX1268在LoRa模式下能与 SX1278互通吗?
2 个回答
相关文章
ST公司第一款无线低功耗单片机模块有效提高物联网设计生产效率
0个评论
如何实现对单片机寄存器的访问
0个评论
通过USB用STM32片内自带Bootloader下载程序及注意事项
0个评论
欲练此功必先自宫之STM32汇编启动,放慢是为了更好的前行
0个评论
×
关闭
采纳回答
向帮助了您的知道网友说句感谢的话吧!
非常感谢!
确 认
×
关闭
编辑标签
最多设置5个标签!
STM32
保存
关闭
×
关闭
举报内容
检举类型
检举内容
检举用户
检举原因
广告推广
恶意灌水
回答内容与提问无关
抄袭答案
其他
检举说明(必填)
提交
关闭
×
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
×
付费偷看金额在0.1-10元之间
确定
×
关闭
您已邀请
0
人回答
查看邀请
擅长该话题的人
回答过该话题的人
我关注的人
/*我用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);
}
你参考一下吧。
一周热门 更多>