国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32 MCO+SPI獲取24位模數(shù)轉(zhuǎn)換(24bit ADC)高速芯片ADS1271采樣數(shù)據(jù)

這篇具有很好參考價(jià)值的文章主要介紹了STM32 MCO+SPI獲取24位模數(shù)轉(zhuǎn)換(24bit ADC)高速芯片ADS1271采樣數(shù)據(jù)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

STM32 MCO+SPI獲取24位模數(shù)轉(zhuǎn)換(24bit ADC)高速芯片ADS1271采樣數(shù)據(jù)

STM32大部分芯片只有12位的ADC采樣性能,如果要實(shí)現(xiàn)更高精度的模數(shù)轉(zhuǎn)換如24位ADC采樣,則需要連接外部ADC實(shí)現(xiàn)。ADS1271是 TI公司一款高速24位Σ-Δ型模數(shù)轉(zhuǎn)換器(ADC) ,數(shù)據(jù)率達(dá)到105K SPS, 即一秒可以采樣105000次。

這里介紹基于A(yíng)DS1271的24位ADC采樣實(shí)現(xiàn)。采用STM32CUBEIDE開(kāi)發(fā)工具,以STM32F401CCU6為例。

ADS1271操作方式

ADS1271的管腳定義如下所示:
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit

ADS1271采用雙電壓模式,即模擬電壓和數(shù)字電壓可以單獨(dú)設(shè)置,因此典型應(yīng)用為模擬電壓接5V,數(shù)字電壓接3.3V,從而數(shù)字邏輯管腳可以與STM32直接連接。
ADS1271有三種模式: 高速,高分辨率和低功耗,這里只介紹高速模式的例程,其它的模式可以相應(yīng)調(diào)整即可。因此MODE管腳拉低。
ADS1271有三種數(shù)據(jù)輸出方式: SPI, MO, FS, 這里只介紹SPI模式,其它的模式可以相應(yīng)調(diào)整即可。因此FORMAT管腳拉低。
/SYNC_/PDWN用作上下電控制,因此保持上電狀態(tài),一直拉高。
DIN管腳可以用作級(jí)聯(lián)采樣方式,這里只介紹單片采樣方式,因此DIN管腳必須拉低。
DOUT為數(shù)據(jù)輸出管腳,STM32輸出上升沿給ADS1271時(shí)ADS1271送出數(shù)據(jù),STM32輸出下降沿時(shí)自身采樣數(shù)據(jù)。
/DRDY_FSYNC用作ADS1271數(shù)據(jù)準(zhǔn)備好的報(bào)告,對(duì)STM32為輸入管腳連接。
SCLK為數(shù)據(jù)獲取時(shí)鐘,SCLK需要保證在兩次/DRDY_FSYNC之間能夠讀取完一次ADS1271準(zhǔn)備好的數(shù)據(jù)。
CLK為需要提供給ADS1271的高速時(shí)鐘,最小值為100KHz,最大值為27MHz。這里通過(guò)STM32的MCO(Master Clock Out)專(zhuān)用功能管腳連接提供此時(shí)鐘。
VREFP連接到一個(gè)2.5V左右的穩(wěn)壓源,因?yàn)楣苣_內(nèi)部有4.2K阻值特性,因此可以在外部通過(guò)連接一個(gè)4.7K電阻到5V,為了提高參考電壓穩(wěn)定性,需要給5V電壓放置一個(gè)大的濾波電容。
AINP/AINN則連接要采樣的差分電壓。
本例程的連接關(guān)系為:
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit

STM32工程配置

首先創(chuàng)建基本工程并設(shè)置時(shí)鐘:
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit

24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit

