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.

[参考译文] CCS/MSP430-3P-GCC-MSPGCC-TPDE:MSP430G2553

Guru**** 2556600 points
Other Parts Discussed in Thread: MSP430G2553, MSP-EXP430FR5994, MSP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/598666/ccs-msp430-3p-gcc-mspgcc-tpde-msp430g2553

器件型号:MSP430-3P-GCC-MSPGCC-TPDE

工具/软件:Code Composer Studio

 我们在我们的环礁上有一个项目。 在 MSP430G2553中写入存储器接口程序、该程序连接到存储器128K 的 SRAM。MSP430没有 足够的引脚用于地址和数据输入/输出总线。同时、我们如何提供程序所需的时间延迟?

Sam

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

    感谢您发帖。 听起来您有两个问题:1)引脚不足、2)时序控制。

    如果您未设置要使用的外部 SRAM 器件、则可以尝试选择具有内置 SPI 或 I2C 接口的器件、而不是仅使用并行接口-这将有助于解决您的两个问题。 如果您需要使用此 SRAM 器件并且必须使用并行接口、则可以使用 IO 扩展器进行转换、例如使用 SPI 来控制并行线路、而 MSP430上只有几个引脚、 您也可以使用具有更多引脚的更大 MSP430器件。

    对于计时、如果您需要确保某些延迟、例如写入操作之间的特定延迟、则可以通过器件中的计时器来完成。 如果它更多地是写入频率控制、如果您使用 SPI 或 I2C、则可以配置 USCI 通信模块、以便根据器件中的某个时钟创建所需的 SPI 或 I2C 频率。 您可以在 TI Resource Explorer 中找到通用 SPI 和 I2C 示例:dev.ti.com/.../

    您可以在以下其他线程中找到更多信息: e2e.ti.com/.../649280
    e2e.ti.com/.../1308439

    不过、我想知道 SRAM 将如何用于您的应用? MSP430不能像它自己的 RAM 一样直接访问外部 SRAM、虽然你可以为自己创建函数调用来存储数据、但当然、数据会在断电时丢失。 另一种选择是在 MSP-EXP430FR5994 Launchpad 上使用 MSP430FR5994等大型 FRAM 器件-然后、您可以像使用 SRAM 一样使用内部 FRAM、额外的好处是它是非易失性的。

    我希望这能帮助您快速入门!

    此致、
    Katie
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢您的 aswer Katie。
    我们有一些解决此问题的方法。我们在解决方案中使用74HC164和 HEF4014移位寄存器。
    在我们的设计中、我们选择使用 Cypress CYDMX128A16/CYDMX128B16。 这个 RAM 是专用 RAM。 该 RAM 具有两个端口。 两个端口分别为:一个专用的时分复用地址和数据(ADM)接口和一个可配置的标准 SRAM 或 ADM 接口。 这两个端口允许对任何存储器位置进行独立、异步的读取和写入访问。 每个端口都有独立的控制引脚:芯片选择(CS#)、写入使能 x (W#)和输出使能(OE#)。 我们决定使用正确的、并将其作为 SRAM 运行。 同时 RAM 具有锁存操作。
    由于 MSP430G2553上没有足够的引脚、因此我们确定了串行输入和输出的用法。 因为我们需要使用移位寄存器。 为了能够减少激励时间、我们将寄存器的两个部分拆分、其中存储器的每个部分都是8位。 对于串联输入并联输出寄存器、我们选择了74HC164;对于并联输入串联输出、我们使用了4014移位寄存器。 由于我们将所有操作分为两个部分、因此我们需要使用两个寄存器。 总共使用了6个寄存器、其中2个寄存器为并行输入串联输出、4个寄存器为串联输入并联输出。
    在编程的一侧、我们确定了构建三个函数、以将地址写入寄存器、将数据写入两个寄存器、并从寄存器中读取数据。 在 main 函数中,我们控制 RAM 是其他使能和时钟脉冲,我们调用在程序中构建的必要函数。然后,由于我们的程序,实施128K RAM 空间并与我们所选的 RAM 进行通信。

    但我们在时间上有问题。我们如何才能为我们的计划提供必要的时间延迟?

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

    一般而言、MSP430程序中有几种延迟方法。 对于长时间延迟和低功耗应用、通常您会在器件中使用计时器模块、以便在延迟时间到期时产生中断-您可以在 TI Resource Explorer 中找到许多计时器示例: dev.ti.com/.../

    如果您不关心功耗、并且程序在延迟期间不需要执行任何其他操作、则还可以使用命令__delay_cycles (x)执行简单的软件延迟、其中 x 是您要延迟的 CPU 周期数。 例如、如果我想延迟10个 CPU 周期、我会在代码中的延迟点放置一行_delay_cycles (10)。 延迟的时间量取决于您的 CPU 频率 MCLK。 这取决于您在器件中使用时钟系统(BCS+模块)进行的配置。 有关 BCS+模块的更多信息、请参阅用户指南 www.ti.com/.../slau144一章。 在 MSP430G2553器件上、通过将 BCSCTL1和 DCOCTL 寄存器设置为存储在存储器中的校准值、通常可以在程序开始附近配置 MCLK 频率。 您可以在以下 位置找到将 MCLK 设置为不同校准频率的良好示例:dev.ti.com/.../

    此致、
    Katie