STM32 ADC详解

68 篇文章 122 订阅
订阅专栏

目录

01、ADC简介

02、STM32的ADC外设

03、STM32ADC框图讲解

04、触发源

05、转换周期

06、数据寄存器

07、中断

08、电压转换

09、电路图设计

10、代码设计


01、ADC简介

ADC是Analog-to-DigitalConverter的缩写。指模/数转换器或者模拟/数字转换器。是指将连续变量的模拟信号转换为离散的数字信号的器件。典型的模拟数字转换器将模拟信号转换为表示一定比例电压值的数字信号。

从STM32F207的数据手册中下图看到,STM32F207VC有3个精度为12bit的ADC控制器,有16个外部通道,而144脚的STM32F207Zx和176脚的STM32F207Ix因为带PF脚,所以多8个通道,为24个外部通道。各通道的A/D转换可以单次、连续、扫描或间断执行,ADC转换的结果可以左对齐或右对齐储存在16位数据寄存器中。

02、STM32的ADC外设

上面说到,STM32F207有3个12bit的ADC控制器,下文将以ADC3的通道10讲解。

首先我们确认下ADC外设所在的地址总线,从STM32F207数据手册中下图看到,ADC属于APB2总线下,APB2时钟频率是60MHz。具体STM32如果通过外部25M晶振得到的60MHz的APB2,请看《 STM32F207时钟系统解析》。

对应GPIO,我们从STM32F207数据手册中看到,我们可以使用PC0作为ADC3的通道10。

这里需要说明的是,之前的文章使用其他外设时,比如《 STM32PWM输出》中,寻找对应的管脚时,我们都是从STM32F207数据手册的Alternatefunctionmapping表中寻找,这是因为ADC对应的管脚使用的是Additionalfunctions,PWM对应的管脚使用的是Alternatefunctions。

区别是:

Additionalfunctions:附加,辅助功能,引脚被连接到其他模块使用,使用时直接普通配置即可,例如ADC的采用输入通道,配置为模拟输入。

Alternate functions:复用功能,即将IO口用作普通输入输出以外的功能,例如串口输入输出,使用时需要配置复用模式。

在之前的文章《 STM32GPIO详解》中有如下介绍。

STM32标准外设库中有如下代码

typedef enum
{   
    GPIO_Mode_IN   = 0x00, /*!< GPIO Input Mode */  
    GPIO_Mode_OUT  = 0x01, /*!< GPIO Output Mode */  
    GPIO_Mode_AF   = 0x02, /*!< GPIO Alternate function Mode */  
    GPIO_Mode_AN   = 0x03  /*!< GPIO Analog Mode */
}GPIOMode_TypeDef;

其中GPIO_Mode_AF对应的就是Alternate functions:复用功能,GPIO_Mode_AN对应的就是Additional functions:附加,辅助功能。

03、STM32ADC框图讲解

下图是STM32ADC的结构框图,我们将其划分为7个部分进行讲解。

1、输入电压范围

ADC所能测量的电压范围就是VREF-≤ VIN ≤ VREF+,把VSSA 和VREF-接地,把VREF+和VDDA 接3V3,得到ADC的输入电压范围为:0~3.3V。

2、输入通道

ADC的信号时通过输入通道进入单片机内部的,单片机通过ADC模块将模拟信号转换为数字信号。上图标记②的部分显示了外部的16个通道,连接的GPIO,对应的关系如上面讲解的,需要在STM32F207数据手册的STM32F20xpin and ball definitions表格中寻找。实际上STM32还有内部通道,ADC1的通道 16连接到了芯片内部的温度传感器,Vrefint 连接到了通道17。ADC2的模拟通道 16和 17连接到了内部的VSS。

3、转换通道

外部的16个通道在转换时又分为规则通道和注入通道,其中规则通道最多有16路,注入通道最多有4路(注入通道貌似使用不多),下面简单介绍一下俩种通道:

规则通道

规则通道顾名思义就是,最平常的通道、也是最常用的通道,平时的ADC转换都是用规则通道实的。规则通道和它的转换顺序在ADC_SQRx寄存器中选择,规则组转换的总数应写入ADC_SQR1寄存器的L[3:0]中。

注入通道

注入通道是相对于规则通道的,注入通道可以在规则通道转换时,强行插入转换,相当于一个“中断通道”吧。当有注入通道需要转换时,规则通道的转换会停止,优先执行注入通道的转换,当注入通道的转换执行完毕后,再回到之前规则通道进行转换。最多4个通道,注入组和它的转换顺序在ADC_JSQR寄存器中选择。注入组里转化的总数应写入ADC_JSQR寄存器的L[1:0]中。

一个ADC控制器有多个通道,这就涉及使用多个通道进行转换就涉及到一个先后顺序的问题了,毕竟规则转换通道只有一个数据寄存器。多个通道的使用顺序分为俩种情况:规则通道的转换顺序和注入通道的转换顺序。

规则通道转换顺序

规则通道中的转换顺序由三个寄存器控制:SQR1、SQR2、SQR3,它们都是32位寄存器。SQR寄存器控制着转换通道的数目和转换顺序,只要在对应的寄存器位SQx中写入相应的通道,这个通道就是第x个转换,通过SQR1寄存器就能了解其转换顺序在寄存器上的实现了。

注入通道转换顺序

和规则通道转换顺序的控制一样,注入通道的转换也是通过注入寄存器来控制,只不过只有一个JSQR寄存器来控制,控制关系如下:

需要注意的是,只有当JL=4的时候,注入通道的转换顺序才会按照JSQ1、JSQ2、JSQ3、JSQ4的顺序执行。当JL<4时,注入通道的转换顺序恰恰相反,也就是执行顺序为:JSQ4、JSQ3、JSQ2、JSQ1。

配置转换顺序的函数

void ADC_RegularChannelConfig(ADC_TypeDef* ADCx, uint8_t ADC_Channel,uint8_t Rank, uint8_t ADC_SampleTime)

04、触发源

ADC转换的输入、通道、转换顺序都已经说明了,但ADC转换是怎么触发的呢?就像通信协议一样,都要规定一个起始信号才能传输信息,ADC也需要一个触发信号来实行模/数转换。

其一就是通过直接配置寄存器触发,通过配置控制寄存器CR2的ADON位,写1时开始转换,写0时停止转换。在程序运行过程中只要调用库函数,将CR2寄存器的ADON位置1就可以进行转换,比较好理解。

另外,还可以通过内部定时器或者外部IO触发转换,也就是说可以利用内部时钟让ADC进行周期性的转换,也可以利用外部IO使ADC在需要时转换,具体的触发由控制寄存器CR2决定。

05、转换周期

可独立设置各通道采样时间

ADC会在数个ADCCLK周期内对输入电压进行采样,可使用ADC_SMPR1和ADC_SMPR2

寄存器中的SMP[2:0]位修改周期数。每个通道均可以使用不同的采样时间进行采样。

总转换时间的计算公式如下:

    Tconv=采样时间+12个周期

示例:

    ADCCLK = 30 MHz且采样时间=3个周期时:

    Tconv= 3+12=15个周期=0.5us (APB2为60MHz时)

最小采样时间0.42us(ADC时钟=36MHz,采样周期为3周期下得到)。

06、数据寄存器

转换完成后的数据就存放在数据寄存器中,但数据的存放也分为规则通道转换数据和注入通道转换数据的。

规则数据寄存器

规则数据寄存器负责存放规则通道转换的数据,通过32位寄存器ADC_DR来存放。

注入数据寄存器

注入通道转换的数据寄存器有4个,由于注入通道最多有4个,所以注入通道转换的数据都有固定的存放位置,不会跟规则寄存器那样产生数据覆盖的问题。 ADC_JDRx是 32位的,低 16位有效,高 16位保留,数据同样分为左对齐和右对齐,具体是以哪一种方式存放,由ADC_CR2的 11 位ALIGN 设置。

