当前位置: 首页 > news >正文

【Mini-F5265-OB开发板试用测评】3、MDS 可编程 IP 互联模块

一、介绍

MDS(MindSwitch)的作用是在不借助软件干预的情况下使几个不同的外设协同工作。它连接了若干
个源模块(比如 TIMx,EXTIx 等)和目标模块(比如 ADCx,DACx 等)。通过寄存器配置可以选通任意
一个源和目标之间的连接通道,使目标模块可以成功接收到源信号并自动开始预设的动作。

支持触发通道和连接通道
 可配置触发源和触发目标
 触发源和触发目标可自由配置
 支持外设硬件触发和软件触发
 内部集成四个组合逻辑单元 CLU(Combinational Logic Unit),提供 or-or 组合逻辑操作。
 可配置连接源和连接目标
 连接源和连接目标可自由配置
 内部集成四个组合逻辑单元 CLU(Combinational Logic Unit),提供多种组合逻辑操作。
 支持不同时钟频率的触发源和触发目标之间协同工作

触发目标分为触发(trigger)和连接(connection)两种,MindSwitch 会与触发类型的目标做握手,
以确保触发源能被触发目标正确接收,如 ADC/DAC 等的外部触发。对于连接类型的目标,MindSwitch 会
将选择过后的触发源与目标直接连接,如比较器输出窗口和 GPIO 等。

以上为用户手册中关于MDS的介绍,第一次在MCU中看到MDS这样的模块,说实话没有任何经验,只是感觉是一个很有趣的功能。

二、例程研究

以ADC和EXTI triger例程为例,路径:LibSamples_MM32F5260_V0.11.3\Samples\LibSamples\MDS\MDS_ADC_EXTI_Trigger

1、ADC初始化

 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);ADC_CalibrationConfig(ADC1, 0x1FE);ADC_StructInit(&ADC_InitStruct);ADC_InitStruct.ADC_Resolution = ADC_Resolution_12b;ADC_InitStruct.ADC_Prescaler  = ADC_Prescaler_16;ADC_InitStruct.ADC_Mode       = ADC_Mode_Scan;ADC_InitStruct.ADC_DataAlign  = ADC_DataAlign_Right;ADC_Init(ADC1, &ADC_InitStruct);ADC_SampleTimeConfig(ADC1, ADC_Channel_1, ADC_SampleTime_240_5);ADC_SampleTimeConfig(ADC1, ADC_Channel_4, ADC_SampleTime_240_5);ADC_SampleTimeConfig(ADC1, ADC_Channel_5, ADC_SampleTime_240_5);ADC_ChannelCmd(ADC1, ADC_Channel_1, ENABLE);ADC_ChannelCmd(ADC1, ADC_Channel_4, ENABLE);ADC_ChannelCmd(ADC1, ADC_Channel_5, ENABLE);ADC_ExternalTrigSourceConfig(ADC1, ADC_ExtTrig_Edge_Up, ADC_ExtTrig_Shift_16);ADC_ExternalTrigConvCmd(ADC1, ENABLE);

配置了ADC1的3个通道:1、4、5,通过外部中断触发ADC采样

2、MDS初始化

  MDS_TriggerNotCluStructInit(&MDS_TriggerNotCLU);MDS_TriggerNotCLU.MDS_Channel     = MDS_TriggerOutput_ADC1_EXT_TRIGGER;MDS_TriggerNotCLU.MDS_InputEdge   = MDS_InputEdge_Both;MDS_TriggerNotCLU.MDS_InputSource = MDS_TriggerSource_EXTI1;MDS_TriggerNotCluInit(&MDS_TriggerNotCLU);

配置了触发源为EXTI1,触发目标为ADC1。

