引脚连接:ADS_CLK PB13
ADS_DIN PB15
ADS_DOUT PB14
ADS_DRDY PB8
ADS_CS PB5
ADS_RESET PB6
初始化有下面几个函数:
SPI有关的初始化
void SPI_ADS1256_Init(void)
{
SPI_InitTypeDef SPI_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd( RCC_APB2Periph_AFIO|RCC_APB2Periph_GPIOB, ENABLE );//PORTB?±??????
RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2, ENABLE );//SPI2?±??????
//PB13 SCK PB15 MOSI
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
//PB14 MISO
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;
//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
// GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOB, &GPIO_InitStructure);
SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; //?????????¤
SPI_InitStructure.SPI_Mode = SPI_Mode_Master; //?÷?ú????
SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; //8??????
SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; //SCLK?????±????????
SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; //SCLK????????????????
SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; //???ú???????????í??????????????GPIO???????ú
SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4; //APB2?ò??APB1×?????????1/2~1/256·???
SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; //??????????MSB??????
SPI_InitStructure.SPI_CRCPolynomial = 7; //CRC?????????à????
SPI_Init(SPI2, &SPI_InitStructure);
/* Enable SPI1 */
SPI_Cmd(SPI2, ENABLE);
}
//其他几个引脚的初始化
void ADS1256_GPIO_init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
//CS reset ?????è??
//CS PB5
//RESET PB6
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_5 | GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_Out_PP; //--????????????
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_10MHz; //--GPIO·×???????50MHz
GPIO_Init(GPIOB , &GPIO_InitStructure); //--????????????????GPIO?????÷??
// DRDY?????è?? PB8
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_IPU; //--????????????
GPIO_InitStructure.GPIO_Speed= GPIO_Speed_10MHz; //--GPIO·×???????50MHz
GPIO_Init(GPIOB , &GPIO_InitStructure); //--????????????????GPIO?????÷??
}
//芯片初始化
void ADS1256_Init(void)
{
ADS_CS_LOW();
ADS_RESET = 1;
ADS1256WREG(ADS1256_STATUS,0x00); //
delay_us(10);
ADS1256WREG(ADS1256_MUX,0x08); //
delay_us(10);
ADS1256WREG(ADS1256_ADCON,0x00); //
delay_us(10);
ADS1256WREG(ADS1256_DRATE,ADS1256_DRATE_2_5SPS); //
delay_us(10);
ADS1256WREG(ADS1256_IO,0x00); // IO
delay_us(10);
//ADS_CS_HIGH();
}
|