24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit
配置MCO輸出時(shí)鐘頻率為21MHz:
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit
設(shè)置PA4為GPIO輸入管腳作為/DRDY_FSYNC, 設(shè)置SPI1作為數(shù)據(jù)獲取接口:
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit
只連接SPI1的PA5和PA6,作為時(shí)鐘和數(shù)據(jù)獲取管腳:
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit
本例程不采用中斷和DMA方式,直接配置接口參數(shù):
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit
配置USB虛擬串口作為數(shù)據(jù)輸出端口:
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit
保存并生成初始工程代碼;
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit

STM32工程代碼

例程代碼實(shí)現(xiàn)連續(xù)獲取5000次采樣數(shù)據(jù)后,做一次平均,再輸出24位采樣平均值。

完整的例程代碼main.c:

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file           : main.c
  * @brief          : Main program body
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2023 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LICENSE file comes with this software, it is provided AS-IS.
  *
  ******************************************************************************
  */
/* USER CODE END Header */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "usb_device.h"

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private typedef -----------------------------------------------------------*/
/* USER CODE BEGIN PTD */

/* USER CODE END PTD */

/* Private define ------------------------------------------------------------*/
/* USER CODE BEGIN PD */
__IO float usDelayBase;
void PY_usDelayTest(void)
{
  __IO uint32_t firstms, secondms;
  __IO uint32_t counter = 0;

  firstms = HAL_GetTick()+1;
  secondms = firstms+1;

  while(uwTick!=firstms) ;

  while(uwTick!=secondms) counter++;

  usDelayBase = ((float)counter)/1000;
}

void PY_Delay_us_t(uint32_t Delay)
{
  __IO uint32_t delayReg;
  __IO uint32_t usNum = (uint32_t)(Delay*usDelayBase);

  delayReg = 0;
  while(delayReg!=usNum) delayReg++;
}

void PY_usDelayOptimize(void)
{
  __IO uint32_t firstms, secondms;
  __IO float coe = 1.0;

  firstms = HAL_GetTick();
  PY_Delay_us_t(1000000) ;
  secondms = HAL_GetTick();

  coe = ((float)1000)/(secondms-firstms);
  usDelayBase = coe*usDelayBase;
}


void PY_Delay_us(uint32_t Delay)
{
  __IO uint32_t delayReg;

  __IO uint32_t msNum = Delay/1000;
  __IO uint32_t usNum = (uint32_t)((Delay%1000)*usDelayBase);

  if(msNum>0) HAL_Delay(msNum);

  delayReg = 0;
  while(delayReg!=usNum) delayReg++;
}

/* USER CODE END PD */

/* Private macro -------------------------------------------------------------*/
/* USER CODE BEGIN PM */

/* USER CODE END PM */

/* Private variables ---------------------------------------------------------*/
SPI_HandleTypeDef hspi1;

/* USER CODE BEGIN PV */

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);
/* USER CODE BEGIN PFP */

/* USER CODE END PFP */

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */

#define ADS1271_DRDY HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_4)

uint32_t ads1271_data;
void ADS1271_Get_Data(void)
{
	while(ADS1271_DRDY!=0) PY_Delay_us_t(1);

	HAL_SPI_Receive(&hspi1, (uint8_t *)&ads1271_data, 3, 2700);

	while(ADS1271_DRDY==0) PY_Delay_us_t(1);
}

#define avg_times 5000
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */
  uint32_t i;
  uint32_t Buff[avg_times];
  uint64_t sum = 0;
  uint32_t avg = 0;
  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USB_DEVICE_Init();
  MX_SPI1_Init();
  /* USER CODE BEGIN 2 */
  PY_usDelayTest();
  PY_usDelayOptimize();


  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

     for(i=0; i<avg_times; i++)
     {
    	 ADS1271_Get_Data();
    	 Buff[i] = ads1271_data;
     }

     sum = 0;
     for(i=0; i<avg_times; i++)
     {
    	 sum += (Buff[i]>>16)|(Buff[i]&0x0000ff00)|((Buff[i]&0x000000ff)<<16);
     }

     avg = sum/avg_times;
	 while(CDC_Transmit_FS((uint8_t*)&avg, 3)==USBD_BUSY) PY_Delay_us_t(1);


    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

