ads1261的驱动程序

需要一个ads1261的驱动程序,最好是stm32的,软件spi,或者硬件spi均可

https://6viyij.smartapps.baidu.com/pages/view/view?docId=3d312af687254b35eefdc8d376eeaeaad1f31637&from=share&_swebfr=1&_swebFromHost=mibrowser
应该和1256差不多,你参照看看

/* CPOL=0,CPHA=1, MSB first */
uint8_t SOFT_SPI_RW_MODE1(uint8_t byte) 
{
    uint8_t i,temp=0;
    for(i=0;i<8;i++)
    {
        SCK_H;
        if(byte&0x80)
            MOSI_H;
        else
            MOSI_L;
        
        byte <<= 1;
        HAL_Delay_us(1);
        SCK_L;
        temp <<= 1;
        
        if(MISO)
            temp++;
        HAL_Delay_us(1);
    }
    return temp;
}

static uint8_t SPI1_ReadWriteByte(uint8_t TxData)
{
    uint8_t Rxdata;
    Rxdata = SOFT_SPI_RW_MODE1(TxData);
     return Rxdata;                      
}

static void SPI_Read(uint8_t* pBuffer, uint32_t ReadAddr, uint16_t NumByteToRead)   
{ 
    uint16_t i; 
    
    CS(0);
    SPI1_ReadWriteByte((uint8_t)((ReadAddr) >> 8));   
    SPI1_ReadWriteByte((uint8_t)ReadAddr);   
    for (i = 0; i < NumByteToRead; i++)
    { 
        pBuffer[i]=SPI1_ReadWriteByte(0X00);    //循环读入字节数据  
    }    
    CS(1);
} 

static void SPI_Write(uint8_t regaddr, uint8_t databyte)
{
    uint8_t write = 0x40;
  CS(0);
    SOFT_SPI_RW_MODE1(write);
    SOFT_SPI_RW_MODE1(regaddr);
    SOFT_SPI_RW_MODE1(databyte);
    
    CS(1);
}

void ADS1261_Init(void)
{
    CS(0);
    START(1);
    PWDN(1);
    RESET(1);
    HAL_Delay(50);
//    while(!DRDY);
    START(0);
//    SPI_Write(STATUS_Reg,0x01);
    SPI_Write(MODE0_Reg,0x84);
    SPI_Write(MODE1_Reg,0x01);
    SPI_Write(REF_Reg,0x05);
    SPI_Write(PGA_Reg,0x00);
    SPI_Write(INPMUX_Reg,0x34);
    HAL_Delay(10);
}

uint32_t ADS1261_RDATA(void)
{
    uint32_t vol;
    uint8_t pBuffer[3];
    CS(0);
    START(1);
    while(DRDY);
    START(0);
    SPI1_ReadWriteByte(RDATA_C);
    SPI1_ReadWriteByte(0x00);
    //读24位数据
  pBuffer[0]=SPI1_ReadWriteByte(0x00);
    pBuffer[1]=SPI1_ReadWriteByte(0x00);
    pBuffer[2]=SPI1_ReadWriteByte(0x00);
//    SPI1_ReadWriteByte(0x00);
    HAL_Delay_us(3);
    vol = (uint32_t)((pBuffer[0]<<16)|(pBuffer[1]<<8)|pBuffer[2]);
    CS(1);
    
    return vol;
}

一个软件spi的代码