07、中断

可以产生4种中断

DMA溢出中断

当配置了DMA,且DMA溢出时产生中断

规则通道转换完成中断

规则通道数据转换完成之后,可以产生一个中断,可以在中断函数中读取规则数据寄存器的值。这也是单通道时读取数据的一种方法。

注入通道转换完成中断

注入通道数据转换完成之后,可以产生一个中断,并且也可以在中断中读取注入数据寄存器的值,达到读取数据的作用。

模拟看门狗事件

当输入的模拟量(电压)不再阈值范围内就会产生看门狗事件,就是用来监视输入的模拟量是否常。

08、电压转换

转换后的数据是一个12位的二进制数,我们需要把这个二进制数代表的模拟量(电压)用数字表示出来。比如测量的电压范围是0~3.3V,转换后的二进制数是x,因为12位ADC在转换时将电压的范围大小(也就是3.3)分为4096(2^12)份,所以转换后的二进制数x代表的真实电压的计算方法就是:

y=3.3* x / 4096

09、电路图设计

电路图很简单,可以在ADC引脚上输入不同的电压,也可以直接方便的使用滑动变阻器实现不同的电压变化。

10、代码设计

ADC外设配置的结构体

typedef struct
{
  uint32_t ADC_Resolution;                /*!< Configures the ADC resolution dual mode. 
                                               This parameter can be a value of @ref ADC_resolution */                                   
  FunctionalState ADC_ScanConvMode;       /*!< Specifies whether the conversion 
                                               is performed in Scan (multichannels) 
                                               or Single (one channel) mode.
                                               This parameter can be set to ENABLE or DISABLE */ 
  FunctionalState ADC_ContinuousConvMode; /*!< Specifies whether the conversion 
                                               is performed in Continuous or Single mode.
                                               This parameter can be set to ENABLE or DISABLE. */
  uint32_t ADC_ExternalTrigConvEdge;      /*!< Select the external trigger edge and
                                               enable the trigger of a regular group. 
                                               This parameter can be a value of 
                                               @ref ADC_external_trigger_edge_for_regular_channels_conversion */
  uint32_t ADC_ExternalTrigConv;          /*!< Select the external event used to trigger 
                                               the start of conversion of a regular group.
                                               This parameter can be a value of 
                                               @ref ADC_extrenal_trigger_sources_for_regular_channels_conversion */
  uint32_t ADC_DataAlign;                 /*!< Specifies whether the ADC data  alignment
                                               is left or right. This parameter can be 
                                               a value of @ref ADC_data_align */
  uint8_t  ADC_NbrOfConversion;           /*!< Specifies the number of ADC conversions
                                               that will be done using the sequencer for
                                               regular channel group.
                                               This parameter must range from 1 to 16. */
}ADC_InitTypeDef;

ADC_Resolution:ADC 工作模式选择,ADC分辨率

ADC_ScanConvMode:ADC 扫描(多通道)或者单次(单通道)模式选择

ADC_ContinuousConvMode:ADC 单次转换或者连续转换选择

ADC_ExternalTrigConvEdge:ADC 外部触发极性配置

ADC_ExternalTrigConv:ADC 转换触发信号选择

ADC_DataAlign:ADC 数据寄存器对齐格式

ADC_NbrOfConversion:ADC转换通道数目

typedef struct
{
    uint32_t ADC_Mode;//多重ADC模式选择
    uint32_t ADC_Prescaler;  //ADC预分频                             
    uint32_t ADC_DMAAccessMode;   //DMA访问模式       
    uint32_t ADC_TwoSamplingDelay; //2个采样阶段之间的延迟      
}ADC_CommonInitTypeDef;

ADC_CommonInitTypeDef用来配置ADC_CCR寄存器的相关参数

ADC外设和DMA配置代码

/**
  * @brief  ADC3 channel10 with DMA configuration
  * @param  None
  * @retval None
  */
void ADC3_CH10_DMA_Config(void)
{
  ADC_InitTypeDef       ADC_InitStructure;
  ADC_CommonInitTypeDef ADC_CommonInitStructure;
  DMA_InitTypeDef       DMA_InitStructure;
  GPIO_InitTypeDef      GPIO_InitStructure;

  /* Enable ADC3, DMA2 and GPIO clocks ****************************************/
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2 | RCC_AHB1Periph_GPIOC, ENABLE);
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC3, ENABLE);

  /* DMA2 Stream0 channel2 configuration **************************************/
  DMA_InitStructure.DMA_Channel = DMA_Channel_2;  
  DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)ADC3_DR_ADDRESS;
  DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)&ADC3ConvertedValue;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
  DMA_InitStructure.DMA_BufferSize = 1;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
  DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
  DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
  DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
  DMA_InitStructure.DMA_Priority = DMA_Priority_High;
  DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Disable;         
  DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_HalfFull;
  DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
  DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;
  DMA_Init(DMA2_Stream0, &DMA_InitStructure);
  DMA_Cmd(DMA2_Stream0, ENABLE);

  /* Configure ADC3 Channel10 pin as analog input ******************************/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  /* ADC Common Init **********************************************************/
  ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
  ADC_CommonInitStructure.ADC_Prescaler = ADC_Prescaler_Div2;
  ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
  ADC_CommonInitStructure.ADC_TwoSamplingDelay = ADC_TwoSamplingDelay_5Cycles;
  ADC_CommonInit(&ADC_CommonInitStructure);

  /* ADC3 Init ****************************************************************/
  ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
  ADC_InitStructure.ADC_ScanConvMode = DISABLE;
  ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;
  ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_None;
  ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_CC1;
  ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
  ADC_InitStructure.ADC_NbrOfConversion = 1;
  ADC_Init(ADC3, &ADC_InitStructure);

  /* ADC3 regular channel7 configuration *************************************/
  ADC_RegularChannelConfig(ADC3, ADC_Channel_10, 1, ADC_SampleTime_3Cycles);

 /* Enable DMA request after last transfer (Single-ADC mode) */
  ADC_DMARequestAfterLastTransferCmd(ADC3, ENABLE);

  /* Enable ADC3 DMA */
  ADC_DMACmd(ADC3, ENABLE);

  /* Enable ADC3 */
  ADC_Cmd(ADC3, ENABLE);
}

代码下载验证测试

硬件和软件开源地址:

https://github.com/strongercjd/STM32F207VCT6

点击查看本文所在的专辑, STM32F207教程

关注公众号,第一时间收到文章更新。评论区不能及时看到,需要交流可以到公众号沟通

