微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS8344 驱动求助

ADS8344 驱动求助

时间:10-02 整理:3721RD 点击:


#include<stc12C5A60S2.h>
#define  uchar unsigned char
#define  uint unsigned int

sbit ADS_CS   = P2^3;
sbit ADS_DCLK = P2^1;
sbit ADS_DIN  = P2^4;
sbit ADS_BUSY = P3^5;
sbit ADS_DOUT = P2^0;

// (MSB)                                  (LSB) 
// BIT7 BIT6 BIT5 BIT4 BIT3   BIT2   BIT1 BIT0
//  S    A2   A1   A0   —    SGL/DIF  PD1  PD0
void ads_com(uchar ads_comchar)
{
    uchar i=0;
    for (i=8; i>0; i--)
    {
        ADS_DIN  = ads_comchar&0x80;//取最高位
        ADS_DCLK = 0;
        ADS_DCLK = 1;
        ads_comchar<<=1;//左移数据
    }
}

// (MSB)        (LSB) 
// BIT15 ...... BIT0
uint ads_dat(void)
{
    uint ads_datword = 0;
    uchar i=0;
    for (i=16; i>0; i--)
    {
        ads_datword<<=1;//左移数据
        ADS_DCLK = 0;
        if(ADS_DOUT==1) ads_datword = ads_datword|0x01;//最低位或
        ADS_DCLK = 1;
    }
    return(ads_datword);
}

void main()
{
    uint ADS_DataWord = 0;
   
 
    ADS_CS   = 1;
    ADS_DCLK = 0;
   
    ADS_CS   = 0;
    //  S    A2   A1   A0   —    SGL/DIF  PD1  PD0
    //  1    0    0    0    —       1      1    1
    ads_com(0x87);//10000111 输入控制命令
    ADS_DCLK = 0;
    ADS_DCLK = 1;
    while(ADS_BUSY == 1);
    ADS_DataWord = ads_dat();
   
    ADS_CS   = 1;
    while(1);
}

 

能否解释 如何读取DOUT 串行输出

这是软件模拟 SPI 接口程序. uint ads_dat(void); 就是个读程序. 如果不能理解这个时序程序, 那建议请示波器帮助解释这个时序了.

是的 每个部分我明白在做什么, 问题在于 DOUT 读出转换后的16位数据 为什么是 取地位或1 然后左移一位呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top