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.

[参考译文] MSP430F2274:MSP430-GBD 开发板

Guru**** 2595805 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/626477/msp430f2274-msp430-gbd-development-board

器件型号:MSP430F2274

是否有人使用 TI MSP430-GBD (破损玻璃检测器)的硬件/固件参考平台? 我购买了其中一些产品、它们根本无法可靠工作。  如有任何反馈、我们将不胜感激。  以下是我的问题,包括详细信息、调查结果、意见和评论... (似乎存在一些硬件问题)

正在研究一个项目、该项目旨在评估 TI MSP430 GBD (破损玻璃检测器)硬件参考平台。  从欧洲购买2件、从美国购买1件。  两者均来自欧洲硬件供应商。  我未能成功使该硬件/固件评估平台可靠运行。  事实上,我只有一次工作了,从那时起就无法重复这一结果,而且我一直在尝试!

出现故障、使系统按需要运行。  实际上、在使用 Glass-Break.wav 声音文件后、我让 GBD 通过 LED 闪烁和同时启用蜂鸣器声音来工作。  音频文件通过耳机从 PC 播放到 TI MSP430 GBD 麦克风。  在一个实例中
、在短时间内(仅几分钟)、系统通过使用22.05kHz 8位分辨率的 Glass-Break.wav 示例音频文件进行多个顺序检测来根据需要运行。  此后、我一直无法重复此结果、我已经尝试了很多!  文件 Glass-Break.wav 在描述我所遇到问题的措辞末尾描述了以下属性以及详细信息、观察结果和评论。

以下是三个示例项目:

  1. 闪烁的 LED
  2. 蜂鸣器声音
  3. 可靠的 GBD (玻璃破裂检测)

这些项目使用适用于 MSP430 Kickstart 版本7.10.4的 IAR Embeded Workbench 进行编译

我的用于此 TI MSP430 GBD 平台的评估、我的观察结果、评论和结果如下:

  • Buzzer 示例应用程序在发出蜂鸣器(音调)声音时无法正常工作。  测量了中断频率、该频率约为83kHz、而不是注释中的8.3kHz、该频率按幅度顺序关闭。  为了获得大约8.3kHz 的频率并从硬件蜂鸣器中获得蜂鸣器蜂鸣器(音调)声音输出、我按照如下方式修改了 main.c 中的代码(添加了红线)。  请注意、输出音调的频率约为4.1kHz (高间距)。

--snip
 // 2.1。 Timer_A
 //===================
 TACTL = 0x0004;  // Timer_A 清零
 TACCTL0 = 0x0010;// Timer_A 捕捉/比较中断使能
//TACCR0 = 0x000F; //设置 TACCR0值:1MHz/8 = 125kHz;125kHz/15 = 8.33kHz
 TACCR0 = 0x012c;
 TACTL = 0x02D0;  //选择:SMCLK、分频器1/8、增模式

--snip

  • 使用3.0 VDC 锂 CR2032纽扣电池、我只能将代码加载到 MSP430、但在示例 LED 和 Buzzer 示例应用中、我不会听到任何闪烁的 LED 或蜂鸣器声音。  此外、如果 LED 和 Buzzer 应用程序不能正常工作、GBD 应用程序也无法正常工作。
  • 我在其他地方看到使用了两节 AA 1.5 VDC 电池、但我没有设置并尝试使用、因为所提供的硬件上有一个纽扣电池插座、两节 AA 1.5 VDC 电池没有插座。
  • 使用直流实验室电源时、由于我无法将代码加载到 MSP430器件中、系统在3.0VDC 下无法工作。
  • 使用直流实验室电源时、系统以3.6 VDC 的电压加载和运行代码。  在这种情况下、闪烁的 LED 和 Buzzer (我已修改)应用程序可以正常工作、而 GBD 应用程序也可以正常运行。  我已经通过添加代码来切换中断上的 GPIO 来验证 GBD 应用是否真正运行、同时监控在数字示波器上切换的 GPIO 信号。