/**
  * @brief System Clock Configuration
  * @retval None
  */
void SystemClock_Config(void)
{
  RCC_OscInitTypeDef RCC_OscInitStruct = {0};
  RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};

  /** Configure the main internal regulator output voltage
  */
  __HAL_RCC_PWR_CLK_ENABLE();
  __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE2);

  /** Initializes the RCC Oscillators according to the specified parameters
  * in the RCC_OscInitTypeDef structure.
  */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
  RCC_OscInitStruct.HSEState = RCC_HSE_ON;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
  RCC_OscInitStruct.PLL.PLLM = 25;
  RCC_OscInitStruct.PLL.PLLN = 336;
  RCC_OscInitStruct.PLL.PLLP = RCC_PLLP_DIV4;
  RCC_OscInitStruct.PLL.PLLQ = 7;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }

  /** Initializes the CPU, AHB and APB buses clocks
  */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV4;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK)
  {
    Error_Handler();
  }
  HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_PLLCLK, RCC_MCODIV_4);
}

/**
  * @brief SPI1 Initialization Function
  * @param None
  * @retval None
  */
static void MX_SPI1_Init(void)
{

  /* USER CODE BEGIN SPI1_Init 0 */

  /* USER CODE END SPI1_Init 0 */

  /* USER CODE BEGIN SPI1_Init 1 */

  /* USER CODE END SPI1_Init 1 */
  /* SPI1 parameter configuration*/
  hspi1.Instance = SPI1;
  hspi1.Init.Mode = SPI_MODE_MASTER;
  hspi1.Init.Direction = SPI_DIRECTION_2LINES;
  hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
  hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
  hspi1.Init.CLKPhase = SPI_PHASE_1EDGE;
  hspi1.Init.NSS = SPI_NSS_SOFT;
  hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
  hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
  hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
  hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
  hspi1.Init.CRCPolynomial = 10;
  if (HAL_SPI_Init(&hspi1) != HAL_OK)
  {
    Error_Handler();
  }
  /* USER CODE BEGIN SPI1_Init 2 */

  /* USER CODE END SPI1_Init 2 */

}

/**
  * @brief GPIO Initialization Function
  * @param None
  * @retval None
  */
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};
/* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOH_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();

  /*Configure GPIO pin : PA4 */
  GPIO_InitStruct.Pin = GPIO_PIN_4;
  GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
  GPIO_InitStruct.Pull = GPIO_PULLUP;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

  /*Configure GPIO pin : PA8 */
  GPIO_InitStruct.Pin = GPIO_PIN_8;
  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_VERY_HIGH;
  GPIO_InitStruct.Alternate = GPIO_AF0_MCO;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**
  * @brief  This function is executed in case of error occurrence.
  * @retval None
  */
void Error_Handler(void)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  __disable_irq();
  while (1)
  {
  }
  /* USER CODE END Error_Handler_Debug */
}

#ifdef  USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *         where the assert_param error has occurred.
  * @param  file: pointer to the source file name
  * @param  line: assert_param error line source number
  * @retval None
  */
