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.

[参考译文] 编译器/MSP430FR5994:具有 BOOSTXL-AUDIO 问题的 MSP430内在函数

Guru**** 2534260 points
Other Parts Discussed in Thread: BOOSTXL-AUDIO, MSP430FR5994, MSP-EXP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/627129/compiler-msp430fr5994-msp430-intrinsics-with-boostxl-audio-questions

器件型号:MSP430FR5994
主题中讨论的其他器件:BOOSTXL-AUDIOMSP-EXP430FR5994MSP430WARE

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

我目前正在将 MSP430FR5994 Launchpad 与 BOOSTXL-AUDIO BoosterPack 配合使用以评估 BOOSTXL-AUDIO 录制播放示例项目、并对 "_data20_read_short"内在函数有一些疑问。 阅读《MSP430优化 C/C++编译器指南》时、列出了许多类似的内在函数(例如 _data16_read_addr、 __data20_write_char 等)。 我假设这些函数的目的是将数据传入和传出 FRAM、这是正确的吗? 它们是访问 FRAM 所必需的、还是只是使用更少的时钟周期? __data16和__data20前缀表示什么? 谢谢。

我还想注意的是、该工程不会通过 Resource Explorer 导入到 CCS 中。 下载 MPS430Ware -v:3.80.01.01并导航至 Launchpad 的 BOOSTXL-AUDIO Record Playback 项目后、CCS 将显示以下消息:

无法获取/examples/boards/MSP-EXP430FR5994/MSP-EXP430FR5994_Software_Examples/Firmware/Source/BOOSTXL-AUDIO_RecordPlayback_MSP430FR5994/CCS/BOOSTXL-AUDIO_RecordPlayback_MSP430FR5994.projectspec

