7. Introdução ao uso do temporizador TIM

1. Introdução aos registros relevantes do temporizador TIM

  • A composição do
    Insira a descrição da imagem aqui
    registro de status 1 da unidade de captura de entrada (TIM1_SR1)
    Insira a descrição da imagem aqui
    Se ocorrer um evento de recusa de carga, o bit de bandeira CCxIF correspondente no registro de status 1 (TIM1_SR1) será definido como "1", indicando que o valor de contagem foi capturado em o registro de captura / comparação (TIM1_CCRx).
    Insira a descrição da imagem aqui
    Se o sinalizador CCxIF no registro de status 1 (TIM1_SR1) for definido como "1" e outro evento de captura ocorrer, o CCxOF no registro de status 2 (TIM1_SR2) será definido como 1, para indicar que ocorreu um evento de captura repetido.
    Insira a descrição da imagem aqui

2. Introdução ao modo de captura de entrada

No modo de captura de entrada, quando a borda correspondente no sinal ICi é detectada, o valor atual do contador é travado no registro de captura / comparação
(TIM1_CCRx). Quando ocorre um evento de captura, o sinalizador CCiIF correspondente (registro TIM1_SR) é definido.
Se o bit CCiIE do registro TIM1_IER estiver setado, ou seja, a interrupção estiver habilitada, será gerada uma solicitação de interrupção. Se o
sinalizador CCiIF já estiver alto quando ocorre um evento de captura , o sinalizador de captura repetido CCiOF (registro TIM1_SR2) é definido como 1. Escrever CCiIF = 0
ou ler os dados capturados armazenados no registro TIM1_CCRiL pode limpar CCiIF. Escreva CCiOF = 0 para limpar CCiOF.
O exemplo a seguir mostra como capturar o valor do contador para o registro TIM1_CCR1 na borda ascendente da entrada TI1. As etapas são as seguintes:

  1. Selecione um terminal de entrada válido: Por exemplo, TIM1_CCR1 está conectado à entrada TI1, então
    CC1S = 01 é escrito no registro TIM1_CCR1 . Neste momento, o canal é configurado como uma entrada e o registro TIM1_CCR1 torna-se somente leitura.
  2. De acordo com as características do sinal de entrada TIi
    , o tempo de filtro do filtro de entrada correspondente pode ser definido configurando o bit ICiF no registro TIM1_CCMRi . Supondo que o sinal de entrada fique instável dentro de um máximo de 5 ciclos de clock, devemos configurar a
    largura de banda do filtro para ser maior que 5 ciclos de clock; portanto, podemos amostrar 8 vezes continuamente para confirmar a verdadeira transição de borda em TI1, ou seja,
    em TIMi_CCMR1 Escreva no registrador IC1F = 0011. Neste momento, o sinal será
    válido apenas se 8 sinais TI1 idênticos forem amostrados continuamente (a frequência de amostragem é f MASTER).
  3. Selecione a borda de conversão efetiva do canal TI1 e escreva CC1P = 0 (borda ascendente) no registro TIM1_CCER1.
  4. Configure o prescaler de entrada. Neste exemplo, queremos que a captura ocorra a cada momento de transição de nível válido, de forma que o
    prescaler seja desabilitado (escrever IC1PS = 00 no registro TIM1_CCMR1).
  5. Defina CC1E = 1 no registro TIM1_CCER1 para permitir que o valor do contador de captura seja capturado no registro de captura.
  6. Se necessário, habilite as solicitações de interrupção relacionadas configurando o bit CC1IE no registro TIM1_IER.
    Quando ocorre uma captura de entrada:
    ● Quando ocorre uma transição de nível válida, o valor do contador é transferido para o registro TIM1_CCR1.
    ● O sinalizador CC1IF está definido (sinalizador de interrupção). Quando pelo menos 2 capturas consecutivas ocorreram e CC1IF não foi apagado,
    CC1OF também é definido como 1.
    ● Se o bit CC1IE estiver definido, uma interrupção será gerada.
    Para lidar com o estouro de captura (bit CC1OF), é recomendado ler os dados antes de ler o sinalizador de recaptura. Isso evita a perda das
    informações de recaptura que podem ser geradas depois que o sinalizador de estouro de captura é lido e antes que os dados sejam leitura.
1) Medição do sinal de entrada PWM

Este modo é um caso especial do modo de captura de entrada, exceto pelas seguintes diferenças, a operação é igual ao modo de captura de entrada:
● Dois sinais ICI são mapeados para a mesma entrada TIi.
● As bordas válidas dos dois sinais ICi têm polaridades opostas.
● Um dos sinais TIiFP é usado como o sinal de entrada do acionador e o controlador do modo de acionamento é configurado para redefinir o modo de acionamento.

2) Exemplo de medição de período do sinal PWM

