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.

[参考译文] MSP430FR2355:如果您不提及20位寄存器、CPU 和 MFM 特性等出色特性、为什么要构建一个微控制器?

Guru**** 2387060 points
Other Parts Discussed in Thread: MSP430FR2353, MSP430FR2355
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1509243/msp430fr2355-why-build-a-microcontroller-with-such-outstanding-features-as-20-bit-registers-and-a-cpu-and-mfm-features-if-you-don-t-mention-them

器件型号:MSP430FR2355
主题中讨论的其他部件:MSP430FR2353、、 MSP430WARE

工具/软件:

大家好、尊敬的 TI 团队:

MSP430FR2353 (2355)的描述不完整甚至不正确...:-

如果不仔细研究微控制器、您就会错过一些非常重要和重要的优势、  

特别是在测量技术中:

  • 始终提到16位寄存器、但它们都是20位寄存器!
  •  它是从16位/32位 MPY 写入的、尤其是使用20位寄存器时、
    可以执行非常高效且节省时间的直接20位运算。
  • 它是从16位 CPU 编写的、但它有许多20位指令、实际上是一个"X" CPU、
    遗憾的是、这些文件的记录非常糟糕、或者根本没有记录。
    只有一个"脚注"是指扩展的 XV2 CPU 或"X" CPU、您必须"挑选"这些功能。
  • 与数据表本身一样、MCFM 块和 ISORX/ISOTX 块均未描述;实际上所有寄存器和配置基准都缺失。
    您必须通过实验来解决所有问题。 尽管 ISORX/TX 模块尤其适合以极少的元件工作量设计/构建无线或网络电缆调制解调器。
  • 可以使用计时器将载波直接调制到 ISOTX 上、从而创建符合24 MHz 标准的发送器、而无需大量硬件工作

->我在多种应用中使用了 MFM 和 ISORX/TX 作为网络调制解调器、网络设备和射频发射器/接收器。 然而,由于这些特征的文件很差或根本不存在,我不得不花很多时间在实验中找出它们中的大多数,这是一种耻辱,或者你可以说"在猪前扔珍珠"。
如果这些特征被记录下来,或者至少被描述,这样社区就会对它们感兴趣,至少会对它们进行研究和记录。
即使是谷歌只知道这些特性的一部分,可以说是独特的微控制器称为 MSP430FR2355 ..