3、EXTI1初始化

    /* K2->PB1->EXTI_Line1 */GPIO_StructInit(&GPIO_InitStruct);GPIO_InitStruct.GPIO_Pin  = GPIO_Pin_1;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPU;GPIO_Init(GPIOB, &GPIO_InitStruct);SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOB, EXTI_PinSource1);EXTI_StructInit(&EXTI_InitStruct);EXTI_InitStruct.EXTI_Line    = EXTI_Line1;EXTI_InitStruct.EXTI_Mode    = EXTI_Mode_Event;EXTI_InitStruct.EXTI_Trigger = EXTI_Trigger_Falling;EXTI_InitStruct.EXTI_LineCmd = ENABLE;EXTI_Init(&EXTI_InitStruct);

K2(B1)配置为EXTI1

4、主循环

   while (1){while (RESET == ADC_GetFlagStatus(ADC1, ADC_FLAG_EOS)){}ADC_ClearFlag(ADC1, ADC_FLAG_EOS);if (RESET !=  EXTI_GetFlagStatus(EXTI_Line1)){EXTI_ClearFlag(EXTI_Line1);}Voltage[0] = (float)ADC_GetChannelConvertedValue(ADC1, ADC_Channel_1) * (float)3.3 / (float)4096.0;Voltage[1] = (float)ADC_GetChannelConvertedValue(ADC1, ADC_Channel_4) * (float)3.3 / (float)4096.0;Voltage[2] = (float)ADC_GetChannelConvertedValue(ADC1, ADC_Channel_5) * (float)3.3 / (float)4096.0;printf("\r\nPA1 Voltage = %0.2f  \tPA4 Voltage = %0.2f  \tPA5 Voltage = %0.2f", Voltage[0], Voltage[1], Voltage[2]);}

按下K2采集一次,否则在“while (RESET == ADC_GetFlagStatus(ADC1, ADC_FLAG_EOS))”中循环。

在这里插入图片描述

用其他的方法也可以实现按键触发ADC采样。使用MDS的好处应该是不用软件干预而设外协同工作,也就是用EXTI1触发ADC1不占用CPU时间,这应该和DMA的设计出发点是一致,而且还可以提高效率。毕竟是新知识,对各项配置参数没有深入了解。

http://www.lqws.cn/news/449983.html

相关文章:

  • npm下载离线依赖包
  • 算法-每日一题(DAY11)每日温度
  • CDGP|2025年传统工厂数据治理:智能制造升级的新引擎
  • ESP32-HTML-08
  • .Net Framework 4/C# 进程和线程的使用
  • .NET 4.7中使用NLog记录日志到数据库表
  • 基于PyQt5和PaddleSpeech的中文语音识别系统设计与实现(Python)
  • 数字媒体专业核心课程体系以“艺术创意+数字科技+产业应用”三维融合
  • VSCode1.101.1Win多语言语言编辑器便携版安装教程
  • Can‘t resolve ‘react/jsx-runtime‘ in xxx
  • Vue框架深度解析:从Vue2到Vue3的技术演进与实践指南
  • day43-硬件学习之ARM基础知识
  • uniapp 微信小程序在线引入字体图标
  • 数据集-目标检测系列- 餐具叉子 数据集 fork >> DataBall
  • LibCpr: Windows环境下实现一个C++版本的Http客户端
  • Spring Cloud 服务调用详解:Ribbon 负载均衡与 Feign 声明式接口调用
  • 【MATLAB代码】制导方法介绍与例程——追踪法,适用于二维平面,目标是移动的|附完整源代码
  • C++基础算法————并查集
  • 【Dify精讲】第14章:部署架构与DevOps实践【知识卡片】
  • 虹科案例 | 欣旺达如何实现动力电池测试的长期稳定性+自动化?
  • 【NLP入门系列三】NLP文本嵌入(以Embedding和EmbeddingBag为例)
  • 高效获取速卖通商品实时数据:API 接口开发与接入全流程
  • ReAct
  • 【二进制安全作业】250617课上作业4 - start
  • Linux (2)
  • 【stm32】标准库学习——I2C
  • 指标解读——113页企业信息化成熟度评估指标【附全文阅读】
  • 算法第38天|322.零钱兑换\139. 单词拆分
  • C语言:二分搜索函数
  • 【Java学习笔记】线程基础