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.

[参考译文] TM4C123GH6PGE:如何将蜂鸣器与 tm4c123控制器集成?

Guru**** 2482105 points
Other Parts Discussed in Thread: LM4819, TM4C123GH6PGE

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/702753/tm4c123gh6pge-how-to-integrate-buzzer-with-tm4c123-controller

器件型号:TM4C123GH6PGE
主题中讨论的其他器件:TM4C123LM4819

您好!

感谢大家对此时刻的支持。 我针对每个问题获得了如此多的解决方案、以至于我在这个论坛上提出了这些解决方案。

我又来了一次!

我尝试以与评估套件 DK-TM4C129相同的方式将蜂鸣器集成到我的 TM4C123 Tiva 控制器中。  

我正在使用为 TM4C129提供的示例代码来对 TM4C123进行微小的更改、现在我的代码没有错误。

但在这么多练习后、我无法通过蜂鸣器听到相关声音、只有发出嘶嘶声。

请查找以下已实施的代码并建议对方法进行任何更改:

内部
main (空)

uint32_t ui32Temp、计数;


uint32_t ui32Retcode、ui32NewKey、ui32OldKey;
tContext sContext;
unsigned long 输入、previous;
//
//为中断处理程序启用怠惰堆栈。 这允许使用浮点
//在中断处理程序中使用的指令,但代价是
//额外的堆栈用法。
//
ROM_FPULazyStackingEnable();

//
//将系统时钟设置为从 PLL 以50MHz 运行。
//
/*ROM_SysCtlClockSet (SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN |
SYSCTL_XTAL_16MHz);
*

G_ui32SysClock = SysCtlClockFreqSet ((SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz)、50000000);
//
//配置 USB 操作所需的引脚。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);

ROM_GPIOPinConfigure (GPIO_PG4_USB0EPEN);
ROM_GPIOPinTypeUSBDigital (GPIO_PORTG_BASE、GPIO_PIN_4);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOL);
ROM_GPIOPinTypeUSBAnalog (GPIO_PORTL_BASE、GPIO_PIN_6 | GPIO_PIN_7);
ROM_GPIOPinTypeUSBAnalog (GPIO_PORTB_BASE、GPIO_PIN_0 | GPIO_PIN_1);

ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOP);
ROM_GPIOPinConfigure (GPIO_PP2_T5CCP0);
ROM_GPIOPinTypeTimer (GPIO_PORTP_BASE、GPIO_PIN_2);

ROM_GPIOPinTypeGPIOOutput (GPIO_PORTP_BASE、GPIO_PIN_1);
ROM_GPIOPinWrite (GPIO_PORTP_BASE、GPIO_PIN_1、1);

//

//为100Hz 中断配置 SysTick。
//
ROM_SysTickPeriodSet (SysCtlClockGet ()/ ticks_per_second);
ROM_SysTickEnable();
ROM_SysTickIntEnable();

//
//启用中断
//
// rom_IntMasterEnable();


//
//初始化显示驱动程序。
//
CFAL96x64x16Init();
//
//初始化按钮驱动程序。
//
ButtonInit();

//
//初始化两个离屏显示并分配调色板。 这些
//幻灯片菜单小工具使用缓冲区来允许动画效果。
//
GrOffScreen4BPPInit (&g_sOffscreenDisplayA、g_pu8OffscreenBufA、96、40);
GrOffScreen4BPPPaletteSet (&G) sOffscreenDisplayA、g_pui32调色板、0、
num_palette_entries);
GrOffScreen4BPPInit (&g_sOffscreenDisplayB、g_pu8OffscreenBufB、96、40);
GrOffScreen4BPPPaletteSet (&G) sOffscreenDisplayB、g_pui32调色板、0、
num_palette_entries);

//
//将编译时定义的小工具添加到小工具树中。
//
WidgetAdd (widget_root、(tWidget *)&g_sHeading);
WidgetAdd (widget_root、(tWidget *)&g_sStatus);
WidgetAdd (widget_root、(tWidget *)&g_sFileMenuWidget);

//
//初始化状态文本。
//
strcpy (g_pcStatusText、"无设备");

//
//向小工具发出初始喷漆请求,然后立即调用
//小组件管理器处理油漆消息。 这可确保
//尽快绘制显示,并节省我们的延迟时间
//否则会遇到我们在安装后是否处理了油漆消息
//并读取 SD 卡。
//
WidgetPaint (widget_root);
WidgetMessageQueueProcess();

//
//确定是否安装了 SD 卡。 如果没有,请打印
//警告并让用户安装并重新启动。
//
// ui32Retcode = disk_initialize (0);
ui32Retcode = RES_OK;
if (ui32Retcode!= RES_OK)

G_pcStatusLines [0]="找不到 SD 卡";
G_pcStatusLines [1]="请插入";
G_pcStatusLines [2]="A 卡和";
G_pcStatusLines [3]="重置电路板。";
ShowStatusScreen (g_pcStatusLines,4);
//返回(1);

其他

G_pcStatusLines [0]="SD 卡已找到";
// ShowStatusScreen (g_pcStatusLines,1);

//使用逻辑磁盘0装入文件系统。
//
/* f_mount (0、&g_sFatfs);
if (!FileInit())

退货(1);
}*/