Mfg Pali

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

    尊敬的 Patrick:

    您提出了几个优点。  是的、与其他 MSP430甚至是竞争器件相比、MSP430FR2355系列具有一些优势、数据表和系列用户指南中未详细介绍这些优势。

    让我与我们的系统团队一起了解一下关于 MMM 和 ISORX/TX 的信息、看看文档为何如此有限。  我会说、任何修改都需要我们系统团队的时间和资源、这一过程可能需要一些时间。 您是否愿意查看修改后的内容并提供反馈?

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

    20位的实用性有限、除非 FRAM 多于低内存容量时除外。 器件上一样。 其他任何内容几乎取决于 C 编译器选择生成的代码、因此对大多数用户来说并不是什么大问题。 主要是因为 C 没有20位类型。 少数几个需要注意的人能够使用汇编语言。

    至于其他人、我在指南中找到了一个关于 MFM 的章节、但缺少细节。 似乎只要将 TXD 和 RXD 引脚设置为 FMM 模式就会启用 FMM 模块。 增益值。 我发现512位块限制有点奇数。 但我更熟悉遥测应用、因此也许这是针对其他应用。

    它提到了一个"信标",但这仍然是一个谜。 以及方框图中的组帧块的作用。

    ISO 对我来说是一个新的 ISO。 我发现的只是引脚 I/O 图中的一个提及、指出它合并了串行输出和计时器输出。

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

    你好 David Schultz /你好 Dennis Lehman

    感谢您的贡献。

    我专门使用汇编语言对 MSP430进行编程。

    这是因为"C"编译器并不真正支持扩展指令集。

    例如:

    如果您想交换​​一个字节的 LSB 和 HSB 中的4位半字节(这通常是需要的)、

    "C"编译器使用多个标准指令汇编此代码、并需要大约16至20个指令

    程序空间的字节。

    但扩展(XV2及更高版本)中有一个指令集可以一次性执行此操作、并且只需要3字节的程序代码。

    还有数十个其他示例表明、了解"扩展指令集"可以使许多计算比"C"编译器更高效。

    使用20位寄存器也非常有用、即使没有大量的程序存储器也是如此。
    尤其是在计算中、4位会对结果的准确性产生显著差异、或通过20位寄存器和扩展指令的组合加快一些计算。
    特别是像 XXXX.M 指令或[XXXX (.A)#n、Rdst ]这样调用重复函数[#n]的指令、可在计算中节省大量程序空间和时间。

    值得一提的是、这一特性。
    我目前正在对 BMS 控制器进行编程
    使用 RTOS、以便可以快速(实时)响应事件。

    为此,我使用了"ICC 模块",不幸的是,这也是非常糟糕的记录,你必须通过试验和错误找出很多事情。

    @Dennis Lehman

    感谢您提前完成此问题。
    如果有更多的文档可供使用、将会使我的工作更加轻松。
    我目前使用 ISORX 和 ISOTX 在 BMS 控制器电源线上的电池电芯之间交换数据。
    为此、我通过计时器在8 MHz 处调制 UART。
    这样、我只需两个电容器即可通过电源线在 BMS 模块之间交换调制信号。

    但即便如此、要有效地使用它还需要大量的实验。

    我很乐意查看评论、并就修改后的内容提供反馈。
    因为我知道整个 MSP430系列的内部和外部、所以从发布以来、我一直在使用这款 MSP430 (通常也是 XMS430)。
    我还有一些 EPROM 的原始版本、我当时使用过这些版本。
    因此、我认为我一定可以作出贡献、并就这些变化说很多。

    很多人不知道 SAC L-3可以很好地用作模拟分频单元。
    这显著降低了 CPU 和 MPY 单元的负载、因为与 CPU 相比、运算放大器可以在很短的时间内执行分频或乘法;-)
    它还在程序空间和处理时间方面节省了资源;-)

    就像第一台桌面计算器一样、他们没有真正的 CPU、但实际上是使用运算放大器进行计算、这就是他们的名字:-)!


    此致、Pali

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

    她是一个使用 extendet 指令集的示例代码


    --------------------------------------------------------------------------------------------
    ;          将 RxTxBuff+2 & RxTxBuff+4中的4个 ASCII 数字转换为一个十六进制值
    ;          在 RxTxBuff+2中存储值。 R8用于转换而不是保存!
    ;          示例:缓冲值字节:| 5| 4| 3| 2| 1| 0|(输入自键)
    ;                     字符串前面:| 4| 3| 2| 1| T| V|(VT1234)
    ;                            之前:|00|33|32|31|54|56|存储在 RxTxBuff 0~5
    ;                         BCD After:|00|00|01|23|54|56|  """"            
    ;                         十六进制后:|00|00|7B|54|56|  """"            
    --------------------------------------------------------------------------------------------            来自示例
    Get3位 mov.w  &RxTxBuff+2、R8         ;MSP 高字节至 R8 (2字节 ASCII 字)   R8->[32231]
               调用   #ASCII2BIN             ;转换前2位数字                         R8->[0012]
               rlam.w #4、R8                  ;上移第一个字节半字节以存储第二个 Nibble0 R8->[0120]
               Push.w R8                     ;将 R8保存到堆栈                          0 (SP)->[0120]->-。
               MOV.b  &RxTxBuff+4、R8         ;LSP Pusch 高字节(2字节 ASCII 字)   R8->[0033]  |
               呼叫   ## Test_Num              ;转换第3位数字                            R8->[0003]  |
               ADD.W  @SP+、R8                ;在                          R8->[0123]-<-'中添加 LSB 和 MSB
               MOV.w  R8、&BCD2BIN            ;将 R8中的 BCD 值转换为十六进制               R8->[0123]
               MOV.w  &BCD2BIN、R8            ;使用 RTC_B 转换器功能             R8->[007B]
               RET                           //从转换为呼叫者退出-»----------------------------------- |LPM3模式|                 


    请参阅扩展指令被 Higligted 到 Schift R8中的一个4位半字节。

    此指令仅使用2字节来执行且仅使用5个周期(n+1)!

    与无扩展命令相同、使用最少8个字节和最少8个周期。

    EG:"c"编译为:

                附加 R8、R8

                附加 R8、R8

                附加 R8、R8

                附加 R8、R8

    或较早的"C"编译器创建了一个循环、需要更多的字节和周期...

    这只是众多示例中的一个...

    问候 Pali

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

    GCC 使用 RLAM 指令即可:

    00004030 <.L4>:
          i <<= 4;
        4030:       5c 0e           rlam    #4,     r12     ;
    
    

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

    尊敬的 Patrick:

    哇、您已经使用 MSP430很长时间了!  是的、您的贡献会很好。

    好的、这可能需要一些时间。  我们来执行该操作。 我将保持这篇帖子开放给你和大卫,或任何其他谁想要讨论这个话题,只要需要,我会给你一个友谊请求,以便我们可以保持我们的对话"脱机".  明白了吗?

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

    尊敬的 Patrick:

    我在 MSP430ware 中找到了 FR2355的 ROM 头文件。  它显示了表内所有 ROM 函数的表和偏移量。

    您可以看到传递到变量类型的原型和返回类型。


    e2e.ti.com/.../rom_5F00_driverlib_5F00_fr235x.h