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.

[参考译文] MSP430FR2311:一般问题

Guru**** 2393205 points
Other Parts Discussed in Thread: L293D, MSP430FR2311

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/760717/msp430fr2311-general-questions

器件型号:MSP430FR2311
Thread 中讨论的其他器件:L293D

大家好、我要说的是、我对嵌入式系统非常陌生。 我本来可以像其他人一样开始使用 Arduino、但我想真正了解 MCU 的工作原理、所以我选择了 TI 的 MSP430系列。 我已经阅读了大量有关 FR2311的文档、只是对如何以最高效的方式使用 FR2311有一些一般性问题。  

首先、我的最终目标是、  

我希望能够控制两个双向直流电机、通过每个电机的电位计进行速度控制。 它们将通过 L293D IC 进行控制。  

我还需要两个按钮、用于打开或关闭控制某些 LED 的继电器。 我希望通过中断来完成此操作、并且在不使用时使 MCU 处于低功耗模式。

我浏览了提供的一些示例、并注意到它们使用 的是 eCOMP 模块而不是 ADC 的"模拟输入至 PWM 输出"示例。 这是实现这一目标的最佳/最有效方法吗? 或者、唯一的原因是 A。MCU 不包含 ADC (如 FR2000)或 B。代码大小限制。  

我的第一个目标是使用 POT 设置 ADC 或 eCOMP 模块。 正如我在前面所说的、我想用一个电位计双向移动、所以我需要有符号值(对吧?)  

此外、在阅读用户指南时、还有许多不同的采样模式。 哪一个最适合对 POT 进行采样?  

我确信我在继续时会有更多问题、但我确实希望正确解决、我选择 TI 产品的原因是他们的支持。  

提前感谢  

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

    欢迎来到 MSP 生态系统、很高兴看到您在其中潜水! )

    如果我理解、您希望在输入中使用电位计来控制电机速度和方向。 这可以完成、我建议将 ADC 用于输入。 比较器能够很好地告知您的电压是否高于或低于阈值、但不会超过阈值。 在这种情况下、您需要了解更多信息、因此 ADC 测量最有意义。

    ecomp 至 PWM 演示不是电机控制演示、它主要是展示一些模块的示例。

    至于设置、我认为您不需要有符号值。 MSP430FR2311中有一个10位 ADC、其范围为0 - DVcc、即0x00至0x3FF。 根据您的电路和电位计上的电压、只需找到中间点并将其用作内径。 任何高于此值的东西都可以使电机单向旋转、低于此值的任何东西都可以使电机旋转。

    希望这对您有所帮助! 如果您在此过程中有任何具体问题、请告知我们。

    谢谢、
    JD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    啊、明白了。 感谢您提供信息。 后续问题是、找到我的 POT 中立点的最佳方法是什么? 我是否编写了一个程序来将值打印到串行监视器? 或者、我可以如何计算它?
    我还想设置一个"死区"、这样当它达到特定阈值时、它就会关闭。 如何设置这些限制?
    我只想重申一下、我已经学习了一些有关 MSP430系列编程基础知识的课程、但这是我第一次尝试在没有指令的情况下自行实际执行项目。 我真的想学习如何做到这一点、我已经花了无数的时间阅读和上课、现在我的下一步是通过做学习。 除了互联网之外、我没有其他人可以学习、因此感谢你们的帮助。
    最后、不同的采样方法:

    ADC 信号接收器[默认值]-一次性
    将单个通道转换为单个存储器
    缓冲器
    ADC SEQOFCHANNELS -的一次转换
    多个通道进入指定的起始存储器
    每个后续存储器缓冲区中的数据、直到出现
    转换存储在专用于的存储器缓冲区中
    序列结束由存储器的控制寄存器执行
    ADC 重复信号-重复信号
    将一个通道转换为单个存储器
    缓冲器
    ADC 重复 SEQOFCHANNELS -重复
    将多个通道转换为指定通道
    启动存储器缓冲器和每个后续存储器
    缓存、直至转换存储在存储器中
    专用于序列结束的缓冲器
    存储器的控制寄存器
    修改后的位是 ADCCTL1的 ADCCONSEQx
    寄存器。

    我是否应该使用单信道或重复单信道来测量电位计?

    再次感谢您的回复! 期待了解有关 MSP430的更多信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我遇到的另一个问题是、这到底意味着什么?

    interruptMask 是要使能的内存缓冲区中断源的位掩码。

    掩码值是以下任意一项的逻辑 OR:

    ADC 溢出中断-新转换时中断

    将覆盖上一个

    ADC TIMEVERFLOW 中断-当有新的中断时中断

    转换在前一个转换完成之前开始

    ADC ABOVETHRESHOLD 中断-输入时中断

    信号已超出窗口的高阈值

    比较器

    ADC BELOWTHRESHOLD 中断-输入时中断

    低于低电平窗口的低阈值

    比较器

    ADC INSIDEWINDOW 中断-在输入时中断

    信号处于窗口的高阈值和低阈值之间

    比较器

    ADC 完成中断-新转换数据的中断

    存储器缓冲区中

    比如、如何编写它的示例是什么? 在提供的 ADC 示例中、它们具有以下用于设置存储器缓冲器的内容

    //启用内存缓冲器中断
    ADC10_A_clearInterrupt (ADC10_A_base、
    ADC10IFG0);
    ADC10_A_enableInterrupt (ADC10_A_base、
    ADC10IE0);

    突出显示的部分是我有疑问的部分。 如果有人可以向我解释如何从 driverlib 用户指南中提供的信息(粗体信息)中获得突出显示的值。  


    谢谢你

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

    我认为您应该首先从单通道转换开始。 最后、您将执行2个单通道转换、每个 POT 一个。 每次您想在软件循环中测量它时、您只需触发一个新的转换。

    至于寻找中间点、这将取决于你的马戏团和表演演员。 您需要使用 POT 创建电阻器偏差、然后测量来自 POT 的电压输出范围等 该电压范围将与 ADC 读数相结合、因此您可能希望在调试器中或通过终端进行检查、如您所建议。

    假设您的读取是0x00到0xFF、那么0x7F 将是您的中点。 您可以在软件中添加死区。

    我相信在网上有一些电位计控制的演示可以为您提供一个基准。

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

    部分 ADC 寄存器中的突出显示位。 通常可以在数据表或 driverlib 头文件中找到这些位。

    这是来自 MSP430F2311的示例还是不同的 MSP?

    谢谢、
    JD
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我理解它背后的基本概念、但我不知道如何在软件中实现它。 我想我没有足够的经验来了解如何从头开始编写代码。 有人对一个很好的资源有什么建议可供他人学习如何将 C 语言用于 MSP430?
    我所学的所有类主要是从指令中复制和粘贴代码、而不需要进行任何修改。 这有助于我了解 MCU 的工作原理、但就代码而言、我仍在尝试弄清所有这些。
    到目前为止、我已经设置了 ADC、但仍然需要弄清楚如何实际使用它。 我将接受您的建议、尝试先让一个工作、然后再转到两个工作。
    我还将在线查看是否可以找到任何示例。
    感谢您的帮助、我真的很感激!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    这来自 MSP430fr2xx4xx 系列的 DriverLib 示例。 特别是 ADC 外设示例、它们都使用相同的东西。 我明白它在做什么、他们这么做让人感到困惑、也不明白为什么您要选择其中的多个设置。
    我发现了针对 driverlib 的 API 编程人员指南、这对我们有很大帮助。
    再次感谢您的回答