STM32F10xxx参考手册
10-17
目录 1 文的缩写 24 1.1 寄存器描述表使用的缩写列表 24 1.2 术语表 24 1.3 可用的外设 24 2 存储器和总线构架 25 2.1 系统构架 25 2.2 存储器组织 27 2.3 存储器映像 28 2.3.1 嵌入式SRAM 29 2.3.2 位段 29 2.3.3 嵌入式闪存 30 2.4 启动配置 33 3 CRC计算单元(CRC) 34 3.1 CRC简介 34 3.2 CRC主要特性 34 3.3 CRC功能描述 34 3.4 CRC寄存器 35 3.4.1 数据寄存器(CRC_DR) 35 3.4.2 独立数据寄存器(CRC_IDR) 35 3.4.3 控制寄存器(CRC_CR) 36 3.4.4 CRC寄存器映像 36 4 电源控制(PWR) 37 4.1 电源 37 4.1.1 独立的A/D转换器供电和参考电压 37 4.1.2 电池备份区域 38 4.1.3 电压调节器 38 4.2 电源管理器 38 4.2.1 上电复位(POR)和掉电复位(PDR) 38 4.2.2 可编程电压监测器(PVD) 39 4.3 低功耗模式 40 4.3.1 降低系统时钟 40 4.3.2 外部时钟的控制 40 4.3.3 睡眠模式 40 4.3.4 停止模式 41 4.3.5 待机模式 42 4.3.6 低功耗模式下的自动唤醒(AWU) 43 4.4 电源控制寄存器 44 4.4.1 电源控制寄存器(PWR_CR) 44 4.4.2 电源控制/状态寄存器(PWR_CSR) 45 4.4.3 PWR寄存器地址映像 46 5 备份寄存器(BKP) 47 5.1 BKP简介 47 5.2 BKP特性 47 5.3 BKP功能描述 47 5.3.1 侵入检测 47 5.3.2 RTC校准 48 5.4 BKP寄存器描述 48 5.4.1 备份数据寄存器x(BKP_DRx) (x = 1 … 10) 48 5.4.2 RTC时钟校准寄存器(BKP_RTCCR) 48 5.4.3 备份控制寄存器(BKP_CR) 49 5.4.4 备份控制/状态寄存器(BKP_CSR) 49 5.4.5 BKP寄存器映像 51 6 小容量、容量和大容量产品的复位和时钟控制(RCC) 54 6.1 复位 54 6.1.1 系统复位 54 6.1.2 电源复位 54 6.1.3 备份域复位 55 6.2 时钟 55 6.2.1 HSE时钟 57 6.2.2 HSI时钟 57 6.2.3 PLL 58 6.2.4 LSE时钟 58 6.2.5 LSI时钟 58 6.2.6 系统时钟(SYSCLK)选择 59 6.2.7 时钟安全系统(CSS) 59 6.2.8 RTC时钟 59 6.2.9 看门狗时钟 59 6.2.10 时钟输出 59 6.3 RCC寄存器描述 60 6.3.1 时钟控制寄存器(RCC_CR) 60 6.3.2 时钟配置寄存器(RCC_CFGR) 61 6.3.3 时钟断寄存器 (RCC_CIR) 63 6.3.4 APB2外设复位寄存器 (RCC_APB2RSTR) 65 6.3.5 APB1外设复位寄存器 (RCC_APB1RSTR) 67 6.3.6 AHB外设时钟使能寄存器 (RCC_AHBENR) 69 6.3.7 APB2外设时钟使能寄存器(RCC_APB2ENR) 70 6.3.8 APB1外设时钟使能寄存器(RCC_APB1ENR) 71 6.3.9 备份域控制寄存器 (RCC_BDCR) 74 6.3.10 控制/状态寄存器 (RCC_CSR) 75 6.3.11 RCC寄存器地址映像 77 7 互联型产品的复位和时钟控制(RCC) 78 7.1 复位 78 7.1.1 系统复位 78 7.1.2 电源复位 78 7.1.3 备份域复位 79 7.2 时钟 79 7.2.1 HSE时钟 81 7.2.2 HSI时钟 82 7.2.3 PLL 82 7.2.4 LSE时钟 82 7.2.5 LSI时钟 83 7.2.6 系统时钟(SYSCLK)选择 83 7.2.7 时钟安全系统(CSS) 83 7.2.8 RTC时钟 83 7.2.9 看门狗时钟 84 7.2.10 时钟输出 84 7.3 RCC寄存器 85 7.3.1 时钟控制寄存器(RCC_CR) 85 7.3.2 时钟配置寄存器(RCC_CFGR) 86 7.3.3 时钟断寄存器(RCC_CIR) 88 7.3.4 APB2外设复位寄存器(RCC_APB2RSTR) 91 7.3.5 APB1外设复位寄存器(RCC_APB1RSTR) 92 7.3.6 AHB外设时钟使能寄存器(RCC_AHBENR) 94 7.3.7 APB2外设时钟使能寄存器(RCC_APB2ENR) 95 7.3.8 APB1外设时钟使能寄存器(RCC_APB1ENR) 97 7.3.9 备份域控制寄存器(RCC_BDCR) 99 7.3.10 控制/状态寄存器(RCC_CSR) 100 7.3.11 AHB外设时钟复位寄存器(RCC_AHBRSTR) 101 7.3.12 时钟配置寄存器2(RCC_CFGR2) 101 7.3.13 RCC寄存器地址映像 103 8 通用和复用功能I/O(GPIO和AFIO) 105 8.1 GPIO功能描述 105 8.1.1 通用I/O(GPIO) 106 8.1.2 单独的位设置或位清除 107 8.1.3 外部断/唤醒线 107 8.1.4 复用功能(AF) 107 8.1.5 软件重新映射I/O复用功能 107 8.1.6 GPIO锁定机制 107 8.1.7 输入配置 107 8.1.8 输出配置 108 8.1.9 复用功能配置 109 8.1.10 模拟输入配置 109 8.1.11 外设的GPIO配置 110 8.2 GPIO寄存器描述 113 8.2.1 端口配置低寄存器(GPIOx_CRL) (x=A..E) 113 8.2.2 端口配置高寄存器(GPIOx_CRH) (x=A..E) 114 8.2.3 端口输入数据寄存器(GPIOx_IDR) (x=A..E) 114 8.2.4 端口输出数据寄存器(GPIOx_ODR) (x=A..E) 115 8.2.5 端口位设置/清除寄存器(GPIOx_BSRR) (x=A..E) 115 8.2.6 端口位清除寄存器(GPIOx_BRR) (x=A..E) 115 8.2.7 端口配置锁定寄存器(GPIOx_LCKR) (x=A..E) 116 8.3 复用功能I/O和调试配置(AFIO) 116 8.3.1 把OSC32_IN/OSC32_OUT作为GPIO 端口PC14/PC15 116 8.3.2 把OSC_IN/OSC_OUT引脚作为GPIO端口PD0/PD1 117 8.3.3 CAN1复用功能重映射 117 8.3.4 CAN2复用功能重映射 117 8.3.5 JTAG/SWD复用功能重映射 117 8.3.6 ADC复用功能重映射 118 8.3.7 定时器复用功能重映射 118 8.3.8 USART复用功能重映射 119 8.3.9 I2C1复用功能重映射 120 8.3.10 SPI 1复用功能重映射 120 8.3.11 SPI3复用功能重映射 120 8.3.12 以太网复用功能重映射 121 8.4 AFIO寄存器描述 121 8.4.1 事件控制寄存器(AFIO_EVCR) 121 8.4.2 复用重映射和调试I/O配置寄存器(AFIO_MAPR) 121 8.4.3 外部断配置寄存器1(AFIO_EXTICR1) 126 8.4.4 外部断配置寄存器2(AFIO_EXTICR2) 127 8.4.5 外部断配置寄存器3(AFIO_EXTICR3) 127 8.4.6 外部断配置寄存器4(AFIO_EXTICR4) 128 8.5 GPIO 和AFIO寄存器地址映象 129 9 断和事件 130 9.1 嵌套向量断控制器 130 9.1.1 系统嘀嗒(SysTick)校准值寄存器 130 9.1.2 断和异常向量 130 9.2 外部断/事件控制器(EXTI) 134 9.2.1 主要特性 134 9.2.2 框图 135 9.2.3 唤醒事件管理 135 9.2.4 功能说明 135 9.2.5 外部断/事件线路映像 137 9.3 EXTI 寄存器描述 138 9.3.1 断屏蔽寄存器(EXTI_IMR) 138 9.3.2 事件屏蔽寄存器(EXTI_EMR) 138 9.3.3 上升沿触发选择寄存器(EXTI_RTSR) 139 9.3.4 下降沿触发选择寄存器(EXTI_FTSR) 139 9.3.5 软件断事件寄存器(EXTI_SWIER) 140 9.3.6 挂起寄存器(EXTI_PR) 140 9.3.7 外部断/事件寄存器映像 141 10 DMA控制器(DMA) 142 10.1 DMA简介 142 10.2 DMA主要特性 142 10.3 功能描述 143 10.3.1 DMA处理 143 10.3.2 仲裁器 144 10.3.3 DMA 通道 144 10.3.4 可编程的数据传输宽度、对齐方式和数据大小端 145 10.3.5 错误管理 146 10.3.6 断 146 10.3.7 DMA请求映像 147 10.4 DMA寄存器 149 10.4.1 DMA断状态寄存器(DMA_ISR) 149 10.4.2 DMA断标志清除寄存器(DMA_IFCR) 150 10.4.3 DMA通道x配置寄存器(DMA_CCRx)(x = 1…7) 150 10.4.4 DMA通道x传输数量寄存器(DMA_CNDTRx)(x = 1…7) 152 10.4.5 DMA通道x外设地址寄存器(DMA_CPARx)(x = 1…7) 152 10.4.6 DMA通道x存储器地址寄存器(DMA_CMARx)(x = 1…7) 152 10.4.7 DMA寄存器映像 153 11 模拟/数字转换(ADC) 155 11.1 ADC介绍 155 11.2 ADC主要特征 155 11.3 ADC功能描述 156 11.3.1 ADC开关控制 157 11.3.2 ADC时钟 157 11.3.3 通道选择 157 11.3.4 单次转换模式 157 11.3.5 连续转换模式 158 11.3.6 时序图 158 11.3.7 模拟看门狗 158 11.3.8 扫描模式 159 11.3.9 注入通道管理 159 11.3.10 间断模式 160 11.4 校准 161 11.5 数据对齐 161 11.6 可编程的通道采样时间 161 11.7 外部触发转换 162 11.8 DMA请求 163 11.9 双ADC模式 163 11.9.1 同步注入模式 164 11.9.2 同步规则模式 165 11.9.3 快速交叉模式 165 11.9.4 慢速交叉模式 166 11.9.5 交替触发模式 166 11.9.6 独立模式 167 11.9.7 混合的规则/注入同步模式 167 11.9.8 混合的同步规则+交替触发模式 167 11.9.9 混合同步注入 + 交叉模式 168 11.10 温度传感器 168 11.11 ADC断 169 11.12 ADC寄存器 170 11.12.1 ADC状态寄存器(ADC_SR) 170 11.12.2 ADC控制寄存器1(ADC_CR1) 171 11.12.3 ADC控制寄存器2(ADC_CR2) 173 11.12.4 ADC采样时间寄存器1(ADC_SMPR1) 175 11.12.5 ADC采样时间寄存器2(ADC_SMPR2) 175 11.12.6 ADC注入通道数据偏移寄存器x (ADC_JOFRx)(x=1..4) 176 11.12.7 ADC看门狗高阀值寄存器(ADC_HTR) 176 11.12.8 ADC看门狗低阀值寄存器(ADC_LRT) 176 11.12.9 ADC规则序列寄存器1(ADC_SQR1) 177 11.12.10 ADC规则序列寄存器2(ADC_SQR2) 177 11.12.11 ADC规则序列寄存器3(ADC_SQR3) 178 11.12.12 ADC注入序列寄存器(ADC_JSQR) 178 11.12.13 ADC 注入数据寄存器x (ADC_JDRx) (x= 1..4) 179 11.12.14 ADC规则数据寄存器(ADC_DR) 179 11.12.15 ADC寄存器地址映像 180 12 数字/模拟转换(DAC) 182 12.1 DAC简介 182 12.2 DAC主要特征 182 12.3 DAC功能描述 183 12.3.1 使能DAC通道 183 12.3.2 使能DAC输出缓存 184 12.3.3 DAC数据格式 184 12.3.4 DAC转换 185 12.3.5 DAC输出电压 185 12.3.6 选择DAC触发 185 12.3.7 DMA请求 186 12.3.8 噪声生成 186 12.3.9 三角波生成 187 12.4 双DAC通道转换 187 12.4.1 不使用波形发生器的独立触发 187 12.4.2 使用相同LFSR的独立触发 188 12.4.3 使用不同LFSR的独立触发 188 12.4.4 产生相同三角波的独立触发 188 12.4.5 产生不同三角波的独立触发 188 12.4.6 同时软件启动 189 12.4.7 不使用波形发生器的同时触发 189 12.4.8 使用相同LFSR的同时触发 189 12.4.9 使用不同LFSR的同时触发 189 12.4.10 使用相同三角波发生器的同时触发 189 12.4.11 使用不同三角波发生器的同时触发 190 12.5 DAC寄存器 191 12.5.1 DAC控制寄存器(DAC_CR) 191 12.5.2 DAC软件触发寄存器(DAC_SWTRIGR) 193 12.5.3 DAC通道1的12位右对齐数据保持寄存器(DAC_DHR12R1) 194 12.5.4 DAC通道1的12位左对齐数据保持寄存器(DAC_DHR12L1) 194 12.5.5 DAC通道1的8位右对齐数据保持寄存器(DAC_DHR8R1) 194 12.5.6 DAC通道2的12位右对齐数据保持寄存器(DAC_DHR12R2) 195 12.5.7 DAC通道2的12位左对齐数据保持寄存器(DAC_DHR12L2) 195 12.5.8 DAC通道2的8位右对齐数据保持寄存器(DAC_DHR8R2) 195 12.5.9 双DAC的12位右对齐数据保持寄存器(DAC_DHR12RD) 196 12.5.10 双DAC的12位左对齐数据保持寄存器(DAC_DHR12LD) 196 12.5.11 双DAC的8位右对齐数据保持寄存器(DAC_DHR8RD) 196 12.5.12 DAC通道1数据输出寄存器(DAC_DOR1) 197 12.5.13 DAC通道2数据输出寄存器(DAC_DOR2) 197 12.5.14 DAC寄存器映像 198 13 高级控制定时器(TIM1和TIM8) 199 13.1 TIM1和TIM8简介 199 13.2 TIM1和TIM8主要特性 199 13.3 TIM1和TIM8功能描述 200 13.3.1 时基单元 200 13.3.2 计数器模式 202 13.3.3 重复计数器 209 13.3.4 时钟选择 210 13.3.5 捕获/比较通道 213 13.3.6 输入捕获模式 215 13.3.7 PWM输入模式 216 13.3.8 强置输出模式 216 13.3.9 输出比较模式 217 13.3.10 PWM模式 218 13.3.11 互补输出和死区插入 220 13.3.12 使用刹车功能 221 13.3.13 在外部事件时清除OCxREF信号 223 13.3.14 产生六步PWM输出 223 13.3.15 单脉冲模式 224 13.3.16 编码器接口模式 225 13.3.17 定时器输入异或功能 227 13.3.18 与霍尔传感器的接口 227 13.3.19 TIMx定时器和外部触发的同步 229 13.3.20 定时器同步 232 13.3.21 调试模式 232 13.4 TIM1和TIM8寄存器描述 233 13.4.1 TIM1和TIM8控制寄存器1(TIMx_CR1) 233 13.4.2 TIM1和TIM8控制寄存器2(TIMx_CR2) 234 13.4.3 TIM1和TIM8从模式控制寄存器(TIMx_SMCR) 235 13.4.4 TIM1和TIM8 DMA/断使能寄存器(TIMx_DIER) 237 13.4.5 TIM1和TIM8状态寄存器(TIMx_SR) 238 13.4.6 TIM1和TIM8事件产生寄存器(TIMx_EGR) 239 13.4.7 TIM1和TIM8捕获/比较模式寄存器1(TIMx_CCMR1) 240 13.4.8 TIM1和TIM8捕获/比较模式寄存器2(TIMx_CCMR2) 242 13.4.9 TIM1和TIM8捕获/比较使能寄存器(TIMx_CCER) 244 13.4.10 TIM1和TIM8计数器(TIMx_CNT) 246 13.4.11 TIM1和TIM8预分频器(TIMx_PSC) 246 13.4.12 TIM1和TIM8自动重装载寄存器(TIMx_ARR) 246 13.4.13 TIM1和TIM8重复计数寄存器(TIMx_RCR) 246 13.4.14 TIM1和TIM8捕获/比较寄存器1(TIMx_CCR1) 247 13.4.15 TIM1和TIM8捕获/比较寄存器2(TIMx_CCR2) 247 13.4.16 TIM1和TIM8捕获/比较寄存器3(TIMx_CCR3) 247 13.4.17 TIM1和TIM8捕获/比较寄存器(TIMx_CCR4) 248 13.4.18 TIM1和TIM8刹车和死区寄存器(TIMx_BDTR) 248 13.4.19 TIM1和TIM8 DMA控制寄存器(TIMx_DCR) 249 13.4.20 TIM1和TIM8连续模式的DMA地址(TIMx_DMAR) 250 13.4.21 TIM1和TIM8寄存器图 251 14 通用定时器(TIMx) 253 14.1 TIMx简介 253 14.2 TIMx主要功能 253 14.3 TIMx功能描述 254 14.3.1 时基单元 254 14.3.2 计数器模式 255 14.3.3 时钟选择 263 14.3.4 捕获/比较通道 265 14.3.5 输入捕获模式 267 14.3.6 PWM输入模式 267 14.3.7 强置输出模式 268 14.3.8 输出比较模式 268 14.3.9 PWM 模式 269 14.3.10 单脉冲模式 271 14.3.11 在外部事件时清除OCxREF信号 273 14.3.12 编码器接口模式 273 14.3.13 定时器输入异或功能 275 14.3.14 定时器和外部触发的同步 275 14.3.15 定时器同步 277 14.3.16 调试模式 281 14.4 TIMx寄存器描述 282 14.4.1 控制寄存器1(TIMx_CR1) 282 14.4.2 控制寄存器2(TIMx_CR2) 283 14.4.3 从模式控制寄存器(TIMx_SMCR) 284 14.4.4 DMA/断使能寄存器(TIMx_DIER) 285 14.4.5 状态寄存器(TIMx_SR) 286 14.4.6 事件产生寄存器(TIMx_EGR) 287 14.4.7 捕获/比较模式寄存器1(TIMx_CCMR1) 288 14.4.8 捕获/比较模式寄存器2(TIMx_CCMR2) 290 14.4.9 捕获/比较使能寄存器(TIMx_CCER) 292 14.4.10 计数器(TIMx_CNT) 293 14.4.11 预分频器(TIMx_PSC) 293 14.4.12 自动重装载寄存器(TIMx_ARR) 293 14.4.13 捕获/比较寄存器1(TIMx_CCR1) 293 14.4.14 捕获/比较寄存器2(TIMx_CCR2) 294 14.4.15 捕获/比较寄存器3(TIMx_CCR3) 294 14.4.16 捕获/比较寄存器4(TIMx_CCR4) 294 14.4.17 DMA控制寄存器(TIMx_DCR) 295 14.4.18 连续模式的DMA地址(TIMx_DMAR) 295 14.4.19 TIMx寄存器图 296 15 基本定时器(TIM6和TIM7) 298 15.1 TIM6和TIM7简介 298 15.2 TIM6和TIM7的主要特性 298 15.3 TIM6和TIM7的功能 299 15.3.1 时基单元 299 15.3.2 计数模式 300 15.3.3 时钟源 302 15.3.4 调试模式 303 15.4 TIM6和TIM7寄存器 303 15.4.1 TIM6和TIM7控制寄存器1(TIMx_CR1) 303 15.4.2 TIM6和TIM7控制寄存器2(TIMx_CR2) 304 15.4.3 TIM6和TIM7 DMA/断使能寄存器(TIMx_DIER) 304 15.4.4 TIM6和TIM7状态寄存器(TIMx_SR) 305 15.4.5 TIM6和TIM7事件产生寄存器(TIMx_EGR) 305 15.4.6 TIM6和TIM7计数器(TIMx_CNT) 305 15.4.7 TIM6和TIM7预分频器(TIMx_PSC) 306 15.4.8 TIM6和TIM7自动重装载寄存器(TIMx_ARR) 306 15.4.9 TIM6和TIM7寄存器图 307 16 实时时钟(RTC) 308 16.1 RTC简介 308 16.2 主要特性 308 16.3 功能描述 308 16.3.1 概述 308 16.3.2 复位过程 309 16.3.3 读RTC寄存器 309 16.3.4 配置RTC寄存器 310 16.3.5 RTC标志的设置 310 16.4 RTC寄存器描述 311 16.4.1 RTC控制寄存器高位(RTC_CRH) 311 16.4.2 RTC控制寄存器低位(RTC_CRL) 311 16.4.3 RTC预分频装载寄存器(RTC_PRLH/RTC_PRLL) 312 16.4.4 RTC预分频器余数寄存器(RTC_DIVH / RTC_DIVL) 313 16.4.5 RTC计数器寄存器 (RTC_CNTH / RTC_CNTL) 313 16.4.6 RTC闹钟寄存器(RTC_ALRH/RTC_ALRL) 314 16.4.7 RTC寄存器映像 315 17 独立看门狗(IWDG) 316 17.1 简介 316 17.2 IWDG主要性能 316 17.3 IWDG功能描述 316 17.3.1 硬件看门狗 316 17.3.2 寄存器访问保护 316 17.3.3 调试模式 316 17.4 IWDG寄存器描述 317 17.4.1 键寄存器(IWDG_KR) 317 17.4.2 预分频寄存器(IWDG_PR) 318 17.4.3 重装载寄存器(IWDG_RLR) 318 17.4.4 状态寄存器(IWDG_SR) 319 17.4.5 IWDG寄存器映像 319 18 窗口看门狗(WWDG) 320 18.1 WWDG简介 320 18.2 WWDG主要特性 320 18.3 WWDG功能描述 320 18.4 如何编写看门狗超时程序 321 18.5 调试模式 322 18.6 寄存器描述 322 18.6.1 控制寄存器(WWDG_CR) 322 18.6.2 配置寄存器(WWDG_CFR) 322 18.6.3 状态寄存器(WWDG_SR) 323 18.6.4 WWDG寄存器映像 323 19 灵活的静态存储器控制器(FSMC) 324 19.1 FSMC功能描述 324 19.2 框图 324 19.3 AHB接口 325 19.3.1 支持的存储器和操作 325 19.4 外部设备地址映像 326 19.4.1 NOR和PSRAM地址映像 327 19.4.2 NAND和PC卡地址映像 327 19.5 NOR闪存和PSRAM控制器 328 19.5.1 外部存储器接口信号 329 19.5.2 支持的存储器及其操作 330 19.5.3 时序规则 330 19.5.4 NOR闪存和PSRAM控制器时序图 330 19.5.5 同步的成组读 343 19.5.6 NOR闪存和PSRAM控制器寄存器 347 19.6 NAND闪存和PC卡控制器 352 19.6.1 外部存储器接口信号 352 19.6.2 NAND闪存/PC卡支持的存储器及其操作 353 19.6.3 NAND闪存、ATA和PC卡时序图 353 19.6.4 NAND闪存操作 354 19.6.5 NAND闪存预等待功能 355 19.6.6 NAND闪存的纠错码ECC计算(NAND闪存) 356 19.6.7 NAND闪存和PC卡控制器寄存器 356 19.7 FSMC寄存器地址映象 362 20 SDIO接口(SDIO) 363 20.1 SDIO主要功能 363 20.2 SDIO总线拓扑 363 20.3 SDIO功能描述 366 20.3.1 SDIO适配器 367 20.3.2 SDIO AHB接口 374 20.4 卡功能描述 374 20.4.1 卡识别模式 374 20.4.2 卡复位 374 20.4.3 操作电压范围确认 375 20.4.4 卡识别过程 375 20.4.5 写数据块 376 20.4.6 读数据块 376 20.4.7 数据流操作,数据流写入和数据流读出(只适用于多媒体卡) 376 20.4.8 擦除:成组擦除和扇区擦除 377 20.4.9 宽总线选择和解除选择 378 20.4.10 保护管理 378 20.4.11 卡状态寄存器 380 20.4.12 SD状态寄存器 382 20.4.13 SD的I/O模式 385 20.4.14 命令与响应 385 20.5 响应格式 388 20.5.1 R1(普通响应命令) 388 20.5.2 R1b 388 20.5.3 R2(CID、CSD寄存器) 388 20.5.4 R3(OCR寄存器) 389 20.5.5 R4(快速I/O) 389 20.5.6 R4b 389 20.5.7 R5(断请求) 390 20.5.8 R6(断请求) 390 20.6 SDIO I/O卡特定的操作 390 20.6.1 使用SDIO_D2信号线的SDIO I/O读等待操作 390 20.6.2 使用停止SDIO_CK的SDIO读等待操作 391 20.6.3 SDIO暂停/恢复操作 391 20.6.4 SDIO断 391 20.7 CE-ATA特定操作 391 20.7.1 命令完成指示关闭 391 20.7.2 命令完成指示使能 391 20.7.3 CE-ATA断 392 20.7.4 止CMD61 392 20.8 硬件流控制 392 20.9 SDIO寄存器 392 20.9.1 SDIO电源控制寄存器(SDIO_POWER) 392 20.9.2 SDIO时钟控制寄存器(SDIO_CLKCR) 392 20.9.3 SDIO参数寄存器(SDIO_ARG) 393 20.9.4 SDIO命令寄存器(SDIO_CMD) 393 20.9.5 SDIO命令响应寄存器(SDIO_RESPCMD) 394 20.9.6 SDIO响应1..4寄存器(SDIO_RESPx) 395 20.9.7 SDIO数据定时器寄存器(SDIO_DTIMER) 395 20.9.8 SDIO数据长度寄存器(SDIO_DLEN) 395 20.9.9 SDIO数据控制寄存器(SDIO_DCTRL) 396 20.9.10 SDIO数据计数器寄存器(SDIO_DCOUNT) 397 20.9.11 SDIO状态寄存器(SDIO_STA) 397 20.9.12 SDIO清除断寄存器(SDIO_ICR) 398 20.9.13 SDIO断屏蔽寄存器(SDIO_MASK) 399 20.9.14 SDIO FIFO计数器寄存器(SDIO_FIFOCNT) 401 20.9.15 SDIO数据FIFO寄存器(SDIO_FIFO) 401 20.9.16 SDIO寄存器映像 402 21 USB全速设备接口(USB) 403 21.1 USB简介 403 21.2 USB主要特征 403 21.3 USB功能描述 404 21.3.1 USB功能模块描述 405 21.4 编程需要考虑的问题 406 21.4.1 通用USB设备编程 406 21.4.2 系统复位和上电复位 406 21.4.3 双缓冲端点 409 21.4.4 同步传输 410 21.4.5 挂起/恢复事件 411 21.5 USB寄存器描述 412 21.5.1 通用寄存器 412 21.5.2 端点寄存器 416 21.5.3 缓冲区描述表 419 21.5.4 USB寄存器映像 421 22 控制器局域网(bxCAN) 423 22.1 bxCAN简介 423 22.2 bxCAN主要特点 423 22.3 bxCAN总体描述 424 22.3.1 CAN 2.0B主动内核 424 22.3.2 控制、状态和配置寄存器 424 22.3.3 发送邮箱 424 22.3.4 接收过滤器 424 22.4 bxCAN工作模式 426 22.4.1 初始化模式 426 22.4.2 正常模式 426 22.4.3 睡眠模式(低功耗) 426 22.5 测试模式 427 22.5.1 静默模式 427 22.5.2 环回模式 427 22.5.3 环回静默模式 428 22.6 STM32F10xxx处于调试模式时 428 22.7 bxCAN功能描述 428 22.7.1 发送处理 428 22.7.2 时间触发通信模式 430 22.7.3 接收管理 430 22.7.4 标识符过滤 431 22.7.5 报文存储 434 22.7.6 出错管理 435 22.7.7 位时间特性 436 22.8 bxCAN断 438 22.9 CAN 寄存器描述 439 22.9.1 寄存器访问保护 439 22.9.2 CAN控制和状态寄存器 439 22.9.3 CAN邮箱寄存器 447 22.9.4 CAN过滤器寄存器 451 22.9.5 bxCAN寄存器列表 454 23 串行外设接口(SPI) 457 23.1 SPI简介 457 23.2 SPI和I2S主要特征 457 23.2.1 SPI特征 457 23.2.2 I2S功能 458 23.3 SPI功能描述 459 23.3.1 概述 459 23.3.2 配置SPI为从模式 462 23.3.3 配置SPI为主模式 462 23.3.4 配置SPI为单工通信 463 23.3.5 数据发送与接收过程 463 23.3.6 CRC计算 468 23.3.7 状态标志 469 23.3.8 关闭SPI 470 23.3.9 利用DMA的SPI通信 470 23.3.10 错误标志 472 23.3.11 SPI断 472 23.4 I2S功能描述 473 23.4.1 I2S功能描述 473 23.4.2 支持的音频协议 474 23.4.3 时钟发生器 479 23.4.4 I2S主模式 482 23.4.5 I2S从模式 483 23.4.6 状态标志位 484 23.4.7 错误标志位 485 23.4.8 I2S断 485 23.4.9 DMA功能 485 23.5 SPI和I2S寄存器描述 486 23.5.1 SPI控制寄存器1(SPI_CR1)(I2S模式下不使用) 486 23.5.2 SPI控制寄存器2(SPI_CR2) 487 23.5.3 SPI 状态寄存器(SPI_SR) 488 23.5.4 SPI 数据寄存器(SPI_DR) 489 23.5.5 SPI CRC多项式寄存器(SPI_CRCPR)(I2S模式下不使用) 489 23.5.6 SPI Rx CRC寄存器(SPI_RXCRCR)(I2S模式下不使用) 490 23.5.7 SPI Tx CRC寄存器(SPI_TXCRCR) 490 23.5.8 SPI_I2S配置寄存器(SPI_I2S_CFGR) 490 23.5.9 SPI_I2S预分频寄存器(SPI_I2SPR) 491 23.5.10 SPI 寄存器地址映象 492 24 I2C接口 493 24.1 I2C简介 493 24.2 I2C主要特点 493 24.3 I2C功能描述 494 24.3.1 模式选择 494 24.3.2 I2C从模式 495 24.3.3 I2C主模式 497 24.3.4 错误条件 499 24.3.5 SDA/SCL线控制 500 24.3.6 SMBus 501 24.3.7 DMA请求 502 24.3.8 包错误校验(PEC) 503 24.4 I2C断请求 504 24.5 I2C调试模式 505 24.6 I2C寄存器描述 505 24.6.1 控制寄存器1(I2C_CR1) 505 24.6.2 控制寄存器2(I2C_CR2) 507 24.6.3 自身地址寄存器1(I2C_OAR1) 508 24.6.4 自身地址寄存器2(I2C_OAR2) 509 24.6.5 数据寄存器(I2C_DR) 509 24.6.6 状态寄存器1(I2C_SR1) 510 24.6.7 状态寄存器2 (I2C_SR2) 512 24.6.8 时钟控制寄存器(I2C_CCR) 513 24.6.9 TRISE寄存器(I2C_TRISE) 514 24.6.10 I2C寄存器地址映象 515 25 通用同步异步收发器(USART) 516 25.1 USART介绍 516 25.2 USART主要特性 516 25.3 USART功能概述 517 25.3.1 USART 特性描述 518 25.3.2 发送器 519 25.3.3 接收器 521 25.3.4 分数波特率的产生 524 25.3.5 USART接收器容忍时钟的变化 525 25.3.6 多处理器通信 526 25.3.7 校验控制 527 25.3.8 LIN(局域互联网)模式 528 25.3.9 USART 同步模式 530 25.3.10 单线半双工通信 532 25.3.11 智能卡 532 25.3.12 IrDA SIR ENDEC 功能模块 533 25.3.13 利用DMA连续通信 535 25.3.14 硬件流控制 537 25.4 USART断请求 538 25.5 USART模式配置 539 25.6 USART寄存器描述 540 25.6.1 状态寄存器(USART_SR) 540 25.6.2 数据寄存器(USART_DR) 541 25.6.3 波特比率寄存器(USART_BRR) 542 25.6.4 控制寄存器1(USART_CR1) 542 25.6.5 控制寄存器2(USART_CR2) 544 25.6.6 控制寄存器3(USART_CR3) 545 25.6.7 保护时间和预分频寄存器(USART_GTPR) 546 25.6.8 USART寄存器地址映象 548 26 USB OTG全速(OTG_FS) 549 26.1 OTG模块介绍 549 26.2 OTG_FS主要功能 549 26.2.1 通用功能 549 26.2.2 主机模式功能 550 26.2.3 设备模式功能 550 26.3 OTG_FS功能描述 551 26.3.1 OTG全速控制器 551 26.3.2 全速OTG PHY(物理接口) 551 26.4 OTG双角色设备(DRD) 552 26.4.1 ID信号检测 552 26.4.2 HNP双角色设备 552 26.4.3 SRP双角色设备 553 26.5 USB设备模式 553 26.5.1 具备SRP功能的设备 553 26.5.2 设备状态 554 26.5.3 设备端点 554 26.6 USB主机 556 26.6.1 具备SRP功能的主机 556 26.6.2 USB主机状态 557 26.6.3 主机通道 558 26.6.4 主机调度器 558 26.7 SOF触发 560 26.7.1 主机SOF 560 26.7.2 设备SOF 560 26.8 供电选项 560 26.9 USB数据FIFO 562 26.10 设备模式下的FIFO结构 563 26.10.1 设备模式下的接收FIFO 563 26.10.2 设备模式下的发送FIFO 563 26.11 主机模式下的FIFO结构 564 26.11.1 主机模式下的接收FIFO 564 26.11.2 主机模式下的发送FIFO 564 26.12 USB系统性能 565 26.13 OTG_FS断 566 26.14 OTG_FS控制和状态寄存器 566 26.14.1 CSR存储器映像 567 26.14.2 OTG_FS全局寄存器 570 26.14.3 主机模式下的寄存器 585 26.14.4 设备模式下的寄存器 593 26.14.5 OTG_FS电源和时钟门控寄存器(OTG_FS_PCGCCTL) 608 26.14.6 OTG_FS寄存器映像 610 26.15 OTG_FS编程规则 617 26.15.1 控制器初始化 617 26.15.2 主机模式下的初始化 617 26.15.3 设备模式下的初始化 617 26.15.4 主机模式下的编程规则 618 26.15.5 设备模式下的编程规则 632 26.15.6 操作流程 633 26.15.7 最差情况下的响应时间 646 26.15.8 OTG编程规则 648 27 以太网(ETH):具有DMA控制器的介质访问控制(MAC) 652 27.1 以太网模块介绍 652 27.2 以太网模块主要功能 652 27.2.1 MAC控制器功能 652 27.2.2 DMA功能 653 27.2.3 PTP功能 654 27.3 以太网模块引脚和内部信号 654 27.4 以太网模块功能描述:SMI、MII和RMII 655 27.4.1 站点管理接口(SMI) 655 27.4.2 独立于介质的接口:MII 657 27.4.3 精简的独立于介质的接口:RMII 659 27.4.4 MII/RMII的选择 660 27.5 以太网模块功能描述:MAC 802.3 660 27.5.1 MAC 802.3帧格式 661 27.5.2 MAC帧的传输 663 27.5.3 MAC帧的接收 669 27.5.4 MAC断 673 27.5.5 MAC过滤 673 27.5.6 MAC自循环模式 675 27.5.7 MAC管理计数器:MMC 675 27.5.8 电源管理:PMT 676 27.5.9 精确时间协议(IEEE1588 PTP) 678 27.6 以太网功能描述:DMA控制器操作 682 27.6.1 使用DMA发送的初始化步骤 683 27.6.2 主机总线突发访问 683 27.6.3 主机数据缓存对齐 684 27.6.4 缓冲区大小计算 684 27.6.5 DMA仲裁器 684 27.6.6 DMA错误响应 684 27.6.7 发送DMA设置 684 27.6.8 接收DMA设置 694 27.6.9 DMA断 700 27.7 以太网断 701 27.8 以太网寄存器描述 702 27.8.1 MAC寄存器描述 702 27.8.2 MMC寄存器描述 713 27.8.3 IEEE 1588时间戳寄存器 716 27.8.4 DMA寄存器描述 719 27.8.5 以太网寄存器映像 729 28 器件电子签名 732 28.1 存储器容量寄存器 732 28.1.1 闪存容量寄存器 732 28.2 产品唯一身份标识寄存器(96位) 732 29 调试支持(DBG) 734 29.1 概况 734 29.2 ARM参考文献 735 29.3 SWJ调试端口(serial wire and JTAG) 735 29.3.1 JTAG-DP和SW-DP切换的机制 736 29.4 引脚分布和调试端口脚 736 29.4.1 SWJ调试端口脚 736 29.4.2 灵活的SWJ-DP脚分配 736 29.4.3 JTAG脚上的内部上拉和下拉 737 29.4.4 利用串行接口并释放不用的调试脚作为普通I/O口 737 29.5 STM32F10xxx JTAG TAP 连接 738 29.6 ID 代码和锁定机制 738 29.6.1 微控制器设备ID编码 738 29.6.2 边界扫描TAP 739 29.6.3 Cortex-M3 TAP 740 29.6.4 Cortex-M3 JEDEC-106 ID代码 740 29.7 JTAG调试端口 740 29.8 SW调试端口 741 29.8.1 SW协议介绍 741 29.8.2 SW协议序列 741 29.8.3 SW-DP状态机(Reset, idle states, ID code) 742 29.8.4 DP和AP读/写访问 742 29.8.5 SW-DP寄存器 742 29.8.6 SW-AP寄存器 743 29.9 对于JTAG-DP或SWDP都有效的AHB-AP (AHB 访问端口) 743 29.10 内核调试 744 29.11 调试器主机在系统复位下的连接能力 744 29.12 FPB (Flash patch breakpoint) 744 29.13 DWT(数据观察点触发data watchpoint trigger) 745 29.14 ITM (指令跟踪微单元 instrumentation trace macrocell) 745 29.14.1 概述 745 29.14.2 时间戳包,同步和溢出包 745 29.15 ETM模块(嵌入式跟踪微单元Embedded Trace Macrocell) 746 29.15.1 概述 746 29.15.2 信号协议和包类型 746 29.15.3 主要的ETM寄存器 747 29.15.4 配置实例 747 29.16 MCU调试模块(MCUDBG) 747 29.16.1 低功耗模式的调试支持 747 29.16.2 支持定时器、看门狗、bxCAN和I2C的调试 747 29.16.3 调试MCU配置寄存器 748 29.17 TPIU (跟踪端口接口单元 Trace Port Interface Unit) 750 29.17.1 导言 750 29.17.2 跟踪引脚分配 750 29.17.3 TPUI格式器 752 29.17.4 TPUI帧异步包 752 29.17.5 同步帧包的发送 752 29.17.6 同步模式 752 29.17.7 异步模式 753 29.17.8 TRACECLKIN在STM32F10xxx内部的连接 753 29.17.9 TPIU寄存器 753 29.17.10 配置的例子 754 29.18 DBG寄存器地址映象 754
stm32ADC详解
02-05
详细讲解stm32ADC的使用注意事项以及例程说明
手把手教你使用STM32ADC(原创)
publicclassA的博客
01-21 1447
模数转换器ADCSTM32单片机芯片自带的关键外设,其将模拟信号转换为数字信号,从而使单片机能够处理和分析外部传感器和信号。本文将主要介绍STM32 ADC的使用情景、采样率计算、基本程序设计模式、基于cube mx+hal库平台的使用、基于matlab/simulink平台的代码生成,最后基于手册介绍其结构原理。
STM32AD(单通道&多通道)
最新发布
二进制模----细微行动改变影响世界
03-27 889
https://blog.csdn.net/ww20200711/article/details/136744113
STM32ADC
weixin_54076783的博客
03-12 5742
ADC全称: Analog-to-Digital Converter,指模拟/数字转换器,是指将连续变化的模拟信号转换为 离散的数字信号。
STM32——ADC
热门推荐
zjy0926的博客
10-21 1万+
如果将 DMA 位置 1,则在每次规则通道转换之后,均使用直接存储器访问 (DMA) 控制器将转换自规则通道组的数据(存储在 ADC_DR 寄存器)传输到 SRAM。在以下情况下,ADC_SR 寄存器的 EOC 位置 1:● 如果 EOCS 位清零,在每个规则组序列转换结束时● 如果 EOCS 位置 1,在每个规则通道转换结束时从注入通道转换的数据始终存储在 ADC_JDRx 寄存器。(4)不连续采样模式。
STM32-ADC模块讲解
jason爱美腻的博客
09-17 1万+
文章目录 一.ADC简介 二.ADC功能框图讲解 1.电压输入范围 2.输入通道 3.转换顺序 4.触发源 5.转换时间 6.数据寄存器 7.断 8.电压转换 三.初始化结构体 四.单通道电压采集 1.头文件 2.引脚配置函数 3.NVIC配置函数 4.ADC配置函数 5.断函数 6.主函数 一.ADC简介 STM32f103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其ADC1和ADC2都有16个.
STM32 标准库 ADC
weixin_57356056的博客
05-30 1239
STM32基于标准库创建ADC采集工程
STM32 ADC高级详解大全
10-02
同时,本应用笔记将帮助 ADC 模块用户了解 STM32 微控制器提供的一些高级模式并快速着手开发。所介绍的每种模式都随附一个应用示例,以便用户更好地理解如何使用各种模式。大多数模式都随附一个基本固件,以使 ADC ...
STM32F207ADC1_DMA完整工程及其详解
11-29
工程是基于STM32F207的ADC_DMA的整体程序 #define ADC1_DR_Address ((u32)0x4001204C) //ADC1数据寄存器地址=ADC1基准地址(0x40012000)+数据寄存器偏移地址(0x4c) GPIO_InitTypeDef GPIO_InitStructure; ADC_...
基于STM32双路ADC
11-22
基于STM32双路ADC,笔者亲自编写实验,绝对完全可用。
奋斗STM32开发板ADC例程讲解.pdf
02-26
板子加电后,通过串口1显示ADC1的通道11的测量结果,该实验学习了基于DMA专递方式的ADC采集软件的编制及控制流程。12位ADC是一种逐次逼近型模拟数字转换器。它有18个通道,可测量16个外部和2个内部 信号源。各通道...
STM32 ADC
01-13 511
1、1MHz转换速率、12位转换结果(12位、记住这个12位哈、因为2^12=4096 ,也请记住4096哈)            STM32F103系列:在56MHz时转换时间为:1μs                                     在72MHz时转换时间为:1.17μs       2、转换范围:0~3.6V  (3.6v----&gt;当你需要将采集的数据用...
STM32ADC
qq_45578181的博客
08-23 2740
STM32------ADC
weixin_58125062的博客
05-14 1584
STM32------跟着正点原子学ADC
STM32ADC详解
zhuxinmingde的博客
07-25 1367
STM32f103系列有3个ADC,精度为12位,每个ADC最多有16个外部通道。其ADC1和ADC2都有16个外部通道,ADC3一般有8个外部通道,各通道的A/D转换可以单次、连续、扫描或间断执行,ADC转换的结果可以左对齐或右对齐储存在16位数据寄存器ADC的输入时钟不得超过14MHz,其时钟频率由PCLK2分频产生。
STM32ADC详解
C/C++软件工程师、嵌入式软件工程师、物联网研发工程师、C/C++讲师、物联网讲师、嵌入式讲师---欢迎大家一起交流(私信添加博主微信)
09-11 5922
00. 目录 文章目录00. 目录01. ADC简介02. ADC主要特性03. ADC功能说明04. ADC开关控制05. ADC时钟06. 通道选择07. 转换模式08. 时序图09. 扫描模式10. 数据对齐11. 寄存器11.1ADC 状态寄存器 (ADC_SR)11.2 ADC 控制寄存器 1 (ADC_CR1)11.3 ADC 控制寄存器 2 (ADC_CR2)11.4 ADC 采样时间寄存器 1 (ADC_SMPR1)11.5 ADC 采样时间寄存器 2 (ADC_SMPR2)11.
stm32adc功能详解
04-10
非常感谢您的提问。关于stm32adc功能的详解,我可以为您提供以下答案: ADC全称Analog-to-Digital Converter(模拟到数字转换器),是一种用来将模拟信号转换为数字信号的电子元件。在STM32系列的微控制器,也内置了ADC模块。 ADC模块可以将模拟信号转换为数字信号,并将其存储在对应的寄存器,从而实现数字信号的处理和分析。在STM32ADC模块可以进行多通道的采集,并支持不同分辨率的设置。同时,ADC模块也可以与DMA控制器配合使用,实现高效的数据传输。 希望这个回答对您有所帮助。如果您还有任何问题,请随时向我提出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • STM32延时函数的四种方法 129032
  • STM32 SPI详解 128698
  • STM32 IIC详解 105100
  • STM32移植LWIP 80314
  • STM32的FSMC外设简介 48334

分类专栏

  • STM32F207教程 68篇
  • STM32网络开发LWIP 34篇
  • 日常杂谈 25篇
  • C语言进阶 29篇
  • 开发工具 5篇
  • 硬件相关 11篇

最新评论

  • STM32 SPI详解

    嵌入式*: 看手册,读数据命令是03,为什么博主你是发4B呢

  • STM32延时函数的四种方法

    m0_75127857: 根据芯片主频来的,72mhz在经过72000次运算所花费时间为1ms由此延时

  • 链表在STM32中的应用

    唉嘿: 感觉这么写有点问题吧,第一个链表好像没有用起来

  • STM32使用DMA接收串口数据

    you can do this: 请问博主,在本次例程中,Usart和DMA都使用了中断,而在您的代码36-串口使用DMA接收,并将收到的数据使用DMA发送出去的代码中,只有Usart使用了中断。没太理解为什么36_代码中为什么DMA不用中断.

  • 用Excel教会你PID算法

    zxianyong0: 04、微分调节 最后一个图表

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • 预编译#error的使用
  • 关于共享资源保护的思考
  • 表驱动法在STM32中的应用
2022年17篇
2021年37篇
2020年34篇
2018年17篇
2017年13篇
2016年21篇

目录

目录

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

strongercjd

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值

哆哆女性网起名在线 免费qq签名诗句周公解梦大全查询月经信阳网站建设兼职商丘城乡一体化示范区马姓起名女孩传媒公司起名大全2016景字起名女孩名字世界十大考古未解之谜周公解梦下载正式版微信营销实用推广技巧八字算命事业运建设网站那家好吉林做网站优化周易预测美国灭亡12月起什么名字好车行起姓名大全王者起什么名字好听男南京周易风水培训竹木公司起名优惠网站建设嫉妒的密码封面制作网站贾冰春晚彭起的男孩名字大全沈姓宝宝起名网站设计讲座传奇网站图片制作123查算命网免费算命铁路局原副总受贿3千万为情妇买房淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化