void assert_failed(uint8_t *file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
     ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

STM32測(cè)試輸出

串口測(cè)試輸出如下:
24位adc芯片,STM32,stm32,ADS1271,ADC,24位,24bit

STM32例程下載

STM32 MCO+SPI獲取24位模數(shù)轉(zhuǎn)換(24bit ADC)高速芯片ADS1271采樣數(shù)據(jù)例程

–End–文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-573865.html

到了這里,關(guān)于STM32 MCO+SPI獲取24位模數(shù)轉(zhuǎn)換(24bit ADC)高速芯片ADS1271采樣數(shù)據(jù)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • STM32讀取24位模數(shù)轉(zhuǎn)換(24bit ADC)芯片HX711數(shù)據(jù)

    STM32讀取24位模數(shù)轉(zhuǎn)換(24bit ADC)芯片HX711數(shù)據(jù)

    HX711是一款國(guó)產(chǎn)低成本24位ADC芯片,常用于與稱(chēng)重傳感器配合實(shí)現(xiàn)體重計(jì)的應(yīng)用。這里介紹STM32讀取HX711的電路和代碼實(shí)現(xiàn)。 HX711的內(nèi)部原理如下圖所示: 市面上有普通和帶屏蔽的兩種模塊: STM32可直接與HX711進(jìn)行連接,選擇2個(gè)具有FT(5V耐壓)的管腳,將其中對(duì)應(yīng)時(shí)鐘輸出的管

    2023年04月08日
    瀏覽(70)
  • STM32配置讀取雙路24位模數(shù)轉(zhuǎn)換(24bit ADC)芯片CS1238數(shù)據(jù)

    STM32配置讀取雙路24位模數(shù)轉(zhuǎn)換(24bit ADC)芯片CS1238數(shù)據(jù)

    CS1238是一款國(guó)產(chǎn)雙路24位ADC芯片,與CS1238對(duì)應(yīng)的單路24位ADC芯片是CS1237,功能上相當(dāng)于HX711和TM7711的組合。其功能如下所示: 市面上的模塊: CS1238內(nèi)部原理如下所示, VDD是DVDD和AVDD的合并: 有單獨(dú)的參考電壓輸入設(shè)置管腳,以及內(nèi)部輸出與VDD同電壓的參考輸出電壓,可選連接到

    2024年02月16日
    瀏覽(26)
  • STM32--ADC模數(shù)轉(zhuǎn)換

    STM32--ADC模數(shù)轉(zhuǎn)換

    STM32的ADC(Analog-Digital Converter)模擬-數(shù)字轉(zhuǎn)換器 , 是一種逐次逼近型模擬數(shù)字轉(zhuǎn)換器,可以將引腳上連續(xù)變化的模擬電壓轉(zhuǎn)換為內(nèi)存中存儲(chǔ)的數(shù)字變量,建立模擬電路到數(shù)字電路的橋梁 。擁有18個(gè)輸入通道,可測(cè)量16個(gè)外部通道和2個(gè)內(nèi)部信號(hào)源。各通道的A/D轉(zhuǎn)換可以單次、

    2024年02月12日
    瀏覽(19)
  • STM32-ADC模數(shù)轉(zhuǎn)換

    STM32-ADC模數(shù)轉(zhuǎn)換

    ?ADC的概念 Analog-to-Digital Converter的縮寫(xiě)。指模/數(shù)轉(zhuǎn)換器或者模擬/數(shù)字轉(zhuǎn)換器。是指將連續(xù)變量的模擬信號(hào)轉(zhuǎn)換為離散的數(shù)字信號(hào)的器件。 ?ADC的作用 采集傳感器的數(shù)據(jù),測(cè)量輸入電壓,檢查電池電量剩余,監(jiān)測(cè)溫濕度等。 典型的模擬數(shù)字轉(zhuǎn)換器將模擬信號(hào)轉(zhuǎn)換為表示一定

    2024年01月20日
    瀏覽(22)
  • STM-32:ADC模數(shù)轉(zhuǎn)換器—ADC單通道轉(zhuǎn)換/ADC多通道轉(zhuǎn)換

    STM-32:ADC模數(shù)轉(zhuǎn)換器—ADC單通道轉(zhuǎn)換/ADC多通道轉(zhuǎn)換

    ADC(Analog-Digital Converter),意即模擬-數(shù)字轉(zhuǎn)換器,簡(jiǎn)稱(chēng)模數(shù)轉(zhuǎn)換器。ADC可以將引腳上連續(xù)變化的模擬電壓轉(zhuǎn)換為內(nèi)存中存儲(chǔ)的數(shù)字變量,建立模擬電路到數(shù)字電路的橋梁。與ADC相對(duì)應(yīng),從數(shù)字電路到模擬電路的橋梁即DAC(Digital-Analog Convertor),數(shù)模轉(zhuǎn)換器。 DAC不是唯一可以

    2024年02月09日
    瀏覽(23)
  • STM32筆記(1)———ADC模數(shù)轉(zhuǎn)換器原理及單、雙通道轉(zhuǎn)換

    STM32筆記(1)———ADC模數(shù)轉(zhuǎn)換器原理及單、雙通道轉(zhuǎn)換

    ADC(Analog-Digital Converter),意即模擬-數(shù)字轉(zhuǎn)換器,簡(jiǎn)稱(chēng)模數(shù)轉(zhuǎn)換器。 ADC可以將引腳上連續(xù)變化的模擬電壓轉(zhuǎn)換為內(nèi)存中存儲(chǔ)的數(shù)字變量,建立模擬電路到數(shù)字電路的橋梁。 DAC:數(shù)字到模擬的橋梁(PWM控制燈的亮度和電機(jī)旋轉(zhuǎn)的速度,DAC的使用只要是在信號(hào)發(fā)生器、音頻解碼

    2024年02月04日
    瀏覽(23)
  • 【第五章】STM32-ADC模數(shù)轉(zhuǎn)換(2.AD多通道+DMA轉(zhuǎn)運(yùn)實(shí)驗(yàn))

    【第五章】STM32-ADC模數(shù)轉(zhuǎn)換(2.AD多通道+DMA轉(zhuǎn)運(yùn)實(shí)驗(yàn))

    我們?cè)谏弦还?jié)已經(jīng)了解了ADC以及AD單通道采集的過(guò)程,那么既然有AD單通道,那么必然有AD多通道,上一節(jié)也已經(jīng)鋪墊了一下: 【問(wèn)】如果一個(gè)規(guī)則組同時(shí)用多個(gè)通道采集數(shù)據(jù),那么數(shù)據(jù)如何讀??? ???????????????????????????????????????? ??? --DMA-- ???

    2024年04月26日
    瀏覽(47)
  • STM32模擬SPI時(shí)序控制雙路16位數(shù)模轉(zhuǎn)換(16bit DAC)芯片DAC8552電壓輸出

    STM32模擬SPI時(shí)序控制雙路16位數(shù)模轉(zhuǎn)換(16bit DAC)芯片DAC8552電壓輸出

    STM32部分芯片具有12位DAC輸出能力,要實(shí)現(xiàn)16位及以上DAC輸出需要外掛DAC轉(zhuǎn)換ASIC。 DAC8552是雙路16位DAC輸出芯片,通過(guò)SPI三線(xiàn)總線(xiàn)進(jìn)行配置控制輸出。這里介紹通過(guò)GPIO管腳模擬時(shí)序進(jìn)行控制的方式。 DAC8552支持2.7V~5.5V的供電,根據(jù)需要提供電源電壓,對(duì)于STM32可能面對(duì)不同供電電

    2023年04月09日
    瀏覽(25)
  • STM32 ADC—模數(shù)轉(zhuǎn)換器

    STM32 ADC—模數(shù)轉(zhuǎn)換器

    目錄 一、ADC功能框圖 1.電壓輸入范圍 2.輸入通道 3.轉(zhuǎn)換順序 4.觸發(fā)源 5.轉(zhuǎn)換時(shí)間 6.數(shù)據(jù)寄存器 二、ADC初始化結(jié)構(gòu)體介紹 三、ADC常用固件庫(kù)函數(shù) 四、實(shí)驗(yàn)設(shè)計(jì) 1.獨(dú)立模式-單通道-中斷讀取 2.獨(dú)立模式-(單)多通道-必須采用DMA讀取 3.雙重模式-多通道-規(guī)則同步 簡(jiǎn)介:STM32單片機(jī)

    2024年02月05日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包