OpenEdv-开源电子网

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

ADS8881的驱动代码求助,请大神帮我看一下

[复制链接]

1

主题

1

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2019-5-11
在线时间
4 小时
发表于 2019-5-14 10:26:33 | 显示全部楼层 |阅读模式
这是我写的ADS8881驱动,但是运行之后读取的过程中偶尔会出现0,不知道是怎么回事?
#include "led.h"
#include "delay.h"
#include "usart.h"

void ad_IO_Init(void)
{

                GPIO_InitTypeDef  GPIO_InitStructure;

                RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);         //ê1Äü¶Ë¿úê±Öó

                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_8;        //                       
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //íÆíìêä3ö
                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO¿úËù¶èÎa50MHz
                GPIO_Init(GPIOB, &GPIO_InitStructure);                                 //¸ù¾Yé趨2Îêy3õê¼»ˉ       
                GPIO_SetBits(GPIOB,GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_8);  //SCLK,CONVST,DIN


                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;//DOUT
                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;//¸¡¿Õêäèë
                GPIO_Init(GPIOB, &GPIO_InitStructure);  //receive       
                GPIO_SetBits(GPIOB,GPIO_Pin_7); //1, 0 indicate ready

}

/*
#define SCLK   PBout(5)  //default low,GPIO_Mode_Out_PP
#define CONVST PBout(6) //default high,GPIO_Mode_Out_PP
#define DOUT   PBin(7)  //master input,GPIO_Mode_IN_FLOATING
#define DIN    PBout(8)  //master output,GPIO_Mode_Out_PP
*/

//¶á18λêy¾Y
int adc_read(void)
{               
        int i;
        int data=0;
       
        DIN = 0;
        CONVST = 0;
        SCLK = 0;
        delay_us(2);
       
  DIN=1;
        CONVST = 1;       
        for(i=0;i<5;i++)
        {
        SCLK = 1;
        delay_us(1);
        SCLK = 0;
        delay_us(1);       
        }

        DIN = 0;       
  delay_us(1);//*****

                for(i=17;i--;i>0)
                {
                        SCLK=1;
                        delay_us(1);
                  data=data|(DOUT<<i);//(i-1)); //***
                        SCLK=0;
                        delay_us(1);
                }
                //printf("%8d\r\n",data);

        DIN = 1;
        CONVST = 0;
  SCLK = 0;
        delay_us(2);
        return data;
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-19 19:24

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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