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.

[参考译文] EK-TM4C123GXL:从 MSP430F5529移植时钟功能

Guru**** 2439710 points
Other Parts Discussed in Thread: MSP430F5529, SW-TM4C, TM4C123GH6PM, EK-TM4C123GXL, TIDM-VOICEBANDAUDIO

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/613086/ek-tm4c123gxl-porting-clock-functionality-from-msp430f5529

器件型号:EK-TM4C123GXL
主题中讨论的其他器件:MSP430F5529TM4C123SW-TM4CTM4C123GH6PMTIDM-VOICEBANDAUDIO

您好!

我目前正在为使用 MSP430F5529 Launchpad 和语音频带音频 Booster Pack 的客户开发一种潜在的音频解决方案。 Booster Pack 通过存储在 SPI 闪存中的.wav 文件生成声音。 在 扬声器回放之前、PWM 信号通过低通滤波器和音频放大器发送。 我随附了参考设计.pdf 供您参考。

当前设计支持8、16、22和44kHz 的回放频率。 客户对此功能非常感兴趣、但他们对 tm4c123芯片作为其设计的处理器感兴趣。 因此、我现在正在使用 Tiva 器件获取相同的功能。

第一个任务是按照 MSP430完成的方式初始化 Tiva 的时钟:

我想知道是否有任何有关如何为 Tiva 器件移植此内容的配套资料或支持。

谢谢、

Garrett

