tag 标签: 通道切换

相关博文
  • 热度 8
    2020-12-25 14:56
    6172 次阅读|
    2 个评论
    使用DMA 进行AD采样很方便,但需要事先设置好通道。如果有过程中希望修改通道,可以先做一个DeInit 然后设置不同的Rank // Adc 通道配置 选择 vdc vbat preu pred void ADC1_misc_Init(void) { ADC_ChannelConfTypeDef sConfig; HAL_ADC_DeInit(&hadc1); /**Common config */ hadc1.Instance = ADC1; hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; hadc1.Init.ContinuousConvMode = ENABLE; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.NbrOfConversion = 4; if (HAL_ADC_Init(&hadc1) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } /**Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_12; // bdc sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } /**Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_13; // vbat sConfig.Rank = ADC_REGULAR_RANK_2; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } /**Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_1; // preu sConfig.Rank = ADC_REGULAR_RANK_3; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } /**Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_7; // pred sConfig.Rank = ADC_REGULAR_RANK_4; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } } // adc1 通道配置 bub pos void ADC1_ir_Init(void) { ADC_ChannelConfTypeDef sConfig; HAL_ADC_DeInit(&hadc1); /**Common config */ hadc1.Instance = ADC1; hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; hadc1.Init.ContinuousConvMode = ENABLE; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.NbrOfConversion = 2; if (HAL_ADC_Init(&hadc1) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } /**Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_5; // position sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_1CYCLE_5; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } /**Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_6; // bubble sConfig.Rank = ADC_REGULAR_RANK_2; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { _Error_Handler(__FILE__, __LINE__); } } 在启动转换时,依据设置的通道数,选择不同的DMA空间 void StartADC1Misc(void){ HAL_ADC_Start_DMA(&hadc1, ADC1Buf.ValMem,ADCCNT*4); } void StartADC1IR(void){ HAL_ADC_Start_DMA(&hadc1, IRBuf.ValMem,ADCCNT*2); } 获取采样值的时候,找到对应的缓冲区 uint32_t AdcGetValue(uint8_t ch){ uint32_t temp,i; temp = 0; for(i = ADCCNT/2-5;i< ADCCNT/2+5;i++){ temp = temp+ (ADC1Buf.Val &0xFFF); } temp /= 10; return temp; } uint32_t AdcGetIRValue(uint8_t ch){ uint32_t temp,i; temp = 0; for(i = ADCCNT/2-5;i< ADCCNT/2+5;i++){ temp = temp+ (IRBuf.Val &0xFFF); } temp /= 10; return temp; }
相关资源
  • 所需E币: 5
    时间: 2019-12-28 19:32
    大小: 184.84KB
    上传者: 微风DS
    【技术应用笔记】Σ-ΔADC的通道切换AN-6650OF5FDIOPMPHZ8BZt10#PYt/PSXPPE."t5FMt'BYtXXXBOBMPHDPN"%$ǖ.BSZ.D$BSUIZAD7708AD77181AD7708AD7718Σ-ΔADCAD7708/AD7718ADC(PGA)ADCAD7708AD7718……
  • 所需E币: 5
    时间: 2019-12-24 23:25
    大小: 256.99KB
    上传者: 微风DS
    简介Σ-Δ型ADC一般指定输出数据速率。输出数据速率是指当一个信号通道被选中且ADC连续进行转换时的转换速率。在数据采集系统等多通道应用中,会读取多个通道的转换值,也就是说,每个通道被轮流选中并进行转换。在这样的应用中,转换的速率不同于单通道系统。本应用笔记描述AD7190、AD7192、AD7193、AD7194和AD7195器件(以下简称为AD719x)所采用的切换程序。多通道系统在PLC系统等应用中,需要数个输入通道来处理来自传感器的各种信号或输出。AD719x支持PGA和宽范围的可编程输出数据速率,可用于以不同的输出数据速率来转换不同幅度的信号。应用通常都有一定的吞吐量要求,也就是说需要在一定的时间内读取一定数量的通道。具体要实现的吞吐量取决于要读取的通道数量和ADC转换每个通道所需的时间。本应用笔记中涉及的ADC具有如下不同的工作模式:Sinc4滤波器或Sinc3滤波器斩波使能/禁用零延迟单次转换模式自动通道时序控制每种工作模式允许的输出数据速率和/或建立时间(即通道改变后产生第一个转换所需的时间)各不相同。因此,吞吐量还取决于工作模式。•••••AN-1084应用笔记OneTechnologyWayP.O.Box9106Norwood,MA02062-9106,U.S.A.Tel:781.329.4700Fax:781.461.3113www.analog.com通道切换:AD7190、AD7192、AD7193、AD7194、AD7195作者:MaryMcCarthy简介应用通常都有一定的吞吐量要求,也就是说需要在一定的Σ-Δ型ADC一般指定输出数据速率。输出数据速率是指当时间内读取一定数量的通道。具体要实现的吞吐量取决于一个信号通道被选中且ADC连续进行转换时的转换速率。要读取的通道数量和ADC转换每个通道所需的时间。本应在数据采集系统等多通道应用中,会读取多个通道的转换用笔记中涉及的ADC具有如下不同的工作模式:值,也就是说,每个通道被轮流选中并进行转换。在这样……