ADS1256芯片的驱动C程序

#include "math.h"

#include <ads1242.h>
#include "stm32f10x_lib.h"

 /*Registers' Address*/
#define REG_STATUS  0
#define REG_MUX     1
#define REG_ADCON   2
#define REG_DRATE   3
#define REG_IO      4
#define REG_OFC0    5
#define REG_OFC1    6
#define REG_OPC2    7
#define REG_FSC0    8
#define REG_FSC1    9
#define REG_FSC2    10

/*Operation Command*/
#define CMD_WAKEUP     0x00
#define CMD_RDATA      0x01
#define CMD_RDATAC     0x03
#define CMD_SDATAC     0x0F
#define CMD_RREG       0x10
#define CMD_WREG       0x50
#define CMD_SELFCAL    0xf0
#define CMD_SELFOCAL   0xf1
#define CMD_SELFGCAL   0xf2
#define CMD_SYSOCAL    0xf3
#define CMD_SYSGCAL    0xf4
#define CMD_SYNC       0xfc
#define CMD_STANDBY    0xfd
#define CMD_RESET      0xfe
#define CMD_WAKEUP     0xFF

#define PGA_1            0x00
#define PGA_2            0x01
#define PGA_4            0x02
#define PGA_8            0x03
#define PGA_16           0x04
#define PGA_32           0x05
#define PGA_64           0x06
#define PGA_64           0x07

#define ADS1256_DRDY    GPIOE->IDR&(1<<10)
#define ADS1256_DO      GPIOE->IDR&(1<<11)


#define SetADS1256_DRDY   GPIOE->BSRR =  (1<<10)
#define SetADS1256_DO     GPIOE->BSRR =  (1<<11)

#define ADS1256_SYNC   (1<<8)
#define ADS1256_CS     (1<<9)
#define ADS1256_IN     (1<<12)
#define ADS1256_CLK    (1<<13)

#define SetADS1256_SYNC   GPIOE->BSRR =  ADS1256_SYNC
#define SetADS1256_CS     GPIOE->BSRR =  ADS1256_CS
#define SetADS1256_IN     GPIOE->BSRR =  ADS1256_IN
#define SetADS1256_CLK    GPIOE->BSRR =  ADS1256_CLK

#define ClrADS1256_SYNC   GPIOE->BRR =  ADS1256_SYNC
#define ClrADS1256_CS     GPIOE->BRR =  ADS1256_CS
#define ClrADS1256_IN     GPIOE->BRR =  ADS1256_IN
#define ClrADS1256_CLK    GPIOE->BRR =  ADS1256_CLK

 

 


void delayad(void)
{
 unsigned long i = 1000;
    while(i--);
  }


void ADS1256_Write_Byte(unsigned char d)

 unsigned char i=8; 
 SetADS1256_CLK ;
    while(i--)
   {
  if(d & 0X80)
     SetADS1256_IN;
  else 
   ClrADS1256_IN;
       delayad();
    ClrADS1256_CLK;
    delayad();
    SetADS1256_CLK;
    delayad();
    d <<= 1;
 }
}
unsigned char ADS1256_Read_Byte(void)

 unsigned char i=8,d;  
 SetADS12156_CLK;
    while(i--)
    {
       d <<=1;
  SetADS1256_DO;
    if(ADS1256_DO)
       d |= 0x01;
    else
       d &= 0xfe; 
  delayad();
    ClrADS1256_CLK; 
       delayad();
       SetADS12156_CLK;                 
 }   
    return d;
}

 

//基于的处理器是STM32

//因为写的很早,当时编码不规范,必要的注释都没有,现在回头看看失败~~

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值