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的代码