This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/MSP430F5310:PWM 输入

Guru**** 2502205 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/940975/compiler-msp430f5310-pwm-input

器件型号:MSP430F5310

工具/软件:TI C/C++编译器

你(们)好

我想通过 PWM 读取风扇转速

我的 MSP430只有引脚 P2.4/TA2.1 (FAN_SPED_R)作为输入、如下所示

我想知道如何从引脚获取风扇信息

非常感谢您的参与。

此致

Ken

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    什么类型的信号是 FAN_SPED_R? 是每转一次节拍还是高频 PWM 驱动器?

    每转一次的速度非常慢(最多几个100Hz)、因此最好使用计时器捕捉(TA2.1=TIMERTA2、寄存器 CCR1)并从连续边沿中减去捕捉值。 [参考用户指南(SLAU208Q)第17.2.4.1节]

    我在 Resource Explorer 中看不到任何捕获示例、但您可能可以使用一些 timer-A 框架:

    https://dev.ti.com/tirex/explore/node?node=AEC6YEnWUPrjclYUKg9ntw__IOGqZri__LATEST

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    TA2CCTL1 = CM_1 + CCIS_0 + SCS + CAP;//上升模式下的捕捉、CCI2A 输入、同步捕捉、捕捉模式
    TA2CTL = tassel_2 + MC_0;//SMCLK、计时器停止
    
    
    #pragma vector=TIMER2_A1_vector
    _中断 void TIMER2_A1_0;// tSIR_14
    
    (void = void)(void = void = void = tage_sr)、void (void)(en_14);(void = void = void = void = void = void
    
    //无中断
    情况2:
    new_cap = TA2CCR1;
    cap_diff = new_cap - old_cap;
    old_cap = new_cap;
    if (max_cap < cap_diff){
    max_cap = cap_diff;
    }
    if (min_cap > cap_diff){
    min_cap = cap_diff;
    }
    TA2CTL = tcap = tce_diff;
    ~
    _ tcc2 = tag1 + tcc1 (tc1 + tag1);tc1 = tcc1 = tag1 + tag1 (
    // CCR1
    案例4:
    中断; // CCR2
    案例6:
    中断; //保留
    大小写8:
    中断; //保留
    大小写10:
    中断; //保留
    情况12:
    中断; //保留
    大小写14:
    break; //溢出
    默认值:
    break;
    
    }
    
    

    我每2秒启用一次 TA2CCTL1

    在调试过程中、CAP_DIFF 的值为200 ~ 218

    有人能告诉我如何将值转换为风扇转速?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    假设您尚未更改时钟(并且 ID=0)、SMCLK 以大约1MHz 的频率运行。 因此200反映(200个周期/1M 个周期/秒)=200微秒。 1/2200usec 为5kHz。 5kHz*60=300k RPM、因此我怀疑这不是每转一次