开发工具/MSP-EXP430FR5994中的其他演示也是如此、即使实际文件路径看起来一致(C:\ti\msp430ware_3_80_01_01\examples\boards\MSP-EXP430FR5994\MSP-EXP430FR5994_Software_Examples\Firmware\Source\MSP430BOSTXL_RecordPlayback)。 我可以通过使用 Project -> Import CCS Projects 导航到目录来解决这个问题、但对于其他用户来说、这可能值得调查。

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

    让我首先谈谈简单的问题。 尝试导入示例时收到的错误是当前正在解决的已知问题。 此外、该问题似乎仅适用于 MSP430Ware v3.8。 因此、如果您使用 v3.6、则不应遇到此错误。

    现在介绍内在函数。 _data20_read/write 和__data16_read/write 函数分别用于访问20和16位内存空间。 MSP430FR5994是一款16位器件、但具有256KB FRAM。 为了能够使用这么大的存储器空间、一些地址必须是20位数字(0x10000 - 0x43FFF)。 无法使用正常的16位指令访问这些地址、因此提供了内在函数__data20_read/write 指令。 还应注意的是、无需使用__data16_read/write 函数来访问低16位内存空间、但需要使用__data20_read/write 函数来访问高20位内存空间。 我希望这一点能有所澄清、如果您有任何疑问、请告知我。

    此致、
    Caleb Overbay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的回复;我有一个后续问题要问您。 这里的原始帖子是在我有 launchpad 时发布的、但仍在等待接收 BOOSTXL-AUDIO BoosterPack。 我从那以后就收到了、并尝试运行录制播放演示、但它似乎不起作用。 我可以对 LaunchPad 进行编程、按钮和 LED 的行为如文档中所述。 但是、当尝试播放录制的音频时、扬声器只会产生周期性的咔嗒声、而不管录制的内容如何。 我认为扬声器可能已损坏、因此我尝试通过耳机播放、并通过耳机听到相同的咔嗒声(音量旋钮控制了咔嗒声的音量)。 我验证了跳线是否放置在 SPI_DAC 接头上、以及0欧姆电阻是否放置在默认配置中。 这是可以轻松解决的已知问题吗? 或者、硬件是否看起来受到某种程度的损坏? 如果是、是否有退货的联系信息(我找不到任何信息)?

    我将很快完成一些基本硬件调试(检查 SPI 信号、DAC 波形等)、如果问题不明显、则提供其他信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、  

    我不知道 BOOSTXL-AUDIO BoosterPack 有任何已知问题。 您是否对默认代码进行了任何更改、或者是否对 《BOOSTXL-AUDIO 音频 BoosterPack 插件模块用户指南》中的说明进行了任何偏离? 您是否在调试该问题方面取得了任何进展?

    此致、  
    Caleb Overbay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我没有对指令进行任何代码更改或偏差。 在检查电路板时,我验证了在回放过程中是否正确生成了 SPI CLK、CS 和 MISO。 但是、无论记录什么、MISO 只输出0x3FFF 或0x0000 (基本上14位轨到轨)。 我认为这可能表示麦克风放大器电路存在问题、但录制时麦克风 PWR 和 MIC 输出都存在且有效(MIC 输出看起来像典型的音频波形并已正确缩放)。 我尝试在 CCS 中查看数据记录缓冲区中的数据、但它们只是在录制音频后读取所有零。 我怀疑这与之前提到的内在函数需要访问这些存储器位置有关、因此无法在调试中作为表达式进行访问。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、  

    您应该能够通过表达式窗口正确查看数据记录器缓冲区的内容、而不管其在 FRAM 中的位置如何。 作为双重检查、您可以通过内存浏览器查看数据记录器缓冲区、并查看它是否与您在"Expressions"窗口中看到的内容相匹配。 如果缓冲区仍然为零、则麦克风可能无法正确录制音频。 在这种情况下、您是否可以尝试通过连接到耳机插孔的麦克风而不是板载麦克风来录制音频? 这将让我们知道麦克风是否出现故障。 让我知道结果、我们将在那里工作。  

    此致、  
    Caleb Overbay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我检查了表达式 watch 和内存浏览器、两者都报告为全零。 目前我没有耳机可供测试、但通过查看 BOOSTXL-AUDIO 的原理图、可以看到耳机麦克风和板载麦克风都通过了相同的麦克风放大器电路。 我使用示波器检查了 MIC 输出(即 launchpad 上的 ADC 输入)、并验证了录音时是否存在音频信号。 板载麦克风似乎工作正常、因此如果损坏、我认为它将位于 ADC 输入端。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ben、

    从上面所述的内容来看、这可能是 ADC 的一个问题。 通常、当 ADC 仅返回0或完整读数时、我会对基准电压产生怀疑。 在这种情况下、应将 AVcc 和 AVss 分别设置为 VR+和 VR-。 如果电路板正确供电、那么您的 ADC 基准也应该正确、但值得检查 AVCC 以确保其处于正确的电平。

    您是否在调试此问题方面取得了进一步的进展?

    此致、
    Caleb Overbay
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    此后、我使用外部麦克风/耳机测试了该板、但它仍然产生相同的结果。 我已经验证了 AVcc 和 AVss 是否正确、但您似乎是要将它们路由到 Vref+和 Vref-。 对于该板、这些引脚当前用于 LED 1和 LED 2。 设置 REFOUT 是否会自动覆盖 GPIO 输出设置?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Ben、

    当选择 AVCC 和 Avss 作为 ADC 基准电压时、无需再路由到 Vref+和 Vref-引脚。 连接在器件内部进行。 您是否有第二个可以测试 BOOSTXL-AUDIO 的 MSP-EXP430FR5994 Launchpad?

    如果没有、您能否使用 TI Resource Explorer 中的 msp430fr599x_ADC12_11.c 示例在 BOOSTXL-AUDIO 板未断开连接的情况下测试 ADC? 此示例类似于 BOOSTXL-AUDIO Booster Pack 的演示代码的工作方式。 我建议将本示例代码中的 ADC 设置更改为 BOOSTXL-AUDIO 代码中使用的相同设置、以便使用相同的通道和设置。 然后为 ADC 输入提供不同的电压、并检查转换后的值是否符合预期。 这将让我们知道 ADC 是否工作不正常以及是否可能损坏。 如果您有任何疑问、请告诉我。  

    此致、  

    Caleb Overbay

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

    我没有第二个 LaunchPad 可供测试。 有趣的是、您建议的示例项目在用于麦克风输入的同一 ADC 通道上工作、就像广告中所说的那样。 考虑到 ADC 输入似乎正常工作、并且音频信号出现在录制音频时的示波器上、我不确定问题可能是什么。 我尝试使用全新安装的 CCS7从另一台 PC 再次加载 BOOSTXL-AUDIO 示例项目、并重新导入该项目、但问题仍然存在。

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

    我想为您提供有关此内容的快速更新。 我发现了导致此问题的错误、我正在制定解决方案。 它有点复杂、因此需要一些时间。 我将在明天向您提供更新以及问题的修复和说明。 感谢您的耐心!

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

    您好 Ben、  

    我已为该项目附加了一个新的自定义链接器文件。 问题的根本原因是数据记录器缓冲区被放置在受 MPU 写保护的存储器部分中。 为解决此问题、我在链接器文件中定义了一个新的存储器部分、该部分称为"音频"、该部分从 FRAM2 (0x10000)开头开始。 然后、我使用 MPU 将器件存储器分段为3个段。

    段1包含持久性变量、长度可能因持久性存储器中变量的大小而异。 段1还具有读取和写入权限。 段2包含代码、从段1的末尾开始、到 FRAM2的开头(0x10000)结束。 段2具有读取和执行权限、但无法写入。 最后、段3包含录制的音频数据、从 FRAM2 (0x10000)开头开始。 段3具有读取和写入权限。  

    所有这些分段都是在链接器文件中完成的。 除了替换项目中的默认链接器文件之外、您还需要将 audio_collect.c 文件中的 dataRecorded 缓冲区的定义更改为:

    #pragma DATA_SECTION (dataRecorded1、".audio")
    uint16_t dataRecorded1[samples_length]={0};
    
    #pragma DATA_SECTION (dataRecorded2、".audio")
    uint16_t dataRecorded2[samples_length]={0};
    

    这将导致这些缓冲器被放置在新定义的包含 MPU 段3的".audio"段中。 在进行这些更改后、一切都应该正常工作。 导致此错误的原因是、以前的错误已修复、导致 MPU 被禁用。 我将在我的末尾采取措施、在将来的更新中永久修复此问题。 如果您有任何疑问、请随时提问。  

    e2e.ti.com/.../lnk_5F00_msp430fr5994.cmd

    此致、  

    Caleb Overbay

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    根据您的最新建议、我能够让 Launchpad 与 BoosterPack 一起工作。 回放功能中似乎仍然存在一个错误,导致录音非顺序播放。 例如、如果我录制自己说"1、2、3、4、5、6、7、8"、则回放的音频为"1、暂停、5、6、2、3、4"。 但是、此时我对硬件充满信心、可以继续我的项目。 如果您对此问题有任何进一步的见解、请告诉我。 谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Ben、

    很高兴听到至少有部分工作正常。 我遇到了这个回放问题、但添加自定义链接器文件似乎可以在初始测试时缓解这种问题。 我将详细介绍并告诉您我发现的内容。 我还能为您的项目提供什么帮助吗?

    此致、
    Caleb Overbay