STM32读取AD7606-4(HAL库)

一、双通道读取

1.CubeMX配置

①SPI1配置

不要使用Receive Only Master模式

②SPI2配置

2.程序

cpp 复制代码
int16_t Data[4];
float raw_buf[4];
/* USER CODE END 0 */

/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{

  /* USER CODE BEGIN 1 */

  /* 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_DMA_Init();
  MX_SPI1_Init();
  MX_SPI2_Init();
  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
		HAL_GPIO_WritePin(CONVST_GPIO_Port, CONVST_Pin, 1);
		HAL_Delay(100);
		HAL_GPIO_WritePin(CONVST_GPIO_Port, CONVST_Pin, 0);
		
		HAL_SPI_Receive_DMA(&hspi2,(uint8_t *)&Data[2], 2);
		HAL_SPI_Receive(&hspi1, (uint8_t *)&Data[0], 2, 0xFF);
		for(uint8_t ch=0; ch<4; ch++)
    {
			raw_buf[ch] = (float)Data[ch] / 32768.0f * 10.0f;
    }
		
		HAL_Delay(100);
    /* USER CODE END WHILE */

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

3.读取顺序

二、单通道读取

1.程序

仅使用一个通道读取即可

cpp 复制代码
HAL_SPI_Receive(&hspi1, (uint8_t *)&Data[0], 4, 0xFF);

2.读取顺序

相关推荐
weixin_464078071 小时前
电路中补偿器的作用
嵌入式硬件
不会代码的小猴3 小时前
中断(NVIC)
单片机·嵌入式硬件
糖糖单片机设计3 小时前
基于STM32的空气污染检测与报警系统设计与实现
stm32·单片机·嵌入式硬件
zhangzhangkeji3 小时前
stm32 15-2 flash 闪存:代码部分二
stm32
盛世宏博北京3 小时前
工业环境稳定采集:配电室 IP 温湿度变送器 TCP/UDP 通信部署指南
单片机·tcp/ip·udp
comyccccc4 小时前
自制多路输出DCDC电源板,3.3V-12V可调 学习笔记
单片机·嵌入式硬件·硬件工程
Zwawa4 小时前
把 AO 接回来:黑线和白底之间到底差了多少
c语言·单片机·嵌入式
Yiran_G4 小时前
BLE终端数据积压如何处理?缓存队列、断连补传与流量调度设计
嵌入式硬件·物联网