//

//
//现在不播放任何内容。
//
/*g_ui32Flags = 0;
G_ui32SysTickCount = 0;
G_ui32LastTick = 0;
G_ui32CurrentVolume =初始卷百分比;*/

// PP2/PP1用于扬声器输出。
//
/*ROM_GPIOPinConfigure (GPIO_PP2_T5CCP0);
ROM_GPIOPinTypeTimer (GPIO_PORTP_BASE、GPIO_PIN_2);
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTP_BASE、GPIO_PIN_1);
ROM_GPIOPinWrite (GPIO_PORTP_BASE、GPIO_PIN_1、GPIO_PIN_1);*/

strcpy (g_pcStatusText、"已配置扬声器");


//
//
//
//配置 USB 主机输出。
//
USBSoundInit (0、AudioEvent);
//
//将音频流初始化为已停止状态。
//
/* StopAudio();

SoundVolumeSet (60000);
SoundInit (g_ui32SysClock);*/

SoundInit (g_ui32SysClock);
SoundVolumeSet (128);
// GenerateAudio (g_pi16AudioBuffer、audio_size / 2);
//SoundStart (((int16_t *) g_pi16AudioBuffer、audio_size、8000、SoundCallback);

strcpy (g_pcStatusText、"扬声器播放");
WidgetPaint (widget_root);
WidgetMessageQueueProcess();

//
//将旧键和新键默认为不按,以便按第一个键
//将正确地在键盘上绘制。
//
ui32OldKey = NUM_white_keys + NUM_BLACK_keys;
ui32NewKey = NUM_white_keys + NUM_BLACK_keys;