Glass-Break.wav 示例音频文件的说明、该文件一次工作、但在我的设置中大部分不工作
--snip
$ ls -la Glass-Break.wav
-rw-r- 1 xxx 43760 2007年11月 9日 Glass-Break.wav
$ md5sum Glass-Break.wav
93732e6c9846f2449f709a06004753a9 Glass-Break.wav
$ shntool 信息 Glass-Break.wav
--------------------------------------------------
文件名:                   Glass-Break.wav
处理人:                  WAV 格式模块
长度:                      0:01.983
波形格式:                 0x0001 (Microsoft PCM)
通道:                    1.
位/采样:                 8
样本/秒:                 22050
平均字节/秒:           22050
比率(计算值):           22050
块对齐:                 1.
标头大小:                 44字节
数据大小:                   43716字节
块大小:                  43752字节
总大小(块大小+ 8): 43760字节
实际文件大小:            43760
文件被压缩:          否
压缩比:           1.0000
CD 质量属性:
 CD 质量:                否
 剪切扇区边界:    N/A
 扇区未对齐:       不适用
 足够长的烧烤时间:  不适用
波形属性:
 非规范标头:      否
 额外的 RIFF 数据块:         否
可能的问题:
 文件包含 ID3v2标记:   否
 数据块块对齐:  是
 标头不一致:       否
 文件可能被截断:   否
 垃圾邮件附加到文件:     否
 奇数数据大小具有填充字节:N/A
$