Por exemplo, você pode medir o período (registro TIM1_CCR1) e o ciclo de trabalho (registro TIM1_CCR2) da entrada do sinal PWM em TI1 da seguinte maneira. (Depende da frequência de f MASTER e do valor do prescaler)

  1. Selecione a entrada válida de TIM1_CCR1: defina CC1S = 01 no registro TIM1_CCMR1 (selecione TI1).
  2. Selecione a polaridade válida de TI1FP1 (usada para capturar dados para TIM1_CCR1 e limpar o contador): defina CC1P = 0 (
    válido na borda ascendente ).
  3. Selecione a entrada válida de TIM1_CCR2: defina CC2S = 10 no registro TIM1_CCMR2 (selecione TI1FP2).
  4. Selecione a polaridade válida de TI1FP2 (captura de dados para TIM1_CCR2): defina CC2P = 1 (borda descendente válida).
  5. Selecione um sinal de entrada de disparo válido: defina TS = 101 no registro TIM1_SMCR (selecione TI1FP1).
  6. Configure o controlador de modo de disparo para redefinir o modo de disparo: defina SMS = 100 em TIM1_SMCR.
  7. Habilite a captura: configure CC1E = 1 e CC2E = 1 no registro TIM1_CCER1.
    Insira a descrição da imagem aqui

3. O processo geral de inicialização da medição de captura de entrada

  1. Defina o canal de entrada específico, ambos os bits CCxS [1: 0] do registro do modo de captura / comparação (TIM1_CCMRx)
    Insira a descrição da imagem aqui
  2. Defina a taxa de amostragem do sinal e o filtro, ou seja, bits ICxF [3: 0] do registro do modo de captura / comparação (TIM1_CCMRx)
    Insira a descrição da imagem aqui
  3. Defina a polaridade da borda do sinal, que deve configurar o bit CCxP do registro de habilitação de captura / comparação (TIM1_CCERx)
    Insira a descrição da imagem aqui
  4. Defina o fator de pré-alocação do sinal, que é os bits IC1PSC [1: 0] do registro do modo de captura / comparação (TIM1_CCMRx)
    Insira a descrição da imagem aqui
  5. Habilite a função de captura, que é configurar o bit CCxE do registro de habilitação de captura / comparação (TIM1_CCERx)
    Insira a descrição da imagem aqui

4. Código de referência

Dois métodos de inicialização:

/****************************************************************/
//TIM1功能初始化函数my_init(),无形参,无返回值
/****************************************************************/
void my_init(void)
{
   //1.CC1通道被配置为输入,IC1映射在TI1FP1上“CC1S[1:0]=01”
  TIM1_CCMR1|=0x01;
  //2.配置信号边沿极性为TI1F或TI2F的低电平或下降沿“CC1P=1”
   TIM1_CCER1&=0xFD;    //上升沿
   
  //3.CC2通道被配置为输入,IC2映射在TI1FP2上“CC2S[1:0]=10”
  TIM1_CCMR2|=0x02;
  //4.配置TI1FP2信号边沿极性为下降沿“CC2P=1”
  TIM1_CCER1|=0x20; 
   
   
  //5.配置采样率为主时钟频率,无滤波器“IC1F[3:0]=0000”
  TIM1_CCMR1&=0x0F;
  //6.配置输入/捕获1通道预分频器因子为8分频“IC1PSC[1:0]=11”
  TIM1_CCMR1|=0x0C;
  //7.使能TIM1_CH1输入捕获功能“CC1E=1”
  TIM1_CCER1|=0x01;
  //8.使能TIM1计数器功能“CEN=1”
  TIM1_CR1|=0x01;

}

/****************************************************************/
//TIM1功能初始化函数TIM1_init(),无形参,无返回值
/****************************************************************/
void TIM1_init(void)
{
  //1.CC1通道被配置为输入,IC1映射在TI1FP1上“CC1S[1:0]=01”
  // 0x000000001 : CC1通道被配置为输入,IC1映射在TI1FP1上;
  TIM1_CCMR1|=0x01;
  
  //2.配置TI1FP1信号边沿极性为上升沿“CC1P=0”
  // 0x11111101 : 捕获发生在TI1F或TI2F的上升沿;
  TIM1_CCER1&=0xFD;
  
  //3.CC2通道被配置为输入,IC2映射在TI1FP2上“CC2S[1:0]=10”
  // 0x00000010 : CC2通道被配置为输入,IC1映射在TI2FP2上;
  TIM1_CCMR2|=0x02;
  
  //4.配置TI1FP2信号边沿极性为下降沿“CC2P=1”
  // 0x00100000 : 1:捕获发生在TI1F或TI2F的下降沿
  TIM1_CCER1|=0x20; 
  
  //5.配置触发输入信号为TI1FP1,“TS[2:0]=101”
  // 0x01010000 : 选择用于选择同步计数器的触发输入,滤波后的定时器输入1(TI1FP1)
  TIM1_SMCR|=0x50;
  
  //6.配置触发模式为复位触发,“SMS[2:0]=100”
  // 0x00000100 : 复位模式 – 在选中的触发输入(TRGI)的上升沿时重新初始化计数器,并且产生一个更新寄存器的信号
  TIM1_SMCR|=0x04;
  
  //7.使能TIM1计数器功能“CEN=1”
  TIM1_CR1|=0x01;
  
  //没有设置在外部触发寄存器(TIM1_ETR)中的采样频率
}

Acho que você gosta

Origin blog.csdn.net/weixin_44751294/article/details/110685476
Recomendado
Clasificación