e2e.ti.com/.../PWM_5F00_DAC_5F00_Design.pdf

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

    我首先要做的是研究 MSP430示例使用的软件、并确定它们是否使用 MSP430 DriverLib。

    如果是、那么您应该能够为 TivaWare DriverLib 内的多个函数找到匹配的 API、这将简化移植过程、因为您只需确定此时要传入的变量即可。

    无论如何、您都需要熟悉 TivaWare 以处理此问题:www.ti.com/tool/sw-tm4c
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Garrett、

    从我第一次查看帖子以来、您似乎添加了一个图像。

    对于时钟初始化、您不希望使用寄存器级命令、而是使用 TivaWare API。 具体来说、SysCtlClockFreqSet 在本文档的第26.2.2.2节: www.ti.com/.../spmu298d.pdf 中进行了记录

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

    您好、Ralph、

    我已经将 TIVAware 的计时器示例成形到了一个正常工作的原型中。 我目前正在使用80MHz 系统时钟和 PWM 模式下的计时器3以16kHz 的频率向引脚 PB2输出信号。

    但是、接下来、我想让计时器3以4.096MHz 的频率运行、而系统时钟保持在80MHz、 以产生16kHz 的 PWM 信号。 我似乎无法在 driverlib 中找到支持系统时钟这一除法的 API。 我已附上代码片段供您参考。

    谢谢、

    Garrett  

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

    [引用用户="Garrett Mize">但是、接下来、我想让计时器3以4.096MHz 的频率运行、而系统时钟保持在80MHz、 以产生16kHz PWM 信号。 我似乎无法在 driverlib 中找到支持从系统时钟进行此分频的 API。  TM4C123GH6PM 数据表中的主时钟树显示 PWM 时钟只能是系统时钟的分频版本:

    其中 PWM 时钟可以是系统时钟除以1、2、4、8、16、 32或64 (PWM_SYSCLK_DIV_1、PWM_SYSCLK_DIV_2、PWM_SYSCLK_DIV_4、PWM_SYSCLK_DIV_8、PWM_SYSCLK_DIV_16、PWM_SYSCLK_DIV_32或 PWM_SYSCLK_64_DIV_64)。

    考虑到时钟树的限制、我认为最接近所需时钟配置的是:

    /*将系统时钟设置为以外部晶振为基准的 PLL 以66.67MHz 的频率运行。 *
    SysCtlClockSet (SYSCTL_SYSDIV_3 | SYSCTL_USE_PLL | SYSCTL_XTAL_16MHz | SYSCTL_OSC_MAIN);
    
    /*将 PWM 时钟设置为4.17MHz */
    SysCtlPeripheralEnable (SYSCTL_Periph_TIMER3);
    PWMClockSet (TIMER3_base、PWM_SYSCLK_DIV_16); 

    PWM 时钟为4.17MHz、比理想频率4.096MHz 高+1.7%。 不确定该频率错误是否会导致音频应用出现问题。

    [我尚未测试建议的时钟配置]

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Garrett、
    TM4C123上最接近4.096MHz 的频率为4.167MHz (主时钟@66.67MHz 或50MHz)或4.21MHz (主时钟@80MHz)。
    无需为此使用 PWM 外设(或预分频器、GPTM 在 Tivas 中没有预分频器)、只需使用具有适当负载设置的 GP 计时器开启即可。
    这些主时钟中的任何一个也允许非常接近8K、16K、22K 和44KHz 的分频。
    至于主时钟、我知道主时钟最快、可用的"声音分辨率"越多-不确定这是否会影响应用所需的声音质量、但最好是尽快运行芯片。
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用用户="Ralph Jacobi"]……TivaWare API。 具体而言、SysCtlClockFreqSet[/引号]

    虽然不是非常清楚-供应商海报使用"4C123"、因此必须选择"SysCtlClock"函数来支持它-而不是4C129。

    没有提到所需的频率精度-不包括我提供的(关键)指导"

    • 有(现在)个"可调振荡器"-可以"拨入"所选频率 (可能会增加尺寸和成本)
    • Fire/I 曾多次进行过"测试和封装"各种 xtals 和 xtal osc、从而可以"更好地匹配"所需的频率。   (与 xtal 供应商的一些咨询证明很有用)   

    "4.096MHz"的作用是什么-这是未声明的或我的(多个)读取"缺失?"

    一如既往-"缩写"细节-延迟和阻碍指导...  

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

    [引用 user="CB1_MOBIST"] 进一步-"4.096MHz"的作用是什么-这种情况没有说明、或者我的(多个)读取"错过了?"应用程序正在回放以16KHz 采样的8位音频。

    PWM 输出通过低通滤波器来构建 DAC。

    4.096MHz PWM 时钟背后的原理是音频采样率为16KHz 的256倍、因此当 PWM GPTMTnILR 加载值设置为256时、8位音频采样值可写入 PWM GPTMTnMATCHR 匹配值。

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

    切斯特、

    感谢您(快速启动和精确)成为越来越多的"商标!"

    @公司/我对音频采样率有"一般意识"、但可能会选择其他采样率、因此 IIRC 更高的采样率被"行业领导者"所控制。

    该帖子未提供精度、响应速度等目标 因此会提出(许多)个问题...   (使用"可调振荡器"需要(部分)指示 所需的频率精度-但未提供任何指示!)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在这种情况下、以更高的分辨率播放时、应用程序是否还需要256 * 44KHz?
    在 TM4C123上生成精确的11.264MHz 信号变得越来越困难...
    自从我和 MSP430玩游戏以来、已经有很多年了、但他们能做这样的神奇吗? 如果我没有弄错的话、他们的主时钟为16MHz 和20MHz。。。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    [引用 user="Bruno Saraiva">在这种情况下,应用程序在以更高的分辨率运行时是否还需要256 * 44KHz?是

    [引用用户="Bruno Saraiva">自从我使用 MSP430以来、已经有很多年了、但他们能做这样的神奇吗? 如果我没有记错的话、他们的主时钟为16MHz 和20MHz。。。。。。。。MSP430锁频环(FLL)允许将系统时钟频率设置为32768Hz 晶振的整数倍。 与 TM4C123从 400MHz 的内部 PLL 频率中进行分频的方法相比、该方法可更好地选择时钟频率。

    [引用 USER="Bruno Saraiva]TM4C123上生成精确的11.264MHz 信号变得越来越困难...另一种方法是将 TM4C123系统时钟和 PWM 时钟频率设置为80MHz、但将8位音频样本重新缩放到256 以外的 PWM GPTM Timer n 间隔负载。 例如

    1) 1)对于16 KHz 的8位音频:

    a)将 TM4C123系统时钟和 PWM 时钟频率设置为80MHz。

    b)将 PWM GPTM Timer n 间隔加载设置为5000 = 80 MHz/16 KHz。 这是一个精确的整数除法。

    c)将 PWM GPTM Timer n 匹配设置为((8位音频值)* 5000)/256。

    2) 2)对于44100Hz 的8位音频:

    a)将 TM4C123系统时钟和 PWM 时钟频率设置为80MHz。

    b)将 PWM GPTM Timer n 间隔加载设置为1814 =(80MHz/44100Hz)的整数值。 这会产生44101.43 Hz 的回报频率或+0.003%的误差

    c)将 PWM GPTM Timer n 匹配设置为((8位音频值)* 1814)/256。

    对于2c)和2c)可以创建一个256条目的循环表、用于将文件中的8位音频样本转换为要写入 PWM GPTM Timer n 匹配寄存器的值、从而避免即时执行重新缩放计算。

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

    所有好的和进一步的信息-"帮助者"的时间/努力/想法似乎超过了发起者的时间/努力/想法。

    [引用 USER="Chester Gillon"] MSP430锁频环(FLL)允许将系统时钟频率设置为32768Hz 晶振的整数倍[/引用]

    事实上、这种频率如此低的"向上扩展"确实提供了"更精细的最终频率"。    但是-这并不是没有折衷 (也许值得提及)-最明显的是 xtal 频率中的任何"变化/漂移"-得出(同样)上标"乘因子"-在频率中产生"大"误差的可能性!   还应注意是、温度、电压、xtal 老化的任何变化-也会影响频率精度和稳定性-由于该乘法、再次"放大"。  

    因此、"实际"频率"标准(即精密振荡器-甚至是那些带有"烤箱"的振荡器)更有可能从更高的频率"降低"-因为"频率分频"具有通过"乘法"实现的"降低"频率误差和/或漂移-而不是"混叠"误差的效果。

    很久以前(希望今天不再继续)顶部座舱 Ham 接收器包含100KHz (可调)振荡器、以便(部分)提供频率的二次测量。   在20米 Ham 频带的情况下-该 xtal freq。 乘以140 (以及任何误差/漂移/其他等) -乘法的范围降低了哪个频率(精度和稳定性)...

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

    [引用 USER="CB1_MOBILE]*事实上、这频率如此低的"向上扩展"确实提供了"更精细的结束频率"。    但是-这并不是没有折衷 (也许值得提及)-最明显的是 xtal 频率中的任何"变化/漂移"-得出(同样)上标"乘因子"-在频率中产生"大"误差的可能性!  [/引述]除了平均频率误差外、MSP430 FLL 还会在时钟上引入短期抖动。  这是因为 MSP430 UCS 模块的 FLL 通过在两个频率之间切换来稳定 DCO 输出:fDCO 和 fDCO+1 (FLL 调制器混合两个频率来产生 DCO 时钟)。

    [引用 USER="CB1_MOBIT]*还应注意的是、温度、电压、xtal 老化的任何变化会影响频率精度和稳定性-由于该乘法、再次"放大"。  [/引述]同意。 但是、并非所有应用都需要相同的频率精度。 在这种情况下、在这个重放采样音频线程中的应用中、例如语音录制、在音频不再被人类听众识别之前、有多少频率错误?

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

    [引用 user="Chester Gillon">并非所有应用都要求相同的频率精度... 例如 、重放采样的音频、说录音、在音频不再被人侦听之前、有多少频率错误?

    完全正确!   我(之前)的观点是:"缺少(需要的)关键规格"-(以某种方式)不会将其纳入发起人的过账中...  请注意、(供应商)海报确实提供了某些"详细信息"、但大部分内容不在他的主要询问要点描述的范围内。   (即生成具有足够精度和稳定性的频率-以产生"满意"的结果。   ("满意"的定义奇怪!)

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

    [引用用户="Chester Gillon"]

    1) 1)对于16 KHz 的8位音频:

    a)将 TM4C123系统时钟和 PWM 时钟频率设置为80MHz。

    b)将 PWM GPTM Timer n 间隔加载设置为5000 = 80 MHz/16 KHz。 这是一个精确的整数除法。

    [/报价]

    或将其设置为255。 这使得对结果的滤波更加容易、并可保留8位负载。 然后在16kHz 时重新加载。 您确实会得到每个样本的非整数 PWM 周期数、但滤波效果很好、即使它小于16kHz PWM 所需的周期数。 由于滤波减少、我希望您实际上可以提高保真度。

    即使这样、16kHz 查找也不会特别困难。 对于这种情况、重新扫描样本的计算不会产生太多开销。

    Robert

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

    您的回答为我提供了一些宝贵的见解。 但是、我有几个问题。 本练习的目标是向客户演示16kHz 的音频播放。 MSP430上实现的方法使用4.096MHz 时钟来产生8位16kHz 音频回放。 我只是想尽可能地重复这一点。 目前没有严格的误差规格。

    这种方法是使用 TM4C123G 的 PWM 定时器模式还是 PWM 模块?

    2.除了我的现有代码之外、是否还会添加这两行 PWM 时钟、或者替换它? 我认为我已经启用了计时器3、但仍然希望它在引脚 PB2上输出。

    本练习的目标是向客户演示16kHz 的音频播放。 MSP430上实现的方法使用4.096MHz 时钟来产生8位16kHz 音频回放。 我只是想尽可能地重复这一点。 目前没有严格的误差规格。

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

    我想知道您是如何以4.21MHz 的频率到达的? 我相信终端客户会希望尽快(80MHz)运行芯片、因此这将是他们演示的理想配置。 但是、我对4.21MHz 的来源有一些了解。 我当前以80MHz 时钟运行、并将负载设置为5000、这样我可以播放16kHz 的频率。

    谢谢、
    Garrett
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Garrett、
    这是使用计时器上最充足的整数加载进行除法的结果。
    8000000000 / 19 = 4210526
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    很抱歉、我在星期五下午发布后不活动。 我在城外和家人度过了愉快的周末。

    至于您对规格的问题、本练习的目标是以16kHz 的频率向客户演示音频播放。 他们希望尽可能的最低回放频率、以获得最大的 SPI 闪存空间、并希望芯片以尽可能快的 AS (80MHz)运行。 在 MSP430上执行了演示代码后、16kHz 被认为是可接受的最低回放音质

    MSP430上实现的方法使用4.096MHz 时钟来产生8位16kHz 音频回放。 PCM 波形与加载为0xFF (255)的加载计数器进行比较。 一旦达到匹配值、输出 PWM 被驱动为低电平、直到下一个时钟周期开始。 我只是想尽可能地重复这一点。

    为了获得"满意"的结果、我希望在系统时钟运行频率尽可能接近80MHz 的情况下以16kHz 的频率回放一个.wav 文件。 在我尝试建立一个工作演示以进行构建时、目前没有严格的错误规范。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    布鲁诺

    我明白了。 我想一个更好的问题是、使用什么 driverlib API 将计时器3从系统时钟中分频、然后分配加载并匹配? 当您说只使用正确的负载值进行分频时、我有点困惑。

    //80MHz 系统时钟
    ROM_SysCtlClockSet (SYSCTL_SYSDIV_2_5 | SYSCTL_USE_PLL | SYSCTL_OSC_MAIN | SYSCTL_XTAL_16MHz);

    ///////////////////////////////////
    定时器3 = 80MHz/19
    ///////////////////////////////////

    ulPeriod = 255;
    ROM_TimerLoadSet (TIMER3_base、timer_A、ulPeriod); // 4.21MHz/255 = 16.5kHz 回放

    最后、我希望递减计数器的装载值为0xFF (255)、以便与之进行比较。 非常感谢您抽出宝贵的时间为您提供帮助。

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

    我一定愿意提供进一步的帮助! 但是、我首先需要声明、我的音频体验仅限于尽可能收听逐行摇滚、并最终达到一些目标... 这一点都不能帮助将 wav 文件转换为可闻空气波形...

    鉴于我了解一些模拟音频概念、但 PWM 的使用只是"我知道存在的东西"、这里的问题可能会比较天真... 无论如何、让我们来完成:

    -WAV 文件包含什么内容? 频率/强度序列的某种二进制表示? (这可能太多了、无法在此处解释、谷歌搜索可能是更好的来源-如果是这样、请随意跳过)。

    -我假设您的输出是 PWM 信号、对吧? 周期是固定的、仅变化占空比吗? 还是两者都是可变的? 信号配置更改的频率(每秒16000次、或每秒16000 x 256次?) 也许您可以在此处绘制输出? 我相信这些信息对您来说是显而易见的、也是基本的信息、虽然这里的几张海报对将 TM4C 计时器推向极限有着很好的了解、但似乎没有多少人在探索声域...

    不太相关、但如何获取"wav 音频字节"? 您是否在 RAM 缓冲器中有它们? 您是否管理了从任何外部存储器到 MCU RAM 的传输(或者它实际上是否在 MCU 中?)。

    此致

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

    布鲁诺

    我感谢您的诚实、这也是我面临的一项新挑战、我不介意与您一起思考。 音频播放当然是最终目标。 但是、我首先要了解如何在 Tiva 上以类似的方式设置时钟以生成简单的 PWM 输出。 我无法理解如何使计时器3以4.096MHz 左右的频率运行、同时利用255的加载值来实现16kHz 回放。

    WAV 文件通常是未压缩的音频文件、它们以 PCM 格式(0和1)存储音频位流。 当前的 MSP430解决方案一次将.WAV 的8位段作为数字、并将该"匹配值"与"加载"值进行比较。 当匹配被命中时、输出 PWM 信号被驱动为低电平、直到载入下一个时钟周期/8位。 如果这还不够、快速在线搜索可以提供深入的信息。

    您是正确的、PWM 是输出、它被传递到低通滤波器以产生正弦波音频。 是的、周期将保持固定、我只想改变占空比以改变间距、声音等 在一个完整的"加载"计数/周期内采集一个8位样本。 这是我提供的当前代码的输出。

    -MSP430 SPI 闪存中加载了声音文件。 然后、CPU 从 spiflash 读取数据、向计时器中的 CCR 提供样本、以生成 PWM 输出。 我还没有用 Tiva 做过这么远的事情。 我已经能够产生16kHz PWM 输出并手动改变占空比、但是这是在定时器3脱离系统时钟(80MHz)运行时实现的。 我正在尝试了解如何将计时器3配置为4.096MHz、以便在继续执行其他操作之前、我可以使用255的加载值。

    谢谢、

    Garrett

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

    [引用用户="Bruno Saraiva"- WAV 文件包含什么内容?

    wav 文件只是强度与时间间的关系。 如果您在"scope (范围)"上显示了麦克风输出、则 wav 文件中的值将是这样的。

    [引用 user="Bruno Saraiva"-我假设您的输出是 PWM 信号、对吧? 周期是固定的、仅变化占空比吗? 还是两者都是可变的? 信号配置更改的频率(每秒16000次、或每秒16000 x 256次?) 也许您可以在此处绘制输出? 我相信这些都是显而易见的基本信息、虽然这里的几张海报对将 TM4C 计时器推向极限有着很好的了解、但似乎没有多少人会在音频领域徘徊...[/quot]

    您对 PWM 还有什么看法? 您是对其进行滤波并将滤波后的信号传递到音频放大器电路、还是直接运行 D 类放大器? 这两种情况都可能会因更高的 PWM 频率而受益、但细节很重要。

    Robert

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

    [引用 USER="Garrett Mize"]正确的是,PWM 是传递到低通滤波器以产生正弦波音频的输出。 [/报价]

    您的滤波器的截止频率是多少? (假设 PWM 为16kHz、我会在2kHz 左右产生危险)

    Robert

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

    e2e.ti.com/.../2703.PWM_5F00_DAC_5F00_Design.pdfHiRobert、

    在扬声器上输出之前、输出 PWM 将通过低通滤波器和音频放大器进行推送。 我随附了参考设计文档、其中包含音频 Booster Pack 上使用的器件。

    正如我告诉 Bruno 的那样、我目前只是在引脚 PB2上使用逻辑分析仪来查看在 Tiva 上创建的 PWM。 当时钟配置正确后、该引脚最终将用于将信号输出回升压器。

    谢谢、

    Garrett

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

    [引述 USER="Garrett Mize">输出 PWM 在扬声器输出之前通过低通滤波器和音频放大器被推送。 我随附了参考设计文档、其中包含音频 Booster Pack 上使用的器件。[/quot]

    好的、一个简单的~3.7kHz 单极 RC 低通滤波器(它们依赖第二级进一步滤波)。

    我会放弃16kHz 的要求。 PWM 频率越高、传输噪声越小(滤波器的效率越高)。 可能会有一些拾取、但匹配16kHz 会带来问题、而微时钟会导致拾取问题、这种可能性很小。

    总的来说、我没有理由保持16kHz。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    有趣的是了解"什么是 wav 文件"... 然后、我倾向于同意16kHz 不是 TM4C 的选择...
    波形文件是否具有某种标准标头、该标头指示其记录频率是多少?
    鉴于 TM4C123可以非常轻松地以每秒16000次的速度更改 PWM 占空比、我假设在 PWM 输出上采用更精细的分辨率将是"简单的数学运算"、 在正确的时间到来时、仍在改变"到下一个强度水平"-这是否合理? 当然、对于模拟滤波器来说、要好得多!
    我认为最佳输出频率将受到以下因素的影响:
    -滤波器特性和
    -根据什么是"合理"的 PWM 设置、其中256个等间隔电平将由80MHz 时钟管理...
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我明白你的观点。 16kHz 的要求源于客户希望通过尽可能最小的文件来最大限度地增加内存空间。 因此、16kHz 是听起来可以接受的最低频率。

    您认为22kHz 这样的频率会更好吗? 他们对 CD 质量的回放不感兴趣,只是简单的语音回放。

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

    [引用 user="Bruno Saraiva"]波形文件是否具有某种标准标头,该标头说明其记录频率是多少?

    我认为、我对细节不了解很多、但我确信、格式会记录在某处。

    [引用 user="Bruno Saraiva">我认为最佳输出频率将受到以下因素的影响:
    -滤波器特性和
    -根据什么是"合理"的 PWM 设置、其中256个等距电平将由80MHz 时钟管理...

    非常多。 在电路板上使用简单的 RC 滤波器时、在较高频率下使用的运算将更好、因此从这个角度来看、越高越好。

    PWM 应自动重新加载、因此不会产生开销。

    因此、第一遍、我将 PWM 设置为8位占空比、并在采样率下更改重新加载值。 您可以在"示波器"上测量失真。 相反、我怀疑输出中相位抖动引入的失真将小于使用16kHz PWM 引入的失真。

    我们只会谈论电话线路语音质量、因此不会将要求引入音频池领域。

    Robert

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

    [引述 user="Garrett Mize">我明白您的观点。 16kHz 的要求源于客户希望通过尽可能最小的文件来最大限度地增加内存空间。 因此、16kHz 是听起来可以接受的最低频率。 [/报价]

    合理的选择。 尤其是在嘈杂的环境中。

    [引用用户="Garrett Mize">您认为22kHz 这样的频率会更好吗? 他们对 CD 质量回放不感兴趣,只是简单的语音回放。[/引述]

    保持采样率不变。 只需更改 PWM 频率。 该3.7kHz 滤波器可在任何情况下将您的声音质量限制为语音(您的电路板文档提到了这一点)。

    PWM 频率可上升至几百 kHz。 我会检查它是否能够实际驱动滤波器达到满量程、但我要从简单的8位占空比范围开始、只需让频率达到任何结果即可。

    Robert

    ~、000、000/256 μ s = 312kHz

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

    [引用用户="Garrett Mize]1. 这种方法是使用 TM4C123G 的 PWM 计时器模式还是 PWM 模块?

    2.除了我的现有代码之外、是否还会添加这两行 PWM 时钟、或者替换它? 我认为我已经启用了计时器3、但仍然希望它在引脚 PB2上输出。
    [/引用]我只是在初始建议如何使 PWM 时钟频率接近原始 MSP430设计所使用的频率、而没有完全考虑如何将时钟配置放置在代码中。

    PWM 计时器模式的使用方法与 PWM 模块、鉴于该设计仅需要单个 PWM 输出、 PWM 计时器模式应已足够。 PWM 计时器模式可在引脚 PB2上输出、而在 EK-TM4C123GXL 上该引脚与 TIDM-VOICEBANDAUDIO 预期的 PWM 输入相匹配。

    根据 Robert 的建议、PWM 周期不需要为16KHz (音频采样频率)。 相反:

    1) 1)将 CPU 时钟频率和计时器模块设置为80MHz 的最大值。

    2) 2)使用 PWM 周期设置为256个时钟的定时器3。

    3)在16KHz (音频采样频率)时、使用下一个8位音频采样值更新定时器3 PWM 占空比。 PWM 占空比的更新将大约为采样音频速率的19.53倍、这将有助于电路板上的 RC 滤波器消除 PWM 谐波。

    通过从采样的1KHz 正弦波开始、您可以将输出与图21进行比较。 在基于 MSP430的设计中、在16kHz 回放频率下具有1kHz 正弦波。

    设置 PWM 占空比时、可能需要偏移设置的匹配值、以允许连续低 电平或连续高电平输出;请参阅 图11-6。 CCP 输出、GPTMTnMATCHR > GPTMTnILR、 图11-7。 CCP 输出、GPTMTnMATCHR = GPTMTnILR 和 图11-8。 在 TM4C123GH6PM 数据表中、CCP 输出、GPTMTnILR > GPTMTnMATCHR。

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

    [引用用户="Garrett Mize">您认为22kHz 这样的频率会更好吗? 他们对 CD 质量回放不感兴趣,只是简单的语音回放。[/引述]

    如果音频文件已以16KHz 的频率录制、我会尝试将其录制到多个频率。 您只需重复相同的 PWM n 次、其优点是滤波器中的噪声更小、但不会增加存储器空间... 可能是64kHz?

    如果要记录音频文件、则需要进行更认真的分析:什么是真正的最佳模拟值、而 MCU 容量... 但在这种情况下、内存会相应增加。

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

    *喜欢*

    [引用 user="Chester Gillon"]设置 PWM 占空比时,可能需要偏移设置的匹配值,以允许连续输出低 电平或连续高电平;[/引用]

    可能不是音频、所以没有直流组件。 削波以消除完整的导通和完全关断值可能不明显。

    很好、您需要它来实现"完整"解决方案、但这可能无关紧要。

    Robert

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

    [引用 user="Bruno Saraiva"]如果音频文件已经以16KHz 的频率录制,我会尝试将其录制到多个频率。

    我只想使用8位样本大小(或其中两个的幂)。 我认为将 PWM 与采样率相匹配没有太大的优势(请记住、有一个大的低通滤波器)。

    [引用用户="Bruno Saraiva"]可能是64kHz?

    我想312.5kHz

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    哦,很有道理!!!
    只需使用支持8位分辨率的最快 PWM 即可。 80000000/256=312500。
    然后使用以记录文件频率运行的第二个计时器。 第二个计时器负责将 PWM 匹配值更改为新的音频电平。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    宾果游戏。 您需要验证性能、但它快速、简单、而且开销极小。

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

    如果有用、我刚才注意 到 TivaWare_C_Series-2.1.4.178在 examples\boards\dk-tm4c129x\drivers\sound.c 中包含一个驱动程序、用于 使用 PWM 计时器模式在 DK-TM4C129X 上生成声音。

    它可以为 EK-TM4C123GXL 上的驱动程序提供合适的起点(我尚未检查任何 TM4C129特定 TivaWare 调用的 sound.c)。