--snip

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

    您好、Anthony、

    下载此 TI 参考设计的原始代码后、您是否碰巧更改了代码以提高系统(CPU)频率? 由于您在电源电压小于3.6V 时遇到问题、并且必须将 CCR0值增加~10x、因此我怀疑您使用的 CPU 频率是8MHz 或更高。

    在 MSP430F274的数据表中、图1显示了不同 CPU 频率下的电源电压要求。

    此致、

    James

    MSP430应用

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

    --snip

    下载此 TI 参考设计的原始代码后、您是否碰巧更改了代码以提高系统(CPU)频率?

    --snip

    不、我没有更改代码来增加频率。  我应该更改代码中的频率吗?  频率是否随代码"按原样"提供?  代码"按原样"提供的默认 CPU 频率是多少?

    有三个示例应用

    1. 破损玻璃检测
    2. 闪烁的 LED
    3. 蜂鸣器蜂鸣声

    TI、Olimex 和 MicrocontrollerShop 唯一不是"按原样"的应用程序是蜂鸣器应用程序、在该应用程序中、我必须进行以下修改才能听到蜂鸣器蜂鸣声。  "玻璃破损检测"和"闪烁 LED"应用程序"按原样"进行、无需修改。

    修改'Buzzer Behep'应用程序只是为了将 TACCR0值从0x000f 更改为0x012c。

    --snip

    //TACCR0 = 0x000F; //设置 TACCR0值:1MHz/8 = 125kHz;125kHz/15 = 8.33kHz
     TACCR0 = 0x012c;

    --snip

    安东尼

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

    您好、Anthony、

    我对延迟的响应非常抱歉。 我不知为何错过了您的最后一个回复。 您是否仍面临此问题? 我搜索了该设计、发现它是由 Olimex 完成的。 他们似乎也编写了代码。 我对这种较旧的设计不太熟悉、但我会尽量提供更多指导。

    让我们从 MSP430-GBD_Buzzer_Beep 示例开始、我在下面提供了该示例。 基本上、DCO 配置为1MHz 并以相同的频率为 SMCLK 供源。 然后、Timer_A 模块将 SMCLK 除以8、以实现125kHz 的频率。 如您所知、Timer_A 中断的频率应以125kHz 除以 TACCR0的频率触发。 现在、我看到 TACCR0最初在代码中设置为0x000F、这会导致大约8.33kHz 的中断频率。 在 ISR 中、它们似乎以8.33kHz/2的速率(大约是蜂鸣器的谐振频率)打开蜂鸣器。 在您之前的帖子中、您提到了测量高于8.33kHz 10倍的中断。 您测量的是哪个中断? 如果您使用下面的代码、我会发现 ISR 以83.3kHz 的频率触发是很奇怪的。

    / //
    //*演示程序,用于:*/*
    板:MSP430-GBD*/
    /*制造商:OLIMEX*/
    *版权所有(C) 2009*/
    *由工程师 Penko T. Bozhkov 设计 */*
    模块名称:主模块 */
    /*文件名:main.c */
    /*修订版 :初始 */
    /*日期 :2010年3月11日 */
    ********* /#include
    "msp430x22x4.h"
    #include 
    
    void Ports_initial_initialization (void);
    void init_devices (void);
    
    #define Buzzer_on P3OUT |= 0x80;P1DIR |= 0x80;
    #define Buzzer_off P3OUT &=~0x80;P1DIR |= 0x80;
    #define Buzzer_Check (P3IN & 0x80)
    
    
    /********* /*
    函数名:ports_initial_initialization */
    /*参数 */
    * 输入:否*/
    * 输出:否*/
    /*操作:定义初始端口状态和方向。*/
    ********* /
    void Ports_initial_initialization (void)
    {
    //input_data=P1IN; //只读寄存器
    P1OUT = 0x00; //输出为低
    电平 P1SEL = 0x00; //外设模块函数:选择 I/O 函数。
    P1DIR = 0x01; // 1 ->输出;0 ->输入;除 LED
    P1REN = 0x00之外的所有输入; //上拉/下拉电阻器被禁用
    P1IES = 0x00; //中断边沿选择寄存器
    P1IE = 0x00; //禁用所有 Portx 中断
    P1IFG = 0x00; //清除所有中断标志
    
    //input_data=P2IN; //只读寄存器
    P2OUT = 0x00; //输出为低
    电平 P2SEL = 0x00; //外设模块函数:选择 I/O 函数。
    P2DIR = 0x01; // 1 ->输出;0 ->输入
    P2REN = 0x00; //上拉/下拉电阻器被禁用
    P2IES = 0x00; //中断边沿选择寄存器
    P2IE = 0x00; //禁用所有 Portx 中断
    P2IFG = 0x00; //清除所有中断标志
    
    //input_data=P3IN; //只读寄存器
    P3OUT = 0x00; //输出为低
    电平 P3SEL = 0x30; //外设模块功能:针对 UCA0TXD 和 UCA0RXD
    P3DIR = 0x90启用; // 1 ->输出;0 ->输入;UCA0TXD 输出、BUZZG 输出
    P3REN = 0x00; //上拉/下拉电阻器被禁用
    
    // input_data=P4IN; //只读寄存器
    P4OUT = 0x00; //输出为低
    电平 P4SEL = 0x00; //外设模块函数:选择 I/O 函数。
    P4DIR = 0x01; // 1 ->输出;0 ->输入;
    P4REN = 0x00; //禁用上拉/下拉电阻
    器}
    
    
    /********* /*
    函数名称:init_devices*/
    /*参数 */
    * 输入:否*/
    * 输出:否*/
    /*操作:初始化所有使用的 MSP430F2274外设。*/
    ********* /
    void init_devices (void){
    _BIC_SR (GIE);//在初始化过程中禁用中断
    
    /******** 端口初始化******* /
    Ports_initial_initialization();
    /****** 外设初始化******* //2.0
    。 设置系统时钟:
    BCSCTL1 = CALBC1_1MHz; //设置 DCO
    DCOCTL = CALDCO_1MHz;
    
    // 2.1。 Timer_A
    //===================
    TACTL = 0x0004;// Timer_A 清零
    TACCTL0 = 0x0010;// Timer_A 捕捉/比较中断使能
    TACCR0 = 0x000F;//设置 TACCR0值:1MHz/8 = 125kHz;125kHz / 15 = 8.33kHz
    TACTL = 0x02D0;//选择:SMCLK、
    
    全局中断8 =启用 BIS_BIS;/ GSR 1。 在初始化结束时执行此操作!!!!
    !}
    
    
    / /*
    函数名称:main*/
    /*参数 */
    * 输入:否*/
    * 输出:否//
    //*操作:调用"init_devices()",然后永久循环。*/
    ********* /
    void main (void)
    {
    WDTCTL = WDTPW + WDTHOLD; //停止看门狗计时器
    init_devices();
    while (1){
    
    }
    }
    
    
    /********* /*
    函数名称:TIMERA_Capture_Compare_ISR*/
    /*参数 */
    * 输入:否*/
    * 输出:否
    /*操作:切换 T1晶体管、从而导致蜂鸣器发出蜂鸣音。 */
    ********* /
    #pragma vector=TIMERRA0_Vector
    __interrupt void timer_ISR (void)
    {
    // Buzzer 谐振频率为4.1kHz,TimerA CCR 频率设置为8.33kHz
    if (Buzzer_Check){
    蜂鸣器_OFF;
    }
    否则{
    蜂鸣器_ON;
    }
    
    } 

    此致、

    James

    MSP 客户应用