/*Sound_Init();//初始化 SysTick 计时器和 DAC
钢琴家;*

//
//输入一个(几乎)无限循环来读取和处理命令
//用户。
//
while (1)

SoundStart (((int16_t *) g_pi16AudioBuffer、audio_size、8000、SoundCallback);
GenerateAudio (g_pi16AudioBuffer、AUDIO_SIZE / 2);

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

    不能在 TM4C123器件上使用函数 SysCtlClockFreqSet。 使用 SysCtlClockSet()。 TivaWare 外设驱动程序库用户指南第488页提供了注释。

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

    [报价用户="sayed tausif"]我无法通过我的蜂鸣器获得相关的声音

    这里的许多人可能"不"熟悉您的"蜂鸣器"-一些描述将会很有帮助。    (尤其是当寻求"保留"声音时!)    值得注意的是,“蜂鸣器”(很少... (如果有)以 "纯音"而闻名。

    从代码"跳出"后:

    • // PP2/PP1  用于扬声器输出。

    您的代码将 PP1设置为输出-然后将其打开-这对(潜在)声音生产很有效率。   但是、PP2设置为计时器-但仅初始化(不完全)!   (我发现只有2个(重复)调用到该计时器-未能按您的需要强制它。)

    现在-扬声器或蜂鸣器通常显示为2端设备。   (因此、您正确使用 PP1和 PP2)   输出声音的音量与扬声器/蜂鸣器2个端子之间的电压差成正比、而施加的电压的频率决定了声音的间距。   您的计时器预计可提供(部分)频率(声音间距)控制、而片外 DAC 则可提供音量控制。   ALAS -定时器配置失败-和 DAC 编码"显示"可能(相当好)解释您蜂鸣器的"显示"。   虽然您的代码(可能没有错误)似乎不足以产生"受控的声音音调和音量"-(可能)判断为"剩余"。

    然后进一步缩减您的代码:

    • /*  Sound_Init();  //初始化 SysTick 计时器和 DAC   
    •    PIANAR_Init(); */   (这种(注释掉)函数分组- 对声音输出的影响很大-但不起作用!   (您已阻止其执行)

    您的"引用程序"的关键/关键部分必须没有(相当)"将其添加到程序的实施中"-因此"保留"声音-这些"显示代码"片段一起转义...   您如何"获得如此正确的结果"是"不清楚"的-但(似乎)已将"连接件处理 (PP1和 PP2)"密钥"发送给您的(行为错误)蜂鸣器!"    (即 "Levant"声源... (可能))

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

    e2e.ti.com/.../sound.cThanks大量 CB1!

    参考"您的计时器应提供(部分)频率(音频间距)控制、而片外 DAC 应提供音量控制。  "

    我没有在电路上使用任何 DAC、而是在输出端使用放大器 LM4819。

    使用与 DK-TM4C129电路板的扬声器部分相同的电路并使用同步代码、对 TM4C123gh6pge 进行了修改。

    在 PP2引脚上、我会得到脉冲、但不会得到任何正弦波。

    请建议我的方向是否正确? 或者我的努力将是浪费。

    请查找随附的参考源代码 USB_sound.c、并在 sound.c 中初始化声音驱动程序

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

    e2e.ti.com/.../usb_5F00_host_5F00_audio.c

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

    [引用 user="sayed tausif">在 PP2引脚上,我正在获取脉冲 ...  但 没有得到任何正弦波。[/quot]

    我没有时间进行搜索/查找、然后认真查看(两者) DK-TM4C129板的大代码库和原理图(参考)。    (您已修改-正在添加(进一步)变量...)

    我的朋友-我没有提供强有力的(引导)线索-在第一个回答中?    (和放大-具有该响应的"标签"。)

    假设 "PP1 & PP2" (如您的(修改的)代码的初始过账中列出的)仍然是 MCU 与"蜂鸣器"的唯一(信号发起)连接-您如何解释(真正证明) 这2条代码行-显示在您的初始过账中?

    ROM_GPIOPinTypeTimer (GPIO_PORTP_BASE、GPIO_PIN_2);  //首次出现

    ROM_GPIOPinTypeTimer (GPIO_PORTP_BASE、GPIO_PIN_2); //第二次出现

    这两个参数是'PP2'的唯一"设置或配置"-如何预计'任何正弦波'?   (来自引脚 PP2?)    

    我再次提醒大家注意、"仅这一点"、您已经(不)直接(或有效)解决了这一问题。

    您指示我审核(其他)代码-但在您的初始过账中、该代码"无参考"。   (因此-对该(新添加的)代码的审查如何相关?)

    当尝试在 不同 MCU 之间"生成项目"时、以下几点非常重要:

    • 识别所有关键/关键功能并(正确)传递给新设计
    • 新器件的功能是"符合要求"
    • 复制(原始 的)硬件和软件(功能和性能)证明是足够的

    我们相信、您的"项目迁移"在某些  关键措施的基础上略有不足...

    (未描述(一如既往)是此类"项目迁移!"的动机    可能需要花费大量时间/精力(可能)-但减去(任何)"此类需求的合理性"-是否不会使用(原始)'DK-TM4C129电路板'-提供(非常)的(成熟的)解决方案?)

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

    您是否更正了函数调用以设置系统时钟频率? 以下是将 TM4C129x 器件的代码更改为 TM4C123x 器件(反之亦然)时必须注意的 TivaWare 函数列表。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、我更正了函数调用。 使用:
    ROM_SysCtlClockSet (SYSCTL_SYSDIV_4 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz);

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

    很抱歉未提供计时器初始化的确切位置。 其中包括:
    无效
    SoundInit (uint32_t ui32SysClock)

    //
    //启用声音驱动程序使用的外设。
    //
    ROM_SysCtlPeripheralEnable (SYSCTL_Periph_TIMER5);

    //
    //根据系统时钟计算 PWM 周期。
    //
    G_sSoundState_ui32Period = ui32SysClock / 64000;

    //
    //设置默认音量。
    //
    G_sSoundState_i32Volume = 255;

    //
    //将计时器配置为在 PWM 模式下运行。
    //
    if ((HWREG (TIMER5_base + TIMER_O_CTL)& TIMER_CTL_TBEN)= 0)

    ROM_TimerConfigure (TIMER5_base、(TIMER_CFG_SPLIT_PAIR |
    Timer_CFG_A_PWM |
    Timer_CFG_B_周期);

    ROM_TimerLoadSet (TIMER5_base、TIMER_A、g_sSoundState_ui32Period - 1);
    ROM_TimerMatchSet (TIMER5_base、TIMER_A、g_sSoundState.ui32Period);
    ROM_TimerControlLevel (TIMER5_base、TIMER_A、true);

    //
    //更新超时的计时器值,而不是立即更新。
    //
    TimerUpdateMode (TIMER5_base、TIMER_A、TIMER_UP_LOAD_TIMEOUT |
    Timer_up_match_timeout);

    //
    //将计时器配置为在每次超时事件时生成中断。
    //
    ROM_TimerIntEnable (TIMER5_base、TIMER_CAP_EVENT);

    //
    //启用计时器。 此时、计时器生成中断
    //每15.625us 一次。
    //
    ROM_TimerEnable (TIMER5_base、TIMER_A);
    // ROM_IntEnable (INT_TIMER5A);

    //
    //清除声音标志。
    //
    G_sSoundState_ui32Flags = 0;
    }//代码在此结束

    我对 ROM_IntEnable (INT_TIMER5A)进行了注释、因为它挂起了单元。

    在 MCU 项目迁移方面、我使用了 DK-TM4C123 95%的设计。 为了实现音频目的、我别无选择、只能从 DK-TM4C129板上选择电路。

    已测试95%的功能并按计划工作。

    仅仅因为我没有针对 TM4C123的经过验证的电路和代码、我就有重复使用 TM4C129扬声器设计的风险、因为扬声器库代码可用。

    当通过外部信号发生器提供2-16 KHz 正弦波时、我的蜂鸣器(CDM-13008)发出正确的音调。

    但无法通过提供的代码生成相同的正弦波。
    我假设、如果控制器将生成相同的正弦波、那么我的蜂鸣器将生成音调。

    请帮助我找到问题。

    您的支持可能会帮助我克服这一障碍。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    这种反应比以前更加明确-做得好!     (您的远程助手 crüe 要证明提供了大量服务-您不同意吗?)

    事实证明、"被消化的答案"(被另一个标记为这样) -没有提供(很多)舒适性-并且(当然)-没有"真正的"答案!    (即使系统时钟设置不正确-您的系统似乎正常运行-不知为何错过了这一事实。)

    我相信、您的"使用 kiss "现在将"轻松、轻松、增强"您的"创建"故障排除。

    那么、如何简化和使 基于计时器的 PWM 类型正弦波的生成变得更加系统化呢?   回忆 一下"kiss"指令、"保持简单、系统!"   (即使如此、尤其是强大/增强亲吻(就像这样)在这里似乎被"禁止"!)    (再次说明原因...)

    [引用 user="sayed tausif">但无法通过提供的代码生成相同的正弦波。 [/报价]

    这就引出了一个问题-什么输出、(来自 Timer5)"您观察到吗?"   (减去示波器捕获-您的帮助者需要花费更多的时间/精力 crüe 这不符合您的利益-您不同意吗?   注意-您的报告列出了"无法生成"-提供了有关 Timer5 "生成了什么内容的无/零见解!"   这很关键-是不是吗?

    返回(此处禁用) kiss

    • 您导入的计时器代码虽然很聪明- 但相当复杂。    它显示为"多功能"-驱动两个定时器部分(A 和 B)-并且需要使用中断!   这是否(极大地)扩大了您的"战场"?   (即 、您将火灾直接对准哪个"敌人目标"?)   [此处为前美国陆军战斗官...)
    • 您可能需要一个示波器、而不是"仅蜂鸣器"来加快和简化诊断。   是否有合理的可用性?   (不必是最优秀的...)
    • 您可以(首先)确认 Timer5的 PWM 模式正在运行、这将对您非常有用。   (生成不同的 PWM 占空比-和频率-确认、"一切正常")
    • 只有在 Timer5A "经证实"可产生令人满意的(即受控的) PWM 输出之后、我才会在混合中添加 Timer5B。   Timer5B 的"周期性"特性似乎会导致 Timer5A 的输出发生变化-尝试创建一些(近)正弦波。   请注意、Timer5A 的这种"模型"由 Timer5B 提供、这种"模型"非常复杂、必须仔细(并逐渐)测试和确认。

    您之前的代码显示了一个50MHz 系统时钟-您将其除以64、000 -以生成"g_sSoundState_ui32Period"。   我的数学原理表明、要产生~780Hz 的频率、您需要的是这样吗?   以及-如何选择该值-如果是。

    您的中断以15.6µS μ s 的间隔发生-我的"餐巾纸"计算结果显示为~64KHz -这是如何选择的?   (~780Hz 和~64KHz 之间的"delta"似乎(非常)宽-不是吗?)

    有人怀疑某些'R-C'网络旨在"接收您的'变化的占空比' PWM 输出'(以产生变化的模拟电平)-但这还没有提到。   任何和所有东西-在您的 MCU 和"嘶嘶声"蜂鸣器之间-必须(很好)详细!

    怀疑这些因素-而不是系统时钟-值得您的最大关注...

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

    e2e.ti.com/.../5102.usb_5F00_host_5F00_audio.ce2e.ti.com/.../0451.sound.cThanks批量 CB1、

    Kiss 工作了!

    我能够听到响亮和清晰的蜂鸣音。

    我正在共享代码。
    真正的问题是:

    1.声音处理程序无法自动呼叫

    2. Soundcallback 函数(用于 synth 项目)替换为 audiocallback 函数(用于 USB_audio 项目)。

    如果没有您的支持、我只能解决问题。

    再次感谢!

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

    谢谢-朋友 Sayed。   干得好-为您感到自豪-您的坚持-以及(希望)采用"kiss"(一个可衡量的-一次仔细检查/确认的步骤)再次获得回报。   (尽管如此-特别是-“亲吻”像“类似”-由于模糊(不可支持的原因)在这里被禁止!)

    我不确定"只有"我的支持才能让您取得成功。   您的解决方案极具创意-您从其他来源“借用(适当且可用)”“位和片段”,然后有一些(轻微)指导... 集成并根据您的意愿弯曲它们。   这就是您的全部!

    KISS 指示我们的"期望成功"-即使"许多球"在空中"-比"现实"更"有希望"。

    您“区分任务”的能力-确保 每个任务都能执行-并且(仅)... 加入他们的"不断扩展的整体" 将会令人钦佩、 这也是您的大荣誉!

    (非常)自豪!    (经常使用亲吻-它是免费的-非常强大-甚至是"喜欢!")

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢拥有如此丰富经验和接触不同领域的人所说的令人鼓舞的话语!
    因为声音完美地呈现、噪声也是如此。 过去一周、扬声器发出的噪音(67KHz)消失了。 尽管它是由计时器本身生成的、但它是不可取的。
    您能不能建议我如何仅播放8kHz 的声音而不是67KHz 的声音。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="sayed tausif"]感谢拥有如此丰富经验和接触不同领域的人员所说的令人鼓舞的词语!

    这无法描述"我"-从"后台"操作的人-通过(之前)"后台"的通道进入(仅限)。    同样的、谢谢。   (遗憾 的是、那些"两个人"——"沉重的(但却称"卓越的"手"——把我们中的几个人赶走了!)    (我的假日周回返仅仅是 一个“被奇迹所破坏”。)

    [引述 user="sayed tausif"]您能不能建议我如何仅播放8kHz 的声音 而不是67kHz 的声音。[/引述]

    我注意到"太频繁"-供应商代理(可能会过度强调"PC")-仅"同意"海报的诊断。   不是这位记者!    您的或大多数"真实"的扬声器能否 再现67KHz?    而且-当人类在 20kHz 左右的频率下听到"顶尖"的声音 时(男性甚至更低... 以便我们可以“调出”... 您知道)您是如何实现 (测量) 此类67KHz 检测的?  (即使是'Beat frequency (心搏频率)'... 67KHz - 8kHz -证明太高、无法再现扬声器!)

    如果确实-这67KHz 证明"真实" (但肯定-未听到) 不是"带通滤波器"-中心位置@违规频率-立即"注意?"

    再次提醒-请告诉我们  您是如何(以及在哪里)"探测和测量了67KHz 的。   (这很有趣)   、并且-一如既往地"喜欢"我的帖子-并采用"亲吻!"

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我的错!
    我在检测评估套件上的信号、而不是实际电路板上的信号、因为探测更容易。
    但是、当我开始使用相同的固件探测实际硬件时、我会找到不同的波形。
    现在、我将获得17KHz 的最大频率。 但我所需的声音应该是8kHz。
    每当我发出刺激性噪声时、DSO 将显示17KHz 的脉冲。 否则、它将保持显示频率为2 - 4kHz 的脉冲。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您的帖子的相对"简洁性"迫使(即将离开)助手 crüe 付出"额外"的时间/精力。

    您(现在)引入 '17KHz '(最大值)频率。    (之前-您只希望生成"干净"8kHz 信号!)   (通过您的帖子、 7月9日- 04:26)

    需要的详细信息如下:

    • 这个17KHz 信号是否代表一个附加要求-或者(简单的)它是一个不需要/有问题的信号?   (需要一些详细信息)
    • 您的写作不清楚您"是否"实现了"声音"-在8kHz 左右。   是否实现了8kHz (曾经)?   
    • 您的(需要) 8kHz "短暂"吗?    (不会消失-不会故意采取行动-在您看来)
    • 新提到的是"频率为2-4kHz 的脉冲"。   由于这些信号"超出"您所需的8kHz 频率-这些"不需要的/有问题的"信号吗?   您做了什么(更改/添加了)来创建它们?
    • 我不认为17KHz 是"刺激"的-它确实接近人类认可的上限。  (我现在听不到这一频率的一半-由 '拖式105毫米榴弹炮'提供。)   

    PCB 布局不良("试验板"(尤其是试验板))以及物理上长/非屏蔽信号引线/路径通常会导致此类问题。

    音频故障排除通常从"从左到右"开始-仔细且正确地"探测/显示"最早(最弱)的信号生成阶段-逐渐向右移动(放大更大)信号-并"为产生失真(或其他)有问题的信号而进行"隔离"。    (明天我可能会"离开"论坛(被 e2e 的"执行者"赶走)-快速响应证明是最好的...)

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

    很抱歉、我无法正确解释问题。

    情况如下:
    我的要求是产生单音调的声音。
    我正在通过" SoundStart ((Int16_t *) g_pi16AudioBuffer、AUDIO_SIZE、8000、SoundCallback)"配置频率为8kHz 的计时器
    但在探测微控制器输出引脚时获得2-4kHz 的声波。
    这种低频声音可以舒缓耳朵、并且具有所需的信号。
    但17Khz 的不良声音会刺激耳朵、伴随着所需的信号
    该17KHz 信号的强度将随着时间的推移而增加。
    请帮助我查找:
    是因为电子电路? 或者在固件方面进行一些小的努力即可解决问题

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

    感受(但无法听到)您的疼痛。    这是我过去作为唯一一名在防空(火炮)营中服役的"军事军团"军官所获得的(很少)好处之一。   这些“大枪”(榴弹炮)向我们的学士学位宿舍发射(从几英里外-炮弹落在同样远的地方-谢谢上帝!)   我们的窗户(严肃地)在它们的框架中发出嘎嘎声!   大约20年后-我去过一次've a Test Lab crüe ' 、从实验室运行-由于我的'Blast'一个10kHz 信号-我根本听不到这个信号 !'

    现在、您的 MCU 计时器将在可编程频率下生成"四个波形"、并且(最常见的情况是)这些波形"不会被愉快地听到/接收。"   我对  "发现开始" 项目"一无所知-我的公司不太可能使用它-似乎"发现开始"至少是 "帮助和教唆"您的问题。   请理解-我的小型技术小组每天处理 MCU 问题(包括大多数周末)、但我们必须谨慎选择"时间和精力承诺"。   (投资者要求-如果我们不能(反复)"打败股票市场"、我的脖子是"第一"被斩波。)

    方波输出具有丰富的"谐波"-当您寻求8kHz 时、您的报告17KHz 是(几乎)第一个8kHz 谐波。   (16kHz 是谐波)  someway -不知怎么-您的8kHz 方波必须被操纵为(接近)正弦波形式。  (正弦波令人愉悦)  这种操纵(很可能)落入"发现开始"之处、因此您必须关注(您的)时间和注意力。

    通常通过 MCU 的 PWM 输出引脚尝试使用 MCU 的方波输出、该引脚会馈送经过精心编程的、 PWM 占空比的"正弦波序列"-至适当的"滤波级" -然后可能产生-(近)正弦波。   SoundStart 项目很可能(或希望)提供此类详细信息。   减去"正确变化的 PWM 占空比信号"和以下"滤波器"-不纯净和/或不悦的声音-几乎是您希望实现的所有目标。   我尽力"引导你"、但"细节"是你的、因为我在这里的时间(非常)短...

    仔细检查该供应商是否有"音频论坛"。    您可以在论坛的搜索框中输入'Foundstart'。   (在论坛页面顶部... 这样做-我发现了"3次点击"-其中一个是此主题!)   请务必阅读其他两项-它们可能会提供进一步的见解...

    您基于 Windows 的 PC 包含.WAV 文件-我相信有些文件可能会产生"可信赖的纯正弦波-这可能会"帮助并通知"您的开发和测试。    

    祝你一切顺利——我在这里的时间已经结束——“愉快的机会”。

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

    主席先生,

    非常感谢您提供有关您体验的深入见解和深入挖掘的好建议。

    我将尝试通过其他博客进一步探索。

    很高兴在不久的将来收到您的来信!

    再见!!!!