• 大小: 3KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-11
  • 语言: 其他
  • 标签:

资源简介

这是本人参考网上的资源和老师给的代码自己写的,经检测,可以使用。分享给大家,希望对大家有用。具体的详解可以参见本人的博客。

资源截图

代码片段和文件信息

#include “spi.h“


//写命令
static void ADS1248_WriteCmd(uint8_t Cmd)  
{   

   AD_nCS_LOW; //拉低片选线,使能SPI通信

HAL_SPI_Transmit(&hspi1 &Cmd 1HAL_MAX_DELAY);
    
AD_nCS_HIGH; //通信结束,拉高片选
    




////读寄存器
void ADS1248_ReadReg(uint8_t RegAddruint8_t *Bufferuint8_t Length)  
{  
    uint8_t Cmd[2];  

    AD_nCS_LOW;

AD_START_HIGH; //在写寄存器时吗,需要将START拉高(不让其进入睡眠模式)

 
    Cmd[0]=ADC_CMD_RREG|RegAddr;  
    Cmd[1]=Length-1;  

HAL_SPI_Transmit(&hspi1Cmd2HAL_MAX_DELAY); //发送命令


HAL_SPI_Receive(&hspi1 Buffer Length HAL_MAX_DELAY); //接收寄存器数据

Cmd[0]=ADC_CMD_NOP;  
    HAL_SPI_Transmit(&hspi1 Cmd1HAL_MAX_DELAY);  //最后在发送一个NOP,强制拉高DOUT


AD_nCS_HIGH;
  
}


//写寄存器
static  void ADS1248_WriteReg(uint8_t RegAddruint8_t *Bufferuint8_t Length)  
{  
    uint8_t Cmd[2];  

    AD_nCS_LOW;

AD_START_HIGH; //在写寄存器时吗,需要将START拉高(不让其进入睡眠模式)
   
     HAL_Delay(20); //硬件延迟

    Cmd[0]=ADC_CMD_WREG|RegAddr;  
    Cmd[1]=Length-1; 

  HAL_SPI_Transmit(&hspi1 Cmd 2HAL_MAX_DELAY);  //指定向指定寄存器写入指定字节数据
  HAL_SPI_Transmit(&hspi1 Buffer LengthHAL_MAX_DELAY);  //发送数据字节

 HAL_Delay(20); //硬件延迟

    AD_nCS_HIGH; 
AD_START_LOW;

}




//判断忙状态
 uint8_t ADS1248_WaitBusy(uint32_t Timeout)  
{  
    uint32_t i = 0; 
AD_nCS_LOW;
while(nAD_DRDY_STATE > 0)
{
HAL_Delay(1);
i++; 
if(i>Timeout)
return 1;   

}
  
AD_nCS_HIGH;

return 0;




//ADS1248系统校准  校准顺序为:自偏移校准->偏移校准->增益校准 .
static uint8_t ADS1248_Calibrate(uint8_t Gain)  
{  
uint8_t R=0;
    uint8_t Cmd;  
    ADS1248_WriteReg(ADC_REG_SYS0&Gain1);      // 设置增益值、ADC输出数据率

Cmd=0x20;   //0010 0000 
ADS1248_WriteReg(ADC_REG_MUX1&Cmd1);       // 设置系统监测为自偏移测量 
ADS1248_WriteCmd(ADC_CMD_SELFOCAL);          // 自偏移校准  
R |= ADS1248_WaitBusy(500);      // 等待校准完成 


Cmd=0x21;  //0010 0001
ADS1248_WriteReg(ADC_REG_MUX1&Cmd1);       // 设置系统监测为偏移测量  
ADS1248_WriteCmd(ADC_CMD_SYSOCAL);           // 系统偏移校准  
R |= ADS1248_WaitBusy(500);      // 等待校准完成 


Cmd=0x22;  
ADS1248_WriteReg(ADC_REG_MUX1&Cmd1);       // 设置系统监测为增益测量  
ADS1248_WriteCmd(ADC_CMD_SYSGCAL);           // 系统增益校准  
R |= ADS1248_WaitBusy(500);      // 等待校准完成  

return R;
}


//复位ADS1248
 void ADS1248_Reset()
{
  
  AD_nCS_HIGH;
  AD_START_HIGH; //???为什么不是置低

nADRST_LOW; //置低nADRST,复位ADS1248
HAL_Delay(20);
nADRST_HIGH;
HAL_Delay(20);
  
}




//ADS1248初始化
void ADS1248_Init(void)  
{  
uint8_t Cmd;
uint8_t Gain;

ADS1248_Reset();    //系统复位

HAL_Delay(100);

Gain = ADC_GAIN_16|ADC_SPS_20;


//初始化MUX0多路复用控制寄存器
Cmd = 0x17 ; //00 010 111Bit7-6:传感器电流源检测不使用,Bit5-3:正输入为AIN2,Bit2-0:负输入为AIN7
ADS1248_WriteReg(ADC_REG_MUX0&Cmd1); 

Cmd=0x20 ;//0 01 00 000
ADS1248_WriteRe

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-06-10 19:59  ADS1248驱动源码\
     文件        5044  2018-06-10 19:48  ADS1248驱动源码\spi.c
     文件        3609  2018-06-08 09:14  ADS1248驱动源码\spi.h

评论

共有 条评论

相关资源