This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ADC124S051的驱动CLK问题

Other Parts Discussed in Thread: ADC124S051

我在用stm32F103RCT6驱动ADC124S051,可以驱动读数正确没有问题。

问题是:如果想达到500Khz的采样率(单通道工作),必须给ADC的clk提供8Mhz,我按照datasheet时序写的代码无法达到驱动时钟8Mhz,我的代码如下:是不是我给定时钟的方式不对,还是说有其他的驱动方式。

uint32_t ADC_read_signal_channel(uint8_t chipselect,uint8_t ADC_channel)
{
uint8_t i = 0;
uint32_t ADC_DATA = 0;

HAL_GPIO_WritePin(GPIOB, SCLK, 0);        //ADC的时钟先置0
HAL_GPIO_WritePin(GPIOA, chipselect, 0); //片选拉低

//------------------------------
for (int i = 0; i < 16; i++)     //一共16个clk完成一次采样转换,前4个clk写入读哪个通道寄存器
{
HAL_GPIO_WritePin(GPIOB, DATAOUT, (ADC_channel & 0x80) >> 7); //写入ADC control register
ADC_channel = ADC_channel << 1;
HAL_GPIO_WritePin(GPIOB, SCLK, 1);     //clk拉高

if((i >= 4) && (i <= 15)) //从SCLK的第5个sclk开始读数据
{
if (HAL_GPIO_ReadPin(GPIOB, DATAIN)) //如果读到的状态是1
ADC_DATA |= (1 << (15-i));
}
HAL_GPIO_WritePin(GPIOB, SCLK, 0);

}
//-----------------------------------
HAL_GPIO_WritePin(GPIOA, chipselect, 1);   //拉高片选
return ADC_DATA;
}