ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
24 апреля
1219075 Топик полностью
Moлoдoй кoллeгa (28.06.2022 17:41, просмотров: 200) ответил SciFi на По-моему, это вы пропустили момент. Если частота SPI достаточно низкая, то никакие паузы уже не нужны.
+1, у меня это самый АЦП вот так конда-то был заговнокожен: 
/*******************************************************************************
Adc_WREG
*******************************************************************************/
void Adc_WREG(uint8_t reg, uint8_t val)
{
  uint8_t atx[3], arx[3];
  atx[0] = 0x40 | reg; // reg address
  atx[1] = 0x00; // data byte qty -1 (1 byte)
  atx[2] = val;
  ADC_CS_0;
  HAL_SPI_TransmitReceive_DMA(&hspi1, atx, arx, 3);
  TimeOutStart(200);
  while(!ADC_CS_G && TimeOutGetTimeLeft()){};
}

/*******************************************************************************
Adc_RREG
*******************************************************************************/
uint8_t Adc_RREG(uint8_t reg)
{
  uint8_t atx[3], arx[3];
  atx[0] = 0x20 | reg; // reg address
  atx[1] = 0x00; // data byte qty -1 (1 byte)
  atx[2] = 0x00;
  ADC_CS_0;
  HAL_SPI_TransmitReceive_DMA(&hspi1, atx, arx, 3);
  TimeOutStart(200);
  while(!ADC_CS_G && TimeOutGetTimeLeft()){};
  return arx[2];
}

так же и данные выгребаются по DMA

/*******************************************************************************
Adc_GPIO_EXTI
*******************************************************************************/
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
  ADC_CS_0;
  atxx[0]=0x12;
  HAL_SPI_TransmitReceive_DMA(&hspi1, atxx, arxx, 4);
}

/*******************************************************************************
HAL_SPI_TxRxCpltCallback
*******************************************************************************/
void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
{
  ADC_CS_1;
  if(atxx[0]==0x12)
  {
    atxx[0]=0;
    adc_last_value = (arxx[1]<<16) | (arxx[2]<<8) | arxx[3];
    if(adc_last_value & 0x00800000)//sign

adc_last_value |= 0xFF000000;

}
}