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.

[参考译文] MSP430F6779A:使用32位 SFR。

Guru**** 2392635 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1052992/msp430f6779a-working-with-32-bit-sfrs

器件型号:MSP430F6779A

我正在尝试确认从 SFR 复制的32位值的存储器寻址。  使用电表库、我可以看到以下对 SD24_B 转换器中32位数据的引用。  但是、这与我对该处理器的寻址序列的理解不符。  如果我读取 SD24BMEM0_32、它将是正确还是相反?

  int32Val = SD24BMEM0_32;

我搜索了支持论坛和数据表、无法解决此问题。

谢谢!

Dan

定义:

#define SD24BMEM0_32 SD24BMEMH0
#define SD24BMEM1_32 SD24BMEMH1

SFR:

SFR_16BIT (SD24BMEML0);             /* SD24B 通道0转换内存低字*/
SFR_8位(SD24BMEML0_L);             /* SD24B 通道0转换内存低字*/
SFR_8位(SD24BMEML0_H);             /* SD24B 通道0转换内存低字*/
SFR_16BIT (SD24BMEMH0);             /* SD24B 通道0转换内存高字*/
SFR_8位(SD24BMEMH0_L);             /* SD24B 通道0转换内存高字*/
SFR_8位(SD24BMEMH0_H);             /* SD24B 通道0转换内存高字*/
SFR_16BIT (SD24BMEML1);             /* SD24B 通道1转换内存低字*/
SFR_8位(SD24BMEML1_L);             /* SD24B 通道1转换内存低字*/
SFR_8位(SD24BMEML1_H);             /* SD24B 通道1转换内存低字*/
SFR_16BIT (SD24BMEMH1);             /* SD24B 通道1转换内存高字*/
SFR_8位(SD24BMEMH1_L);             /* SD24B 通道1转换内存高字*/
SFR_8位(SD24BMEMH1_H);             /* SD24B 通道1转换内存高字*/
 
存储器映射:
00000850 SD24BMEML0                          
00000851 SD24BMEML0_H                         
00000850 SD24BMEML0_L                         
00000852 SD24BMEMH0                          
00000853 SD24BMEMH0_H                         
00000852 SD24BMEMH0_L                         
00000854 SD24BMEML1                          
00000855 SD24BMEML1_H                         
00000854 SD24BMEML1_L                         
00000856 SD24BMEMH1                          
00000857 SD24BMEMH1_H                         
00000856 SD24BMEMH1_L         
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Dan、您好!

    MSP430的数据存储器和 SD24 ADC 外设均为16位宽。  这意味着 ADC 测量值存储在两个16位字之间。

    从存储器映射中可以看到、SD24BEMEL0 = SD24BMEML0_L @ 850保持 ADC 测量的低16位结果、SD24BEMEML0_H @ 851保持 ADC 测量的高16位结果。

    当分配给一个 Int32值(BTW 实际上是两个16位数据存储器位置)时、SD24BMEML0_L -> Int32 (低字)和 SD24BMEML0_H -> Int32 (高字)。  编译器会为您管理此操作。

    这是否能回答您的问题?

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

    谢谢 Dennis。  我找不到任何可确认 MSP430是大端字节序还是小端字节序的参考。  此外、您将8位和16位值混用(SD24BMEML0_L  是一个8位值)、这使我感到困惑。

    要进行确认、这应该能够正常工作:

      int32Val = SD24BMEM0_32;//涵盖850-853

    谢谢。

    Dan

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

    是的,很抱歉让人产生困惑;)