STM32F334 Cube配置学习笔记——两通道ADC通过DMA传输数据

一、IO配置原理图:
在这里插入图片描述
二、在Cube Mx配置对应IO口
本实例只用到UASR1(TX、RX) & ADC1(IN1、IN3):
在这里插入图片描述
三、配置ADC
1、打开通道1、3
在这里插入图片描述
2、设置ADC参数:
在这里插入图片描述
注意多通道应用需要将End Of Conversion Selection选项配置为End of sequence of conversion.
在这里插入图片描述
3、配置ADC对应DMA
在这里插入图片描述
由于ADC为12位,因此记录数据的内存长度至少需要12位,标准数据类型中半个字(即两个字节最为接近)。另,由于需要记录两个数据,因此内存地址递增选项勾起来。

四、配置USART参数:
在这里插入图片描述
五、配置时钟树
在这里插入图片描述
然后就可以点击生成代码了。

主要代码参考如下:

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_ADC1_Init();
  MX_USART1_UART_Init();
  /* USER CODE BEGIN 2 */
	HAL_DMA_Start(&hdma_adc1, (uint32_t)ADC1+ 0x40, (uint32_t)(&ADC1_RESULT), 2);
	HAL_ADCEx_Calibration_Start(&hadc1, ADC_SINGLE_ENDED);
	
	HAL_ADC_Start_DMA(&hadc1, (uint32_t*)ADC1_RESULT, 2);
  /* USER CODE END 2 */
	
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		Vinfact = (float)ADC1_RESULT[0]/ 4096 * (float)3.3;
		Voutfact = (float)ADC1_RESULT[1]/ 4096 * (float)3.3;
		printf("Vin is : %f V \n\r", Vinfact);
		printf("Vout is : %f V \n\r", Voutfact);
		SysTick_Delay_Ms(1000);
  }
  /* USER CODE END 3 */
}


注意Cube MX只是加速完成了对应寄存器的配置,最终代码中还需要自行掉用启动外设的相关库函数,比如本实例中的DMA启动函数:

HAL_DMA_Start(&hdma_adc1, (uint32_t)ADC1+ 0x40, (uint32_t)(&ADC1_RESULT), 2);

ADC启动函数:

HAL_ADC_Start_DMA(&hadc1, (uint32_t*)ADC1_RESULT, 2);
本设计是基于STM32F334 数字电源开发板设计,高效同步buck,boost,buck-boost双向DC-DC转换器,支持恒压恒流供电。STM32F334xx 微控制器具有高分辨率定时器 ( HRTIM)外设,可产生多达 10 个信号,能够处理用于控制、同步或保护的各种不同输入信号。其模块化架构允许对大部分转换拓扑和多并联转换器进行处理,并可在运行中重新配置它们。 STM32F334 的HRTIM功能可以产生互补等各PWM波形,该定时器最大计数频率高达4.608G,时间控制精度高达217ps。笔者参考STM32F334设计手册,完成了高精度PID的数字电源。buck,boost,buck-boost均为同步整流技术,输入输出LC滤波,使得重载/轻载纹波均低于100mV,PID响应环路小于10us。STM32F334 数字电源开发板电路功能如下: STC15 PID 数字电源 BUCK/BOOST同步整流开发板视频链接: https://v.youku.com/v_show/id_XMzMzOTA4NzM5Ng==.htm... STM32 PID 数字电源 BUCK/BOOST同步整流开发板视频链接: https://v.youku.com/v_show/id_XMzMzOTM2MjQwOA==.htm... STM32 PID 数字电源 BUCK-BOOST升降压同步整流开发板视频链接: https://v.youku.com/v_show/id_XMzMzOTA4NzUyMA==.htm... 淘宝链接: https://item.taobao.com/item.htm?spm=a1z38n.106770... https://item.taobao.com/item.htm?spm=a1z38n.106770... https://item.taobao.com/item.htm?spm=2013.1.201410... BUCK开发版基本电气 输入端口为A端口 指标输入电压:10~55V,输出电压:5~50V 电流:在良好的散热条件下,最大电流不超过6A 功率:在良好的散热条件下,最大功率不超过200w 高效率设计,支持的最大效率最大96% 输出纹波:LC滤波,低纹波 散热情况:100W无需要散热片;100W以上,需要良好的散热条件 调压调流方式:UART控制,写入相应的格式进行调压调流。或通过按键 进行调整。 显示窗口:IIC OLED12864 与电脑串口软件。 Boost开发版基本电气 指标输入电压:10~55V,输出电压:12-60V 电流:在良好的散热条件下,最大电流不超过6A 功率:在良好的散热条件下,最大功率不超过200w 高效率设计,支持的最大效率超过97% 输出纹波:LC滤波,低纹波 支持串口调压调流,PID算法,良好的响应时间。过压过流打嗝保护。 散热情况:100W无需要散热片;100W以上,需要良好的散热条件。 调压调流方式:UART控制,写入相应的格式进行调压调流。或通过按键 进行调整。 显示窗口:IIC OLED12864 与电脑串口软件。 Buck-Boost升降压开发版基本电气 指标输入电压:10~55V,输出电压:5~50V,无缝切换,但是尽量避免切换点 电流:在良好的散热条件下,最大电流不超过6A 功率:在良好的散热条件下,最大功率不超过150w 高效率设计,支持的最大效率超过 BUCK 最大92%,Boost 最大93%,如果加入防反接设计,效率会偏低2-3%个点。 输出纹波:LC滤波,低纹波 支持串口调压调流,PID算法,响应时间较差,使用于蓄电池充电。过压过流打嗝保护。 散热情况:100W无需要散热片;100W以上,需要良好的散热条件。 调压调流方式: UART控制,写入相应的格式进行调压调流。或通过按键进行调整。 显示窗口:IIC OLED12864 与电脑串口软件。 STM32开发板综述: STC15 开发板综述: 在 STM32 微控制器中, STM32F334xx 产品的目标市场是需要高度精确计时数字信号、尤其是数字功率转换应用的细分市场。包括:数字电源;照明;不间断电源;太阳能逆变器;无线充电器等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值