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:如何一次读取/写入多个引脚

Guru**** 2390755 points
Other Parts Discussed in Thread: MSP430FR5994, ENERGIA, MSP-EXP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1026213/msp430fr5994-how-to-read-write-to-multiple-pins-at-once

器件型号:MSP430FR5994
主题中讨论的其他器件: EnergiaMSP-EXP430FR5994

我有多路复用设计、我希望一次读取/写入多个端口和引脚。 例如、在 MSP430FR5994、P1.2、P6.1、P6.0上、 P6.2、P1.3、P5.2、P6.3、P7.1全部在电路板的左侧组合在一起。 我有一组24 (8x3)个霍尔开关、我想将它们全部插入。 (我还将在电路板右侧的多个其他引脚上设置另一组多路复用器)。 是否可以这样编写代码:

(请注意、我正在使用 Energia、但我也可以将代码移到 CCS 中)

//在设置中,关闭所有这些引脚
LEFT_SIDE 引脚= B0000000;
CurrentValue = B0000000;

//在我的循环中,从所有引脚读取数据
LeftData = LEFT_SIDE;

//查看是否有更改
if (CurrentValue > LeftData)

   //执行某些操作...

不知道是否可以一次性从不同的端口读取/写入多个引脚、或者我是否必须单独写入所有引脚、并检查每个引脚是否已更改。 如果我将一组引脚读取为块而不是单独读取、那么对读取/写入速度也很好奇。 提前感谢。

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

    您一次不能使用不同的端口、但可以通过 PXOUT 寄存器对8位端口进行写入。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="301692" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1026213/msp430fr5994-how-to-read-write-to-multiple-pins-at-once/3793321 #3793321"]您无法一次执行不同的端口,但可以使用 PXOUT 寄存器写入8位端口。

    F2xx 系列为8位、F5xx/6xx 和 FRAM 系列为16位(端口被分组 P1和 P2是 PA、P3和 P4是 PB...)。  

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

    谢谢、我担心这一点。 在我的设计中,我可以使用 PC (端口5和6,即引脚6.1、6.0、6.2、5.2、6.3、5.7、 5.3和5.0)。  对我的另一半多路复用器的 PB 执行同样的操作。 然后、在我的电路板上让导线按不同方向走线、并对其读取/写入16位。 除了较短的代码(如速度)之外、还有其他优势吗? 或者、我是否也只是专门读取和写入每个引脚?

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

    您好、Travis、

    在速度/性能方面可能有优势。 FR5994器件中的端口可按字节宽(一次只能访问上部或下部字节)或字宽端口(所有16位均可访问)进行访问。  具体读取/写入 每个引脚可能会导致更多的访问。 有关详细信息,请参阅《用户指南》第12.1节“数字 I/O 简介”。

    谢谢、

    王国新

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="494025" URL"~/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1026213/msp430fr5994-how-to-read-write-to-multiple-pins-at-once/3793379 #3793379"]除较短的代码(如速度)外,还有其他优势吗?

    MSP430最快端口写入(一次1位或16位)需要3个 CPU 周期、而最快端口读取(一次1位或16位)需要2个 CPU 周期、因此使用较短的代码会显著提高速度、 在本例中、我将介绍更复杂的 PCB 布线。

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

    我同意 Zrno。 无法同时读取所有这些不同的端口通道。 您必须将每个交换机物理路由到同一端口中的通道、然后使用指令读取整个端口。

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

    感谢大家的评论。 我将对其进行返工、使其在电路板范围内正常工作。 我确信原因确实存在有效的迟滞、但为什么许多器件的端口和引脚分散在整个电路板上的任何位置?

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

    您好、Travis、

    它主要归结为成本并使接合线保持短路。 如果保持相邻状态、还可能存在其他限制、例如信号相互干扰。

    谢谢、

    王国新

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

    感谢您的回答。 最后一个问题:Energia 中是否提供字宽端口? 有人有示例吗?

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

    假设您已包含 MSP430.h 头文件、则应该能够直接使用 PAXXXX 寄存器。 请注意,您应避免在这些端口中使用 digitalRad()和 digitalWrite(),以及所有 analogWrite()以外的任何引脚。

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

    顺便说一下、电路板编号是多少? 这是 TI 电路板吗?

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

    好极了。 我没有意识到我可以从 Energia 中访问 MSP430.h 函数。 我在其代码中看到的唯一示例是 digitalWrite/digitalRead。 这使得查找代码变得容易得多。  、这是 MSP430FR5994。

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

    这是它自己的微控制器的编号。 电路板编号不同。 如果是 TI 构建的电路板、则会有所不同。 我敢打赌 、这是 MSP-EXP430FR5994。 该数字是否出现在您的电路板上?

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

    我明白了。 是的、您的假设是正确的。 它标有 MSP-EXP430FR5994